Repository: keplergl/kepler.gl
Branch: master
Commit: e37561295998
Files: 1370
Total size: 9.3 MB
Directory structure:
gitextract_dlltgrd3/
├── .dockerignore
├── .editorconfig
├── .eslintrc.js
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug-report--jupyter-widget.md
│ │ ├── bug_report.md
│ │ ├── feature-request--jupyter-widget.md
│ │ └── feature_request.md
│ ├── SECURITY.md
│ └── workflows/
│ ├── build-publish-pypi.yml
│ ├── npmpublish.yml
│ └── test.yml
├── .gitignore
├── .nvmrc
├── .prettierrc.js
├── .stylelintrc
├── .yarnrc.yml
├── CHANGELOG.md
├── FILE-HEADER
├── LICENSE
├── README.md
├── SUMMARY.md
├── TODO.md
├── UPGRADE-GUIDE.md
├── babel-register.js
├── babel.config.js
├── bindings/
│ ├── kepler.gl-jupyter/
│ │ ├── .gitignore
│ │ ├── Dockerfile
│ │ ├── MANIFEST.in
│ │ ├── README.md
│ │ ├── RELEASE.md
│ │ ├── js/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── babel.config.js
│ │ │ ├── lib/
│ │ │ │ ├── embed.js
│ │ │ │ ├── extension.js
│ │ │ │ ├── index.js
│ │ │ │ ├── keplergl/
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── app.js
│ │ │ │ │ │ ├── config-panel.js
│ │ │ │ │ │ ├── panel-header.js
│ │ │ │ │ │ ├── root.js
│ │ │ │ │ │ └── side-bar.js
│ │ │ │ │ ├── kepler.gl.js
│ │ │ │ │ ├── main.js
│ │ │ │ │ ├── store.js
│ │ │ │ │ └── utils.js
│ │ │ │ ├── keplergl-plugin.js
│ │ │ │ ├── labplugin.js
│ │ │ │ └── log.js
│ │ │ ├── package.json
│ │ │ ├── template/
│ │ │ │ └── keplergl-html.ejs
│ │ │ └── webpack/
│ │ │ ├── build-html.js
│ │ │ ├── build.js
│ │ │ ├── config.js
│ │ │ └── dev.js
│ │ ├── keplergl/
│ │ │ ├── __init__.py
│ │ │ ├── _version.py
│ │ │ └── keplergl.py
│ │ ├── keplergl-jupyter.json
│ │ ├── notebooks/
│ │ │ ├── DataFrame.ipynb
│ │ │ ├── GeoDataFrame.ipynb
│ │ │ ├── GeoJSON.ipynb
│ │ │ ├── Load kepler.gl.ipynb
│ │ │ ├── geojson-data.json
│ │ │ ├── hex-data.csv
│ │ │ ├── hex_config.py
│ │ │ └── sf_zip_geo.json
│ │ ├── pyproject.toml
│ │ ├── requirements.txt
│ │ ├── setup.cfg
│ │ └── setup.py
│ └── python/
│ ├── DEVELOPMENT.md
│ ├── README.md
│ ├── esbuild.config.mjs
│ ├── keplergl/
│ │ ├── __init__.py
│ │ ├── _version.py
│ │ ├── serializers.py
│ │ └── widget.py
│ ├── notebooks/
│ │ ├── DataFrame.ipynb
│ │ ├── GeoDataFrame.ipynb
│ │ ├── GeoJSON.ipynb
│ │ ├── Load kepler.gl.ipynb
│ │ ├── geojson-data.json
│ │ ├── hex-data.csv
│ │ ├── hex_config.py
│ │ └── sf_zip_geo.json
│ ├── package.json
│ ├── pyproject.toml
│ ├── src/
│ │ ├── components/
│ │ │ └── App.tsx
│ │ ├── index.ts
│ │ ├── process-shim.js
│ │ ├── store.ts
│ │ ├── styles.css
│ │ ├── types.ts
│ │ ├── utils/
│ │ │ ├── data.ts
│ │ │ └── serialization.ts
│ │ └── widget.ts
│ ├── tests/
│ │ ├── conftest.py
│ │ ├── test_serializers.py
│ │ └── test_widget.py
│ └── tsconfig.json
├── contributing/
│ ├── CODE_OF_CONDUCT.md
│ ├── DEVELOPERS.md
│ └── README.md
├── docs/
│ ├── README.md
│ ├── RFC/
│ │ └── table-class.md
│ ├── api-reference/
│ │ ├── README.md
│ │ ├── actions/
│ │ │ ├── README.md
│ │ │ └── actions.md
│ │ ├── advanced-usages/
│ │ │ ├── custom-initial-state.md
│ │ │ ├── custom-map-styles.md
│ │ │ ├── custom-mapbox-host.md
│ │ │ ├── forward-actions.md
│ │ │ ├── reducer-plugin.md
│ │ │ ├── replace-ui-component.md
│ │ │ ├── saving-loading-w-schema.md
│ │ │ └── using-updaters.md
│ │ ├── cloud-providers/
│ │ │ ├── README.md
│ │ │ └── cloud-provider.md
│ │ ├── components/
│ │ │ └── README.md
│ │ ├── custom-theme/
│ │ │ └── README.md
│ │ ├── ecosystem.md
│ │ ├── get-started.md
│ │ ├── localization/
│ │ │ └── README.md
│ │ ├── processors/
│ │ │ ├── README.md
│ │ │ └── processors.md
│ │ ├── reducers/
│ │ │ ├── README.md
│ │ │ ├── combine.md
│ │ │ ├── map-state.md
│ │ │ ├── map-style.md
│ │ │ ├── reducers.md
│ │ │ ├── ui-state.md
│ │ │ └── vis-state.md
│ │ └── schemas/
│ │ └── README.md
│ ├── keplergl-jupyter/
│ │ └── README.md
│ ├── release-notes.md
│ ├── spatial-analysis-tutorial/
│ │ ├── README.md
│ │ ├── basic-mapping.md
│ │ ├── get-started.md
│ │ ├── rate-mapping.md
│ │ ├── spatial-data-gis.md
│ │ └── spatial-data-wrangling.md
│ ├── table-of-contents.json
│ └── user-guides/
│ ├── README.md
│ ├── ai-assistant.md
│ ├── b-kepler-gl-workflow/
│ │ ├── README.md
│ │ ├── a-add-data-to-the-map.md
│ │ └── b-add-data-layers/
│ │ ├── a-adding-data-layers.md
│ │ ├── b-create-a-layer.md
│ │ ├── c-hide-edit-and-delete-layers.md
│ │ └── d-blend-and-rearrange-layers.md
│ ├── c-types-of-layers/
│ │ ├── README.md
│ │ ├── a-point.md
│ │ ├── b-arc.md
│ │ ├── c-line.md
│ │ ├── d-grid.md
│ │ ├── e-polygon.md
│ │ ├── f-cluster.md
│ │ ├── g-icon.md
│ │ ├── h-hexbin.md
│ │ ├── i-heatmap.md
│ │ ├── j-h3.md
│ │ ├── k-trip.md
│ │ ├── l-s2.md
│ │ ├── m-vector-tile-layer.md
│ │ ├── n-raster-tile-layer.md
│ │ ├── o-wms-layer.md
│ │ └── vector.md
│ ├── d-layer-attributes.md
│ ├── e-filters.md
│ ├── f-map-styles.md
│ ├── g-interactions.md
│ ├── h-playback.md
│ ├── i-FAQ.md
│ ├── j-get-started.md
│ ├── k-save-and-export.md
│ ├── l-color-attributes.md
│ ├── m-map-settings.md
│ └── sql-data-explorer.md
├── esbuild/
│ └── umd-esbuild.config.mjs
├── examples/
│ ├── README.md
│ ├── custom-map-style/
│ │ ├── .babelrc
│ │ ├── README.md
│ │ ├── esbuild.config.mjs
│ │ ├── index.html
│ │ ├── package.json
│ │ └── src/
│ │ ├── app.tsx
│ │ ├── main.tsx
│ │ └── store.ts
│ ├── custom-reducer/
│ │ ├── .babelrc
│ │ ├── README.md
│ │ ├── esbuild.config.mjs
│ │ ├── index.html
│ │ ├── package.json
│ │ └── src/
│ │ ├── app-reducer.js
│ │ ├── app.js
│ │ ├── configurations/
│ │ │ └── config.js
│ │ ├── data/
│ │ │ └── sample-data.js
│ │ ├── main.js
│ │ └── store.js
│ ├── custom-theme/
│ │ ├── .babelrc
│ │ ├── README.md
│ │ ├── esbuild.config.mjs
│ │ ├── index.html
│ │ ├── package.json
│ │ └── src/
│ │ ├── actions.js
│ │ ├── app.js
│ │ ├── main.js
│ │ ├── reducers/
│ │ │ └── index.js
│ │ └── store.js
│ ├── demo-app/
│ │ ├── .yarnrc.yml
│ │ ├── README.md
│ │ ├── esbuild.config.mjs
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── actions.js
│ │ │ ├── app.tsx
│ │ │ ├── cloud-providers/
│ │ │ │ ├── carto/
│ │ │ │ │ ├── carto-icon.js
│ │ │ │ │ └── carto-provider.js
│ │ │ │ ├── dropbox/
│ │ │ │ │ ├── dropbox-error-modal.js
│ │ │ │ │ ├── dropbox-icon.js
│ │ │ │ │ └── dropbox-provider.js
│ │ │ │ ├── foursquare/
│ │ │ │ │ ├── foursquare-icon.js
│ │ │ │ │ └── foursquare-provider.js
│ │ │ │ └── index.js
│ │ │ ├── components/
│ │ │ │ ├── announcement.js
│ │ │ │ ├── banner.js
│ │ │ │ ├── load-data-modal/
│ │ │ │ │ ├── load-remote-map.js
│ │ │ │ │ ├── sample-data-viewer.js
│ │ │ │ │ └── sample-maps-tab.js
│ │ │ │ └── map-control/
│ │ │ │ ├── map-control.js
│ │ │ │ └── sql-panel-control.tsx
│ │ │ ├── constants/
│ │ │ │ ├── default-settings.js
│ │ │ │ └── localization.js
│ │ │ ├── data/
│ │ │ │ ├── sample-animate-trip-data.js
│ │ │ │ ├── sample-geojson-config.js
│ │ │ │ ├── sample-geojson-points.js
│ │ │ │ ├── sample-gps-data.js
│ │ │ │ ├── sample-hex-id-csv.js
│ │ │ │ ├── sample-icon-csv.js
│ │ │ │ ├── sample-row-data.js
│ │ │ │ ├── sample-s2-data.js
│ │ │ │ ├── sample-small-geojson.js
│ │ │ │ └── sample-trip-data.js
│ │ │ ├── factories/
│ │ │ │ ├── load-data-modal.js
│ │ │ │ ├── map-control.js
│ │ │ │ └── panel-header.js
│ │ │ ├── main.js
│ │ │ ├── reducers/
│ │ │ │ └── index.js
│ │ │ ├── store.js
│ │ │ └── utils/
│ │ │ ├── routes.js
│ │ │ └── strings.js
│ │ └── yarn.lock
│ ├── get-started/
│ │ ├── .yarnrc.yml
│ │ ├── esbuild.config.mjs
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── app.tsx
│ │ │ └── index.html
│ │ └── tsconfig.json
│ ├── get-started-vite/
│ │ ├── README.md
│ │ ├── eslint.config.js
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── src/
│ │ │ └── main.tsx
│ │ ├── tsconfig.json
│ │ ├── tsconfig.node.json
│ │ └── vite.config.ts
│ ├── node-app/
│ │ ├── .babelrc
│ │ ├── README.md
│ │ ├── esbuild.config.mjs
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── server.js
│ │ └── src/
│ │ ├── app-reducer.js
│ │ ├── app.js
│ │ ├── main.js
│ │ └── store.js
│ ├── open-modal/
│ │ ├── .babelrc
│ │ ├── README.md
│ │ ├── esbuild.config.mjs
│ │ ├── index.html
│ │ ├── package.json
│ │ └── src/
│ │ ├── app-reducer.js
│ │ ├── app.js
│ │ ├── components/
│ │ │ ├── fresh-map.js
│ │ │ └── saved-map.js
│ │ ├── configurations/
│ │ │ └── config.js
│ │ ├── data/
│ │ │ └── sample-data.js
│ │ ├── main.js
│ │ └── store.js
│ ├── replace-component/
│ │ ├── .babelrc
│ │ ├── README.md
│ │ ├── esbuild.config.mjs
│ │ ├── index.html
│ │ ├── package.json
│ │ └── src/
│ │ ├── actions.js
│ │ ├── app-reducer.js
│ │ ├── app.js
│ │ ├── components/
│ │ │ ├── custom-map-popover.js
│ │ │ ├── custom-panel.js
│ │ │ ├── panel-header.js
│ │ │ ├── panel-toggle.js
│ │ │ └── side-bar.js
│ │ ├── data/
│ │ │ └── sample-data.js
│ │ ├── main.js
│ │ └── store.js
│ └── umd-client/
│ ├── README.md
│ └── index.html
├── jest.config.js
├── jest.setup.js
├── jsconfig.json
├── package.json
├── scripts/
│ ├── action-table-maker.js
│ ├── ast-helper.js
│ ├── documentation.js
│ ├── edit-version.js
│ ├── fix-dependencies.sh
│ ├── install-and-start.js
│ ├── license-header/
│ │ ├── README.md
│ │ ├── bin.mjs
│ │ └── license-fixer.mjs
│ ├── log.js
│ └── ts-smoosh/
│ ├── README.md
│ ├── bin.js
│ ├── smoosh.js
│ ├── test.js
│ └── tests/
│ ├── 01-functions/
│ │ ├── a.d.ts
│ │ ├── a.js
│ │ └── a.tsx
│ ├── 02-imports/
│ │ ├── b.d.ts
│ │ ├── c.js
│ │ └── c.tsx
│ └── 03-const/
│ ├── e.d.ts
│ ├── e.js
│ └── e.tsx
├── src/
│ ├── actions/
│ │ ├── babel.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── action-types.ts
│ │ │ ├── action-wrapper.ts
│ │ │ ├── actions.ts
│ │ │ ├── identity-actions.ts
│ │ │ ├── index.ts
│ │ │ ├── map-state-actions.ts
│ │ │ ├── map-style-actions.ts
│ │ │ ├── provider-actions.ts
│ │ │ ├── ui-state-actions.ts
│ │ │ └── vis-state-actions.ts
│ │ └── tsconfig.production.json
│ ├── ai-assistant/
│ │ ├── README.md
│ │ ├── babel.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── actions.ts
│ │ │ ├── components/
│ │ │ │ ├── ai-assistant-component.tsx
│ │ │ │ ├── ai-assistant-config.tsx
│ │ │ │ └── ai-assistant-manager.tsx
│ │ │ ├── config/
│ │ │ │ └── models.ts
│ │ │ ├── constants.ts
│ │ │ ├── icons/
│ │ │ │ ├── ai-star.tsx
│ │ │ │ └── api-key.tsx
│ │ │ ├── index.ts
│ │ │ ├── localization.ts
│ │ │ ├── map/
│ │ │ │ └── ai-assistant-control.tsx
│ │ │ ├── plugin.ts
│ │ │ ├── reducers/
│ │ │ │ └── index.ts
│ │ │ └── tools/
│ │ │ ├── echarts-tools.tsx
│ │ │ ├── geo-tools.tsx
│ │ │ ├── kepler-tools/
│ │ │ │ ├── basemap-tool.tsx
│ │ │ │ ├── boundary-tool.tsx
│ │ │ │ ├── index.ts
│ │ │ │ ├── layer-creation-tool.tsx
│ │ │ │ ├── layer-style-tool.tsx
│ │ │ │ ├── loaddata-tool.tsx
│ │ │ │ ├── save-data-tool.tsx
│ │ │ │ └── table-tool.tsx
│ │ │ ├── lisa-tool.tsx
│ │ │ ├── query-tool.tsx
│ │ │ ├── tools.tsx
│ │ │ └── utils.ts
│ │ └── tsconfig.production.json
│ ├── cloud-providers/
│ │ ├── babel.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── base.tsx
│ │ │ ├── index.ts
│ │ │ ├── provider.ts
│ │ │ └── upload.tsx
│ │ ├── tsconfig.production.json
│ │ └── webpack/
│ │ └── umd.js
│ ├── common-utils/
│ │ ├── babel.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── data-type.ts
│ │ │ ├── data.ts
│ │ │ ├── h3-utils.ts
│ │ │ ├── index.ts
│ │ │ ├── promise.ts
│ │ │ ├── string.ts
│ │ │ └── url.ts
│ │ └── tsconfig.production.json
│ ├── components/
│ │ ├── babel.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── bottom-widget.tsx
│ │ │ ├── common/
│ │ │ │ ├── action-panel.tsx
│ │ │ │ ├── animation-control/
│ │ │ │ │ ├── animation-control.tsx
│ │ │ │ │ ├── animation-controller.ts
│ │ │ │ │ ├── animation-speed-slider.tsx
│ │ │ │ │ ├── animation-window-control.tsx
│ │ │ │ │ ├── floating-time-display.tsx
│ │ │ │ │ ├── play-control.tsx
│ │ │ │ │ ├── playback-controls.tsx
│ │ │ │ │ ├── reset-control.tsx
│ │ │ │ │ ├── speed-control.tsx
│ │ │ │ │ └── window-action-control.tsx
│ │ │ │ ├── checkbox.tsx
│ │ │ │ ├── color-legend.tsx
│ │ │ │ ├── column-stats-chart.tsx
│ │ │ │ ├── data-table/
│ │ │ │ │ ├── button.tsx
│ │ │ │ │ ├── canvas.tsx
│ │ │ │ │ ├── cell-size.ts
│ │ │ │ │ ├── display-format.tsx
│ │ │ │ │ ├── grid.tsx
│ │ │ │ │ ├── header-cell.tsx
│ │ │ │ │ ├── index.tsx
│ │ │ │ │ └── option-dropdown.tsx
│ │ │ │ ├── dataset-label.tsx
│ │ │ │ ├── dnd-layer-items.ts
│ │ │ │ ├── error-boundary.tsx
│ │ │ │ ├── field-selector.tsx
│ │ │ │ ├── field-token.tsx
│ │ │ │ ├── file-uploader/
│ │ │ │ │ ├── file-drop.tsx
│ │ │ │ │ ├── file-upload-progress.tsx
│ │ │ │ │ ├── file-upload.tsx
│ │ │ │ │ └── upload-button.tsx
│ │ │ │ ├── flex-container.ts
│ │ │ │ ├── histogram-plot.tsx
│ │ │ │ ├── icon-button.tsx
│ │ │ │ ├── icons/
│ │ │ │ │ ├── add.tsx
│ │ │ │ │ ├── anchor_window.tsx
│ │ │ │ │ ├── arrow-down-alt.tsx
│ │ │ │ │ ├── arrow-down-full.tsx
│ │ │ │ │ ├── arrow-down-small.tsx
│ │ │ │ │ ├── arrow-down-solid.tsx
│ │ │ │ │ ├── arrow-down.tsx
│ │ │ │ │ ├── arrow-left.tsx
│ │ │ │ │ ├── arrow-right.tsx
│ │ │ │ │ ├── arrow-up-alt.tsx
│ │ │ │ │ ├── arrow-up-solid.tsx
│ │ │ │ │ ├── arrow-up.tsx
│ │ │ │ │ ├── base-map.tsx
│ │ │ │ │ ├── base.tsx
│ │ │ │ │ ├── bug.tsx
│ │ │ │ │ ├── calendar.tsx
│ │ │ │ │ ├── cancel.tsx
│ │ │ │ │ ├── checkmark.tsx
│ │ │ │ │ ├── clipboard.tsx
│ │ │ │ │ ├── clock.tsx
│ │ │ │ │ ├── close.tsx
│ │ │ │ │ ├── cloud.tsx
│ │ │ │ │ ├── code-alt.tsx
│ │ │ │ │ ├── copy.tsx
│ │ │ │ │ ├── crosshairs.tsx
│ │ │ │ │ ├── cube-3d.tsx
│ │ │ │ │ ├── cursor-click.tsx
│ │ │ │ │ ├── cursor-point.tsx
│ │ │ │ │ ├── data-table.tsx
│ │ │ │ │ ├── db.tsx
│ │ │ │ │ ├── delete.tsx
│ │ │ │ │ ├── docs.tsx
│ │ │ │ │ ├── docs2.tsx
│ │ │ │ │ ├── drag-n-drop.tsx
│ │ │ │ │ ├── draggable-dots.tsx
│ │ │ │ │ ├── draw-polygon.tsx
│ │ │ │ │ ├── edit.tsx
│ │ │ │ │ ├── effects/
│ │ │ │ │ │ ├── brightness-contrast.tsx
│ │ │ │ │ │ ├── color-halftone.tsx
│ │ │ │ │ │ ├── dot-screen.tsx
│ │ │ │ │ │ ├── edge-work.tsx
│ │ │ │ │ │ ├── hexagonal-pixelate.tsx
│ │ │ │ │ │ ├── hue-saturation.tsx
│ │ │ │ │ │ ├── ink.tsx
│ │ │ │ │ │ ├── light-and-shadow.tsx
│ │ │ │ │ │ ├── magic-wand.tsx
│ │ │ │ │ │ ├── magnify.tsx
│ │ │ │ │ │ ├── noise.tsx
│ │ │ │ │ │ ├── sepia.tsx
│ │ │ │ │ │ ├── tilt-shift.tsx
│ │ │ │ │ │ ├── triangle-blur.tsx
│ │ │ │ │ │ ├── vibrance.tsx
│ │ │ │ │ │ ├── vignette.tsx
│ │ │ │ │ │ └── zoom-blur.tsx
│ │ │ │ │ ├── email.tsx
│ │ │ │ │ ├── expand.tsx
│ │ │ │ │ ├── eye-seen.tsx
│ │ │ │ │ ├── eye-unseen.tsx
│ │ │ │ │ ├── file-type.tsx
│ │ │ │ │ ├── file.tsx
│ │ │ │ │ ├── files.tsx
│ │ │ │ │ ├── filter-funnel.tsx
│ │ │ │ │ ├── free-window.tsx
│ │ │ │ │ ├── gear.tsx
│ │ │ │ │ ├── globe.tsx
│ │ │ │ │ ├── hash.tsx
│ │ │ │ │ ├── help.tsx
│ │ │ │ │ ├── histogram.tsx
│ │ │ │ │ ├── horizontal-resize-handle.tsx
│ │ │ │ │ ├── index.tsx
│ │ │ │ │ ├── info.tsx
│ │ │ │ │ ├── layers.tsx
│ │ │ │ │ ├── left-arrow.tsx
│ │ │ │ │ ├── legend.tsx
│ │ │ │ │ ├── line-chart.tsx
│ │ │ │ │ ├── location-marker.tsx
│ │ │ │ │ ├── login.tsx
│ │ │ │ │ ├── logout.tsx
│ │ │ │ │ ├── map-icon.tsx
│ │ │ │ │ ├── map-pin.tsx
│ │ │ │ │ ├── messages.tsx
│ │ │ │ │ ├── minus.tsx
│ │ │ │ │ ├── moon.tsx
│ │ │ │ │ ├── order-by-dataset.tsx
│ │ │ │ │ ├── order-by-list.tsx
│ │ │ │ │ ├── pause.tsx
│ │ │ │ │ ├── picture.tsx
│ │ │ │ │ ├── pin.tsx
│ │ │ │ │ ├── play.tsx
│ │ │ │ │ ├── pointer-click.tsx
│ │ │ │ │ ├── polygon.tsx
│ │ │ │ │ ├── rectangle.tsx
│ │ │ │ │ ├── reduce.tsx
│ │ │ │ │ ├── reset.tsx
│ │ │ │ │ ├── save.tsx
│ │ │ │ │ ├── save2.tsx
│ │ │ │ │ ├── search.tsx
│ │ │ │ │ ├── settings.tsx
│ │ │ │ │ ├── share.tsx
│ │ │ │ │ ├── speed.tsx
│ │ │ │ │ ├── split.tsx
│ │ │ │ │ ├── square-select.tsx
│ │ │ │ │ ├── sun.tsx
│ │ │ │ │ ├── sunrise.tsx
│ │ │ │ │ ├── sunset.tsx
│ │ │ │ │ ├── timeline-marker.tsx
│ │ │ │ │ ├── trash.tsx
│ │ │ │ │ ├── vert-dots.tsx
│ │ │ │ │ ├── vert-three-dots.tsx
│ │ │ │ │ ├── warning-sign.tsx
│ │ │ │ │ ├── warning.tsx
│ │ │ │ │ ├── zoom-in.tsx
│ │ │ │ │ └── zoom-out.tsx
│ │ │ │ ├── image-preview.tsx
│ │ │ │ ├── index.ts
│ │ │ │ ├── info-helper.tsx
│ │ │ │ ├── item-selector/
│ │ │ │ │ ├── accessor.ts
│ │ │ │ │ ├── chickleted-input.tsx
│ │ │ │ │ ├── dropdown-list.tsx
│ │ │ │ │ ├── dropdown-select.tsx
│ │ │ │ │ ├── item-selector.tsx
│ │ │ │ │ └── typeahead.tsx
│ │ │ │ ├── line-chart.tsx
│ │ │ │ ├── link-renderer.tsx
│ │ │ │ ├── loading-spinner.tsx
│ │ │ │ ├── logo.tsx
│ │ │ │ ├── map-layer-selector.tsx
│ │ │ │ ├── modal.tsx
│ │ │ │ ├── portaled.tsx
│ │ │ │ ├── progress-bar.tsx
│ │ │ │ ├── radius-legend.tsx
│ │ │ │ ├── range-brush.tsx
│ │ │ │ ├── range-plot.tsx
│ │ │ │ ├── range-slider-timeline-panel.tsx
│ │ │ │ ├── range-slider-timeline.tsx
│ │ │ │ ├── range-slider.tsx
│ │ │ │ ├── slider/
│ │ │ │ │ ├── mouse-event.ts
│ │ │ │ │ ├── slider-bar-handle.tsx
│ │ │ │ │ ├── slider-handle.tsx
│ │ │ │ │ └── slider.tsx
│ │ │ │ ├── styled-components.tsx
│ │ │ │ ├── switch.tsx
│ │ │ │ ├── sync-timeline-control.tsx
│ │ │ │ ├── time-range-slider-time-title.tsx
│ │ │ │ ├── time-range-slider.tsx
│ │ │ │ ├── time-slider-marker.tsx
│ │ │ │ ├── timeline-slider.tsx
│ │ │ │ ├── tippy-tooltip.tsx
│ │ │ │ ├── toolbar-item.tsx
│ │ │ │ ├── toolbar.tsx
│ │ │ │ └── vertical-toolbar.tsx
│ │ │ ├── connect/
│ │ │ │ ├── keplergl-connect.ts
│ │ │ │ └── with-local-selector.tsx
│ │ │ ├── container.tsx
│ │ │ ├── context.tsx
│ │ │ ├── dnd-context.tsx
│ │ │ ├── editor/
│ │ │ │ ├── editor.tsx
│ │ │ │ └── feature-action-panel.tsx
│ │ │ ├── effects/
│ │ │ │ ├── compact-color-picker.tsx
│ │ │ │ ├── effect-configurator.tsx
│ │ │ │ ├── effect-list.tsx
│ │ │ │ ├── effect-manager.tsx
│ │ │ │ ├── effect-panel-header.tsx
│ │ │ │ ├── effect-panel.tsx
│ │ │ │ ├── effect-time-configurator.tsx
│ │ │ │ ├── effect-time-selector.tsx
│ │ │ │ ├── effect-time-slider.tsx
│ │ │ │ ├── effect-type-dropdown-list.tsx
│ │ │ │ ├── effect-type-list-item.tsx
│ │ │ │ ├── effect-type-selector.tsx
│ │ │ │ ├── side-panel-title.tsx
│ │ │ │ └── timezone-selector.tsx
│ │ │ ├── filter-animation-controller.tsx
│ │ │ ├── filters/
│ │ │ │ ├── components.ts
│ │ │ │ ├── filter-panels/
│ │ │ │ │ ├── filter-panel-with-field-select.tsx
│ │ │ │ │ ├── filter-synced-dataset-panel.tsx
│ │ │ │ │ ├── multi-select-filter-panel.tsx
│ │ │ │ │ ├── new-filter-panel.tsx
│ │ │ │ │ ├── polygon-filter-panel.tsx
│ │ │ │ │ ├── range-filter-panel.tsx
│ │ │ │ │ ├── single-select-filter-panel.tsx
│ │ │ │ │ ├── time-range-filter-panel.tsx
│ │ │ │ │ ├── time-synced-field-selector.tsx
│ │ │ │ │ └── types.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── multi-select-filter.tsx
│ │ │ │ ├── polygon-filter.tsx
│ │ │ │ ├── range-filter.tsx
│ │ │ │ ├── single-select-filter.tsx
│ │ │ │ ├── time-range-filter.tsx
│ │ │ │ ├── time-widget-top.tsx
│ │ │ │ ├── time-widget.tsx
│ │ │ │ └── types.ts
│ │ │ ├── geocoder/
│ │ │ │ └── geocoder.tsx
│ │ │ ├── geocoder-panel.tsx
│ │ │ ├── hooks/
│ │ │ │ ├── use-cloud-list-provider.tsx
│ │ │ │ ├── use-dnd-effects.tsx
│ │ │ │ ├── use-dnd-layers.tsx
│ │ │ │ ├── use-feature-flags.tsx
│ │ │ │ ├── use-fetch-raster-tile-metadata.ts
│ │ │ │ ├── use-fetch-vector-tile-metadata.ts
│ │ │ │ ├── use-legend-position.ts
│ │ │ │ └── use-on-click-outside.tsx
│ │ │ ├── index.ts
│ │ │ ├── injector.tsx
│ │ │ ├── kepler-gl.tsx
│ │ │ ├── layer-animation-controller.tsx
│ │ │ ├── loading-indicator.tsx
│ │ │ ├── map/
│ │ │ │ ├── coordinate-info.tsx
│ │ │ │ ├── effects/
│ │ │ │ │ └── effect-control.tsx
│ │ │ │ ├── layer-hover-info.tsx
│ │ │ │ ├── layer-selector-panel.tsx
│ │ │ │ ├── lazy-tippy.tsx
│ │ │ │ ├── locale-panel.tsx
│ │ │ │ ├── map-control-panel.tsx
│ │ │ │ ├── map-control-toolbar.tsx
│ │ │ │ ├── map-control-tooltip.tsx
│ │ │ │ ├── map-control.tsx
│ │ │ │ ├── map-draw-panel.tsx
│ │ │ │ ├── map-legend-panel.tsx
│ │ │ │ ├── map-legend.tsx
│ │ │ │ ├── map-popover-content.tsx
│ │ │ │ ├── map-popover.tsx
│ │ │ │ ├── split-map-button.tsx
│ │ │ │ └── toggle-3d-button.tsx
│ │ │ ├── map-container.tsx
│ │ │ ├── map-view-state-context.tsx
│ │ │ ├── maps-layout.tsx
│ │ │ ├── modal-container.tsx
│ │ │ ├── modals/
│ │ │ │ ├── add-map-style-modal.tsx
│ │ │ │ ├── cloud-components/
│ │ │ │ │ ├── cloud-header.tsx
│ │ │ │ │ ├── cloud-item.spec.tsx
│ │ │ │ │ ├── cloud-item.tsx
│ │ │ │ │ ├── cloud-maps.spec.tsx
│ │ │ │ │ ├── cloud-maps.tsx
│ │ │ │ │ ├── provider-loading.tsx
│ │ │ │ │ └── provider-select.tsx
│ │ │ │ ├── cloud-tile.tsx
│ │ │ │ ├── data-table-modal.tsx
│ │ │ │ ├── delete-data-modal.tsx
│ │ │ │ ├── error-display.tsx
│ │ │ │ ├── export-data-modal.tsx
│ │ │ │ ├── export-image-modal.tsx
│ │ │ │ ├── export-map-modal/
│ │ │ │ │ ├── components.tsx
│ │ │ │ │ ├── export-html-map.tsx
│ │ │ │ │ ├── export-json-map.tsx
│ │ │ │ │ └── export-map-modal.tsx
│ │ │ │ ├── image-modal-container.tsx
│ │ │ │ ├── load-data-modal.tsx
│ │ │ │ ├── load-storage-map.spec.tsx
│ │ │ │ ├── load-storage-map.tsx
│ │ │ │ ├── loading-dialog.tsx
│ │ │ │ ├── modal-dialog.tsx
│ │ │ │ ├── modal-tabs.tsx
│ │ │ │ ├── overwrite-map-modal.tsx
│ │ │ │ ├── save-map-modal.spec.tsx
│ │ │ │ ├── save-map-modal.tsx
│ │ │ │ ├── share-map-modal.spec.tsx
│ │ │ │ ├── share-map-modal.tsx
│ │ │ │ ├── status-panel.tsx
│ │ │ │ ├── storage-map-viewer.tsx
│ │ │ │ └── tilesets-modals/
│ │ │ │ ├── common.tsx
│ │ │ │ ├── load-data-footer.tsx
│ │ │ │ ├── load-tileset.tsx
│ │ │ │ ├── tileset-icon.tsx
│ │ │ │ ├── tileset-raster-form.tsx
│ │ │ │ ├── tileset-vector-form.tsx
│ │ │ │ └── tileset-wms-form.tsx
│ │ │ ├── notification-panel/
│ │ │ │ └── notification-item.tsx
│ │ │ ├── notification-panel.tsx
│ │ │ ├── plot-container.tsx
│ │ │ ├── side-panel/
│ │ │ │ ├── add-by-dataset-button.tsx
│ │ │ │ ├── cloud-storage-dropdown.tsx
│ │ │ │ ├── common/
│ │ │ │ │ ├── dataset-info.tsx
│ │ │ │ │ ├── dataset-tag.tsx
│ │ │ │ │ ├── dataset-title.tsx
│ │ │ │ │ ├── source-data-catalog.tsx
│ │ │ │ │ ├── source-data-selector-content.tsx
│ │ │ │ │ ├── source-data-selector.tsx
│ │ │ │ │ ├── source-selector.tsx
│ │ │ │ │ └── types.ts
│ │ │ │ ├── custom-panel.tsx
│ │ │ │ ├── filter-manager.tsx
│ │ │ │ ├── filter-panel/
│ │ │ │ │ ├── add-filter-button.tsx
│ │ │ │ │ ├── filter-panel-header.tsx
│ │ │ │ │ └── filter-panel.tsx
│ │ │ │ ├── interaction-manager.tsx
│ │ │ │ ├── interaction-panel/
│ │ │ │ │ ├── brush-config.tsx
│ │ │ │ │ ├── interaction-panel.tsx
│ │ │ │ │ ├── tooltip-config/
│ │ │ │ │ │ └── tooltip-chicklet.tsx
│ │ │ │ │ └── tooltip-config.tsx
│ │ │ │ ├── layer-manager.tsx
│ │ │ │ ├── layer-panel/
│ │ │ │ │ ├── add-layer-button.tsx
│ │ │ │ │ ├── aggr-scale-selector.tsx
│ │ │ │ │ ├── channel-by-value-selector.tsx
│ │ │ │ │ ├── color-breaks-panel.tsx
│ │ │ │ │ ├── color-palette-preset.tsx
│ │ │ │ │ ├── color-palette.tsx
│ │ │ │ │ ├── color-range-selector.tsx
│ │ │ │ │ ├── color-scale-selector.tsx
│ │ │ │ │ ├── color-selector.tsx
│ │ │ │ │ ├── column-selector.tsx
│ │ │ │ │ ├── custom-palette.tsx
│ │ │ │ │ ├── custom-picker.tsx
│ │ │ │ │ ├── dataset-layer-group.tsx
│ │ │ │ │ ├── dataset-layer-section.tsx
│ │ │ │ │ ├── dataset-section.tsx
│ │ │ │ │ ├── dimension-scale-selector.tsx
│ │ │ │ │ ├── how-to-button.tsx
│ │ │ │ │ ├── layer-color-selector.tsx
│ │ │ │ │ ├── layer-column-config.tsx
│ │ │ │ │ ├── layer-column-mode-config.tsx
│ │ │ │ │ ├── layer-config-group.tsx
│ │ │ │ │ ├── layer-configurator.tsx
│ │ │ │ │ ├── layer-error-message.tsx
│ │ │ │ │ ├── layer-list.tsx
│ │ │ │ │ ├── layer-panel-header.tsx
│ │ │ │ │ ├── layer-panel.tsx
│ │ │ │ │ ├── layer-type-dropdown-list.tsx
│ │ │ │ │ ├── layer-type-list-item.tsx
│ │ │ │ │ ├── layer-type-selector.tsx
│ │ │ │ │ ├── radius-by-zoom-input.tsx
│ │ │ │ │ ├── raster-tile-colormap-list-item.tsx
│ │ │ │ │ ├── raster-tile-layer-configurator.tsx
│ │ │ │ │ ├── single-color-palette.tsx
│ │ │ │ │ ├── text-label-panel.tsx
│ │ │ │ │ ├── vector-tile-layer-configurator.tsx
│ │ │ │ │ ├── vis-config-by-field-selector.tsx
│ │ │ │ │ ├── vis-config-slider.tsx
│ │ │ │ │ └── vis-config-switch.tsx
│ │ │ │ ├── map-manager.tsx
│ │ │ │ ├── map-style-panel/
│ │ │ │ │ ├── map-layer-group-color-picker.tsx
│ │ │ │ │ ├── map-layer-group-item.tsx
│ │ │ │ │ ├── map-layer-selector.tsx
│ │ │ │ │ └── map-style-selector.tsx
│ │ │ │ ├── panel-header-action.tsx
│ │ │ │ ├── panel-header.tsx
│ │ │ │ ├── panel-tab.tsx
│ │ │ │ ├── panel-title.tsx
│ │ │ │ ├── panel-toggle.tsx
│ │ │ │ ├── panel-view-list-toggle.tsx
│ │ │ │ └── side-bar.tsx
│ │ │ ├── side-panel.tsx
│ │ │ └── types.ts
│ │ └── tsconfig.production.json
│ ├── constants/
│ │ ├── babel.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── color-palettes.ts
│ │ │ ├── colors-by-theme.ts
│ │ │ ├── dataset.ts
│ │ │ ├── default-settings.ts
│ │ │ ├── index.ts
│ │ │ ├── keyevent.ts
│ │ │ ├── layers.ts
│ │ │ ├── plot.ts
│ │ │ ├── time.ts
│ │ │ ├── tooltip.ts
│ │ │ ├── user-feedbacks.ts
│ │ │ └── user-guides.ts
│ │ ├── tsconfig.production.json
│ │ └── webpack/
│ │ └── umd.js
│ ├── deckgl-arrow-layers/
│ │ ├── babel.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── constants.ts
│ │ │ ├── index.ts
│ │ │ ├── layers/
│ │ │ │ ├── geo-arrow-arc-layer.ts
│ │ │ │ ├── geo-arrow-scatterplot-layer.ts
│ │ │ │ └── geo-arrow-text-layer.ts
│ │ │ ├── types.ts
│ │ │ └── utils/
│ │ │ ├── picking.ts
│ │ │ ├── utils.ts
│ │ │ └── validate.ts
│ │ ├── tsconfig.production.json
│ │ └── webpack/
│ │ └── umd.js
│ ├── deckgl-layers/
│ │ ├── babel.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── 3d-building-layer/
│ │ │ │ ├── 3d-building-layer.ts
│ │ │ │ ├── 3d-building-utils.ts
│ │ │ │ └── types.ts
│ │ │ ├── cluster-layer/
│ │ │ │ └── cluster-layer.ts
│ │ │ ├── column-layer/
│ │ │ │ └── enhanced-column-layer.ts
│ │ │ ├── deckgl-extensions/
│ │ │ │ ├── filter-arrow-layer.ts
│ │ │ │ └── filter-shader-module.ts
│ │ │ ├── grid-layer/
│ │ │ │ └── enhanced-cpu-grid-layer.ts
│ │ │ ├── hexagon-layer/
│ │ │ │ └── enhanced-hexagon-layer.ts
│ │ │ ├── index.ts
│ │ │ ├── layer-utils/
│ │ │ │ ├── cluster-utils.ts
│ │ │ │ ├── cpu-aggregator.ts
│ │ │ │ └── shader-utils.ts
│ │ │ ├── line-layer/
│ │ │ │ └── line-layer.ts
│ │ │ ├── raster/
│ │ │ │ ├── images.ts
│ │ │ │ ├── raster-layer/
│ │ │ │ │ ├── raster-layer-webgl1.fs.ts
│ │ │ │ │ ├── raster-layer-webgl1.vs.ts
│ │ │ │ │ ├── raster-layer-webgl2.fs.ts
│ │ │ │ │ ├── raster-layer-webgl2.vs.ts
│ │ │ │ │ └── raster-layer.ts
│ │ │ │ ├── raster-mesh-layer/
│ │ │ │ │ ├── matrix.ts
│ │ │ │ │ ├── raster-mesh-layer-webgl1.fs.ts
│ │ │ │ │ ├── raster-mesh-layer-webgl1.vs.ts
│ │ │ │ │ ├── raster-mesh-layer-webgl2.fs.ts
│ │ │ │ │ ├── raster-mesh-layer-webgl2.vs.ts
│ │ │ │ │ └── raster-mesh-layer.ts
│ │ │ │ ├── types.ts
│ │ │ │ ├── util.ts
│ │ │ │ └── webgl/
│ │ │ │ ├── color/
│ │ │ │ │ ├── colormap.ts
│ │ │ │ │ ├── filter.ts
│ │ │ │ │ ├── gamma-contrast.ts
│ │ │ │ │ ├── linear-rescale.ts
│ │ │ │ │ ├── saturation.ts
│ │ │ │ │ └── sigmoidal-contrast.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── pansharpen/
│ │ │ │ │ └── pansharpen-brovey.ts
│ │ │ │ ├── spectral-indices/
│ │ │ │ │ ├── evi.ts
│ │ │ │ │ ├── msavi.ts
│ │ │ │ │ ├── normalized-difference.ts
│ │ │ │ │ └── savi.ts
│ │ │ │ ├── texture/
│ │ │ │ │ ├── combine-bands.ts
│ │ │ │ │ ├── mask.ts
│ │ │ │ │ ├── reorder-bands.ts
│ │ │ │ │ └── rgba-image.ts
│ │ │ │ └── types.ts
│ │ │ ├── svg-icon-layer/
│ │ │ │ ├── scatterplot-icon-layer.ts
│ │ │ │ └── svg-icon-layer.ts
│ │ │ ├── typedefs/
│ │ │ │ └── deckgl.d.ts
│ │ │ └── wms/
│ │ │ └── wms-layer.ts
│ │ ├── tsconfig.production.json
│ │ └── webpack/
│ │ └── umd.js
│ ├── duckdb/
│ │ ├── babel.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── adapters/
│ │ │ │ └── duckdb-wasm-adapter.ts
│ │ │ ├── components/
│ │ │ │ ├── index.tsx
│ │ │ │ ├── monaco-editor.tsx
│ │ │ │ ├── preview-data-panel.tsx
│ │ │ │ ├── schema-panel.tsx
│ │ │ │ ├── sql-panel.tsx
│ │ │ │ └── tree.tsx
│ │ │ ├── index.ts
│ │ │ ├── plugin.ts
│ │ │ ├── processors/
│ │ │ │ └── data-processor.ts
│ │ │ ├── table/
│ │ │ │ ├── duckdb-table-utils.ts
│ │ │ │ ├── duckdb-table.ts
│ │ │ │ └── index.ts
│ │ │ └── utils/
│ │ │ └── perf.ts
│ │ └── tsconfig.production.json
│ ├── effects/
│ │ ├── babel.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── custom-deck-lighting-effect.ts
│ │ │ ├── effect.ts
│ │ │ ├── index.ts
│ │ │ ├── lighting-effect.ts
│ │ │ ├── post-processing-effect.ts
│ │ │ └── utils.ts
│ │ ├── tsconfig.production.json
│ │ └── webpack/
│ │ └── umd.js
│ ├── index.d.ts
│ ├── index.js
│ ├── layers/
│ │ ├── babel.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── aggregation-layer.ts
│ │ │ ├── arc-layer/
│ │ │ │ ├── arc-layer-icon.tsx
│ │ │ │ └── arc-layer.ts
│ │ │ ├── base-layer.ts
│ │ │ ├── base.tsx
│ │ │ ├── cluster-layer/
│ │ │ │ ├── cluster-layer-icon.tsx
│ │ │ │ └── cluster-layer.ts
│ │ │ ├── default-layer-icon.tsx
│ │ │ ├── editor-layer/
│ │ │ │ ├── constants.ts
│ │ │ │ ├── editor-layer-utils.ts
│ │ │ │ ├── editor-layer.ts
│ │ │ │ ├── feature-styles.ts
│ │ │ │ └── modify-mode-extended.ts
│ │ │ ├── example-table.tsx
│ │ │ ├── geojson-layer/
│ │ │ │ ├── geojson-info-modal.tsx
│ │ │ │ ├── geojson-layer-icon.tsx
│ │ │ │ ├── geojson-layer.ts
│ │ │ │ └── geojson-utils.ts
│ │ │ ├── grid-layer/
│ │ │ │ ├── grid-layer-icon.tsx
│ │ │ │ ├── grid-layer.ts
│ │ │ │ └── grid-utils.ts
│ │ │ ├── h3-hexagon-layer/
│ │ │ │ ├── h3-hexagon-layer-icon.tsx
│ │ │ │ ├── h3-hexagon-layer.ts
│ │ │ │ └── index.ts
│ │ │ ├── heatmap-layer/
│ │ │ │ ├── heatmap-layer-icon.tsx
│ │ │ │ └── heatmap-layer.ts
│ │ │ ├── hexagon-layer/
│ │ │ │ ├── hexagon-layer-icon.tsx
│ │ │ │ ├── hexagon-layer.ts
│ │ │ │ └── hexagon-utils.ts
│ │ │ ├── icon-layer/
│ │ │ │ ├── icon-info-modal.tsx
│ │ │ │ ├── icon-layer-icon.tsx
│ │ │ │ └── icon-layer.ts
│ │ │ ├── index.ts
│ │ │ ├── layer-text-label.ts
│ │ │ ├── layer-update.ts
│ │ │ ├── layer-utils.ts
│ │ │ ├── line-layer/
│ │ │ │ ├── line-layer-icon.tsx
│ │ │ │ └── line-layer.ts
│ │ │ ├── mapbox-utils.ts
│ │ │ ├── mapboxgl-layer.ts
│ │ │ ├── point-layer/
│ │ │ │ ├── point-layer-icon.tsx
│ │ │ │ └── point-layer.ts
│ │ │ ├── raster-tile/
│ │ │ │ ├── config.ts
│ │ │ │ ├── gpu-utils.ts
│ │ │ │ ├── image.ts
│ │ │ │ ├── raster-tile-icon.tsx
│ │ │ │ ├── raster-tile-layer-schema.ts
│ │ │ │ ├── raster-tile-layer.ts
│ │ │ │ ├── raster-tile-utils.ts
│ │ │ │ ├── request-throttle.ts
│ │ │ │ ├── types.ts
│ │ │ │ └── url.ts
│ │ │ ├── s2-geometry-layer/
│ │ │ │ ├── s2-geometry-layer.ts
│ │ │ │ ├── s2-layer-icon.tsx
│ │ │ │ └── s2-utils.ts
│ │ │ ├── scenegraph-layer/
│ │ │ │ ├── scenegraph-info-modal.tsx
│ │ │ │ ├── scenegraph-layer-icon.tsx
│ │ │ │ └── scenegraph-layer.ts
│ │ │ ├── table.tsx
│ │ │ ├── trip-layer/
│ │ │ │ ├── trip-info-modal.tsx
│ │ │ │ ├── trip-layer-icon.tsx
│ │ │ │ ├── trip-layer.ts
│ │ │ │ └── trip-utils.ts
│ │ │ ├── typedefs/
│ │ │ │ └── deckgl.d.ts
│ │ │ ├── vector-tile/
│ │ │ │ ├── abstract-tile-layer.ts
│ │ │ │ ├── common-tile/
│ │ │ │ │ ├── iterable-tile-set.ts
│ │ │ │ │ ├── tile-dataset.ts
│ │ │ │ │ └── tile-utils.ts
│ │ │ │ ├── loading-counter.ts
│ │ │ │ ├── mvt-layer.ts
│ │ │ │ ├── vector-tile-icon.tsx
│ │ │ │ └── vector-tile-layer.ts
│ │ │ └── wms-layer/
│ │ │ ├── wms-layer-icon.tsx
│ │ │ └── wms-layer.ts
│ │ └── tsconfig.production.json
│ ├── localization/
│ │ ├── TRANSLATION_GUIDE.md
│ │ ├── babel.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── formatted-message.tsx
│ │ │ ├── index.ts
│ │ │ ├── locales.ts
│ │ │ ├── messages.ts
│ │ │ └── translations/
│ │ │ ├── ca.ts
│ │ │ ├── cn.ts
│ │ │ ├── en.ts
│ │ │ ├── es.ts
│ │ │ ├── fi.ts
│ │ │ ├── ja.ts
│ │ │ ├── pt.ts
│ │ │ └── ru.ts
│ │ ├── tsconfig.production.json
│ │ └── webpack/
│ │ └── umd.js
│ ├── processors/
│ │ ├── babel.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── data-processor.ts
│ │ │ ├── file-handler.ts
│ │ │ ├── index.ts
│ │ │ ├── typedefs/
│ │ │ │ └── deckgl.d.ts
│ │ │ └── types.ts
│ │ ├── tsconfig.production.json
│ │ └── webpack/
│ │ └── umd.js
│ ├── reducers/
│ │ ├── UPGRADE-data-container.md
│ │ ├── babel.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── combined-updaters.ts
│ │ │ ├── composer-helpers.ts
│ │ │ ├── composers.ts
│ │ │ ├── core.ts
│ │ │ ├── data-utils.ts
│ │ │ ├── export-utils.ts
│ │ │ ├── index.ts
│ │ │ ├── interaction-utils.ts
│ │ │ ├── layer-utils.ts
│ │ │ ├── map-state-updaters.ts
│ │ │ ├── map-state.ts
│ │ │ ├── map-style-updaters.ts
│ │ │ ├── map-style.ts
│ │ │ ├── merger-handler.ts
│ │ │ ├── middleware.ts
│ │ │ ├── provider-state-updaters.ts
│ │ │ ├── provider-state.ts
│ │ │ ├── root.ts
│ │ │ ├── ui-state-updaters.ts
│ │ │ ├── ui-state.ts
│ │ │ ├── vis-state-merger.ts
│ │ │ ├── vis-state-selectors.ts
│ │ │ ├── vis-state-updaters.ts
│ │ │ └── vis-state.ts
│ │ └── tsconfig.production.json
│ ├── schemas/
│ │ ├── babel.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── dataset-schema.ts
│ │ │ ├── index.ts
│ │ │ ├── map-state-schema.ts
│ │ │ ├── map-style-schema.ts
│ │ │ ├── schema-manager.ts
│ │ │ ├── schema-utils.ts
│ │ │ ├── schema.ts
│ │ │ ├── ui-state-schema.ts
│ │ │ ├── versions.ts
│ │ │ └── vis-state-schema.ts
│ │ ├── tsconfig.production.json
│ │ └── webpack/
│ │ └── umd.js
│ ├── styles/
│ │ ├── babel.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── base.ts
│ │ │ ├── index.ts
│ │ │ └── media-breakpoints.ts
│ │ ├── tsconfig.production.json
│ │ └── webpack/
│ │ └── umd.js
│ ├── table/
│ │ ├── UPGRADE-data-container.md
│ │ ├── babel.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── dataset-utils.ts
│ │ │ ├── gpu-filter-utils.ts
│ │ │ ├── index.ts
│ │ │ ├── kepler-table.ts
│ │ │ └── tileset/
│ │ │ ├── raster-tile-utils.ts
│ │ │ ├── tileset-utils.ts
│ │ │ ├── vector-tile-utils.spec.ts
│ │ │ └── vector-tile-utils.ts
│ │ └── tsconfig.production.json
│ ├── tasks/
│ │ ├── babel.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ └── index.ts
│ │ └── tsconfig.production.json
│ ├── types/
│ │ ├── actions.d.ts
│ │ ├── components.d.ts
│ │ ├── datasets.d.ts
│ │ ├── effects.d.ts
│ │ ├── index.d.ts
│ │ ├── layers.d.ts
│ │ ├── package.json
│ │ ├── reducers.d.ts
│ │ ├── schemas.d.ts
│ │ ├── stac.d.ts
│ │ └── types.d.ts
│ └── utils/
│ ├── babel.config.js
│ ├── map-utils.spec.js
│ ├── package.json
│ ├── src/
│ │ ├── aggregation.ts
│ │ ├── application-config-types.ts
│ │ ├── application-config.ts
│ │ ├── arrow-data-container.ts
│ │ ├── browser-utils.ts
│ │ ├── color-utils.ts
│ │ ├── data-container-interface.ts
│ │ ├── data-container-utils.ts
│ │ ├── data-row.ts
│ │ ├── data-scale-utils.ts
│ │ ├── data-utils.ts
│ │ ├── dataset-utils.ts
│ │ ├── dom-to-image.ts
│ │ ├── dom-utils.ts
│ │ ├── effect-utils.ts
│ │ ├── export-map-html.ts
│ │ ├── export-utils.ts
│ │ ├── filter-utils.ts
│ │ ├── format.ts
│ │ ├── gl-utils.ts
│ │ ├── index.ts
│ │ ├── indexed-data-container.ts
│ │ ├── locale-utils.ts
│ │ ├── map-info-utils.ts
│ │ ├── map-style-utils/
│ │ │ ├── mapbox-gl-style-editor.ts
│ │ │ └── mapbox-utils.ts
│ │ ├── map-utils.ts
│ │ ├── mapbox-utils.ts
│ │ ├── noop.ts
│ │ ├── notifications-utils.ts
│ │ ├── observe-dimensions.ts
│ │ ├── plot.ts
│ │ ├── position-utils.ts
│ │ ├── projection-utils.ts
│ │ ├── quick-insertion-sort.ts
│ │ ├── row-data-container.ts
│ │ ├── searcher-utils.ts
│ │ ├── split-map-utils.ts
│ │ ├── strings.ts
│ │ ├── time.ts
│ │ ├── types.ts
│ │ └── utils.ts
│ └── tsconfig.production.json
├── test/
│ ├── browser/
│ │ ├── components/
│ │ │ ├── bottom-widget-test.js
│ │ │ ├── common/
│ │ │ │ ├── animation-control-test.js
│ │ │ │ ├── color-legend-test.js
│ │ │ │ ├── column-stats-chart-test.js
│ │ │ │ ├── file-uploader-test.js
│ │ │ │ ├── index.js
│ │ │ │ ├── item-selector-test.js
│ │ │ │ ├── range-plot-test.js
│ │ │ │ └── range-slider-test.js
│ │ │ ├── container-test.js
│ │ │ ├── editor/
│ │ │ │ ├── feature-action-panel-test.js
│ │ │ │ └── index.js
│ │ │ ├── effects/
│ │ │ │ ├── effect-configurator-test.js
│ │ │ │ ├── effect-manager-test.js
│ │ │ │ ├── effect-time-configurator-test.js
│ │ │ │ └── index.js
│ │ │ ├── filters/
│ │ │ │ ├── index.js
│ │ │ │ └── time-widget-test.js
│ │ │ ├── geocoder-panel-test.js
│ │ │ ├── helpers.js
│ │ │ ├── hooks/
│ │ │ │ ├── use-dnd-effects.spec.js
│ │ │ │ ├── use-dnd-layers.spec.js
│ │ │ │ └── use-legend-position.spec.js
│ │ │ ├── index.js
│ │ │ ├── injector-test.js
│ │ │ ├── kepler-gl-test.js
│ │ │ ├── map/
│ │ │ │ ├── index.js
│ │ │ │ ├── map-control-test.js
│ │ │ │ ├── map-legend-test.js
│ │ │ │ └── map-popover-test.js
│ │ │ ├── map-container-test.js
│ │ │ ├── modals/
│ │ │ │ ├── data-table-modal-test.js
│ │ │ │ ├── export-image-modal-test.js
│ │ │ │ ├── index.js
│ │ │ │ └── load-data-modal-test.js
│ │ │ ├── notifications/
│ │ │ │ ├── index.js
│ │ │ │ ├── notification-item.spec.js
│ │ │ │ └── notification-panel-test.js
│ │ │ ├── plot-container-test.js
│ │ │ ├── side-panel/
│ │ │ │ ├── channel-by-value-selctor-test.js
│ │ │ │ ├── color-selector-test.js
│ │ │ │ ├── filter-manager-test.js
│ │ │ │ ├── index.js
│ │ │ │ ├── layer-configurator-test.js
│ │ │ │ ├── layer-list.spec.js
│ │ │ │ ├── layer-manager-test.js
│ │ │ │ ├── layer-panel-header-test.js
│ │ │ │ ├── save-export-dropdown-test.js
│ │ │ │ └── side-panel-test.js
│ │ │ └── tooltip-config-test.js
│ │ ├── file-handler-test.js
│ │ ├── index.js
│ │ ├── layer-tests/
│ │ │ ├── arc-layer-specs.js
│ │ │ ├── base-layer-specs.js
│ │ │ ├── cluster-layer-specs.js
│ │ │ ├── geojson-layer-specs.js
│ │ │ ├── grid-layer-specs.js
│ │ │ ├── h3-hexagon-layer-specs.js
│ │ │ ├── heatmap-layer-specs.js
│ │ │ ├── hexagon-layer-specs.js
│ │ │ ├── icon-layer-specs.js
│ │ │ ├── index.js
│ │ │ ├── line-layer-specs.js
│ │ │ ├── point-layer-specs.js
│ │ │ ├── raster-tile-layer-specs.js
│ │ │ ├── s2-geometry-layer-specs.js
│ │ │ ├── scenegraph-layer-specs.js
│ │ │ ├── trip-layer-specs.js
│ │ │ └── wms-layer-specs.js
│ │ └── reducers/
│ │ └── index.js
│ ├── browser-debug.js
│ ├── browser-drive.js
│ ├── browser-headless/
│ │ ├── component/
│ │ │ └── map-container-test.js
│ │ └── index.js
│ ├── browser-headless.js
│ ├── fixtures/
│ │ ├── config_v0_arc_cluster_point.js
│ │ ├── config_v0_geojson_point.js
│ │ ├── config_v0_geojson_poly_fill_ele.js
│ │ ├── config_v0_geojson_polygon.js
│ │ ├── geojson-style.js
│ │ ├── geojson.js
│ │ ├── points-with-polygon-filter-map.js
│ │ ├── polygon-filter-map.js
│ │ ├── polygon.js
│ │ ├── row-object.js
│ │ ├── s2-geometry.js
│ │ ├── state-saved-v0.js
│ │ ├── state-saved-v1-1.js
│ │ ├── state-saved-v1-2.js
│ │ ├── state-saved-v1-3.js
│ │ ├── state-saved-v1-4.js
│ │ ├── state-saved-v1-5.js
│ │ ├── state-saved-v1-6.js
│ │ ├── state-saved-v1-7.js
│ │ ├── synced-filter-with-trip-layer.js
│ │ ├── test-arc-data.js
│ │ ├── test-csv-data.js
│ │ ├── test-csv-object.js
│ │ ├── test-hex-id-data.js
│ │ ├── test-layer-data.js
│ │ ├── test-trip-csv-data.js
│ │ ├── test-trip-data.js
│ │ ├── tile-metadata.ts
│ │ └── trip-geojson.js
│ ├── helpers/
│ │ ├── comparison-utils.js
│ │ ├── component-jest-utils.js
│ │ ├── component-utils.js
│ │ ├── layer-utils.js
│ │ ├── mock-map-styles.js
│ │ ├── mock-provider.js
│ │ ├── mock-state-utils.js
│ │ ├── mock-state.js
│ │ ├── raw-states.js
│ │ ├── table-utils.js
│ │ └── utils.js
│ ├── js-dom.js
│ ├── node/
│ │ ├── index.js
│ │ ├── processors/
│ │ │ ├── file-handler-fixtures.js
│ │ │ ├── file-handler-test.js
│ │ │ └── index.js
│ │ ├── reducers/
│ │ │ ├── composer-state-test.js
│ │ │ ├── index.js
│ │ │ ├── map-state-test.js
│ │ │ ├── map-style-test.js
│ │ │ ├── provider-state-test.js
│ │ │ ├── root-test.js
│ │ │ ├── ui-state-test.js
│ │ │ ├── vis-state-merger-combine-configs-test.spec.js
│ │ │ ├── vis-state-merger-test.js
│ │ │ └── vis-state-test.js
│ │ ├── schemas/
│ │ │ ├── dataset-schema-test.js
│ │ │ ├── index.js
│ │ │ ├── map-state-schema-test.js
│ │ │ ├── map-style-schema-test.js
│ │ │ ├── schema-conversion-test.js
│ │ │ └── vis-state-schema-test.js
│ │ └── utils/
│ │ ├── aggregation-test.js
│ │ ├── color-util-test.js
│ │ ├── composer-helpers-test.js
│ │ ├── data-container-test.js
│ │ ├── data-processor-test.js
│ │ ├── data-scale-utils-test.js
│ │ ├── data-utils-test.js
│ │ ├── dataset-utils-test.js
│ │ ├── dom-to-image.js
│ │ ├── duckdb-utils-test.js
│ │ ├── editor-utils-test.js
│ │ ├── effect-utils-test.js
│ │ ├── export-utils-test.js
│ │ ├── filter-utils-test.js
│ │ ├── gpu-filter-utils-test.js
│ │ ├── index.js
│ │ ├── interaction-utils-test.js
│ │ ├── kepler-gl-utils-test.js
│ │ ├── kepler-table-test.js
│ │ ├── kepler-table-utils-test.js
│ │ ├── layer-utils-test.js
│ │ ├── map-info-utils-test.js
│ │ ├── mapbox-gl-style-editor-test.js
│ │ ├── mapbox-utils-test.js
│ │ ├── notifications-utils-test.js
│ │ ├── plot-test.js
│ │ ├── s2-utils-test.js
│ │ ├── timeline-test.js
│ │ └── util-test.js
│ ├── node.js
│ ├── setup-browser-env.js
│ └── webpack.config.js
├── tsconfig.json
├── tsconfig.production.json
├── webpack/
│ ├── build_types.js
│ ├── bundle.js
│ ├── shared-webpack-configuration.js
│ └── umd.js
├── website/
│ ├── .babelrc
│ ├── .yarnrc.yml
│ ├── README.md
│ ├── esbuild.config.mjs
│ ├── package.json
│ ├── src/
│ │ ├── README.md
│ │ ├── components/
│ │ │ ├── app.js
│ │ │ ├── common/
│ │ │ │ ├── card.js
│ │ │ │ ├── carousel.js
│ │ │ │ ├── section.js
│ │ │ │ ├── slideshow.js
│ │ │ │ ├── staggered-scroll-animation.js
│ │ │ │ ├── styled-components.js
│ │ │ │ ├── styles.js
│ │ │ │ └── swipeable.js
│ │ │ ├── desktop.js
│ │ │ ├── ecosystems.js
│ │ │ ├── examples.js
│ │ │ ├── features.js
│ │ │ ├── footer.js
│ │ │ ├── foursquare-logo.js
│ │ │ ├── header.js
│ │ │ ├── hero.js
│ │ │ ├── home.js
│ │ │ ├── mapbox-logo.js
│ │ │ ├── netlify-logo.js
│ │ │ ├── policy.js
│ │ │ ├── showcase.js
│ │ │ ├── studio.js
│ │ │ ├── tutorials.js
│ │ │ └── walkthrough.js
│ │ ├── constants.js
│ │ ├── content.js
│ │ ├── main.js
│ │ ├── reducers/
│ │ │ ├── analytics.js
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── routes.js
│ │ ├── static/
│ │ │ ├── _redirects
│ │ │ └── index.html
│ │ ├── styles.js
│ │ └── utils.js
│ └── webpack.config.js
└── website-gatsby/
├── .eslintignore
├── .gitignore
├── gatsby-browser.js
├── gatsby-config.js
├── gatsby-node.js
├── gatsby-ssr.js
├── package.json
├── src/
│ ├── components/
│ │ ├── app.js
│ │ ├── common/
│ │ │ ├── card.js
│ │ │ ├── carousel.js
│ │ │ ├── section.js
│ │ │ ├── slideshow.js
│ │ │ ├── staggered-scroll-animation.js
│ │ │ ├── styled-components.js
│ │ │ ├── styles.js
│ │ │ └── swipeable.js
│ │ ├── examples.js
│ │ ├── features.js
│ │ ├── footer.js
│ │ ├── header.js
│ │ ├── hero.js
│ │ ├── home.js
│ │ ├── info-panel.jsx
│ │ ├── mapbox-logo.js
│ │ ├── policy.js
│ │ ├── showcase.js
│ │ ├── tutorials.js
│ │ └── walkthrough.js
│ ├── constants.js
│ ├── content.js
│ ├── state/
│ │ ├── analytics.js
│ │ ├── app.js
│ │ ├── index.js
│ │ ├── redux-wrapper.js
│ │ └── test.js
│ ├── styles.js
│ └── utils.js
├── static/
│ └── CNAME
└── templates/
├── index.jsx
└── style.css
================================================
FILE CONTENTS
================================================
================================================
FILE: .dockerignore
================================================
dist/
.venv/
.conda/
node_modules/
__pycache__/
build/
================================================
FILE: .editorconfig
================================================
# EditorConfig: http://editorconfig.org
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
================================================
FILE: .eslintrc.js
================================================
module.exports = {
env: {
es6: true,
browser: true,
node: true,
'jest/globals': true
},
globals: {
page: true,
browser: true,
context: true,
jestPuppeteer: true
},
parser: '@typescript-eslint/parser',
extends: ['eslint:recommended', 'plugin:prettier/recommended', 'plugin:react-hooks/recommended'],
plugins: ['babel', 'prettier', 'react', 'enzyme-deprecation'],
rules: {
'valid-jsdoc': 0,
'no-var': 0,
'max-len': 0,
'react/no-did-mount-set-state': 0,
'react/no-multi-comp': 0,
'react/sort-comp': 0,
'no-use-before-define': 'off',
'prefer-spread': 1,
'prefer-template': 1,
'prettier/prettier': 'error',
'quote-props': 0,
'spaced-comment': 1,
'max-params': 0,
'no-multiple-empty-lines': 1,
'no-process-env': 0,
'no-inline-comments': 0,
'no-invalid-this': 0,
'no-unused-expressions': 0,
'no-undef': 0,
camelcase: 0,
'consistent-return': 0,
'comma-dangle': 1,
'enzyme-deprecation/no-shallow': 2,
'enzyme-deprecation/no-mount': 2,
'no-constant-condition': ['error', {checkLoops: false}],
'no-unused-vars': ['warn', {argsIgnorePattern: '^_', varsIgnorePattern: '^_'}],
'@typescript-eslint/no-unused-vars': [
'warn',
{argsIgnorePattern: '^_', varsIgnorePattern: '^_'}
]
},
overrides: [
{
files: ['*.ts', '*.tsx'],
parser: '@typescript-eslint/parser',
// Plugins like @typescript-eslint provide different ruleset configs that can be extended
plugins: ['@typescript-eslint'],
extends: [
'plugin:@typescript-eslint/eslint-recommended',
'plugin:@typescript-eslint/recommended',
// This doesn't enable extra rules, but rather just helps with TS settings
'plugin:import/typescript'
],
rules: {
// TODO: Replace any declarations and enable
'@typescript-eslint/no-explicit-any': 'off',
// TODO: Enable this rule and provide description or fix the errors
'@typescript-eslint/ban-ts-comment': 'off',
'@typescript-eslint/no-var-requires': 'off'
}
},
{
files: ['src/**/src/**/*.spec.js'],
plugins: ['jest'],
extends: ['plugin:jest/recommended'],
rules: {'jest/prefer-expect-assertions': 'off'}
}
],
settings: {
react: {
version: 'detect'
},
// Settings related to eslint-plugin-import
'import/resolver': {
// Settings for eslint-import-resolver-typescript which resolves
// typescript aliases based on tsconfig.json "paths"
typescript: {
project: './tsconfig.json'
}
}
}
};
================================================
FILE: .github/ISSUE_TEMPLATE/bug-report--jupyter-widget.md
================================================
---
name: 'Bug report: Jupyter widget'
about: Report Bug for keplergl Jupyter widget
title: "[Bug][Jupyter Widget]"
labels: jupyter
assignees: heshan0131
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. load kepler
2. Add data & config
3. Export map
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Environment (please complete the following information):**
- Python version: [e.g. python2, python3]
- keplergl Widget version [e.g. 0.1.0]
**Additional context**
Add any other context about the problem here.
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: "[Bug]"
labels: bug
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.
================================================
FILE: .github/ISSUE_TEMPLATE/feature-request--jupyter-widget.md
================================================
---
name: 'Feature request: Jupyter widget'
about: Suggest an idea for kepler.gl Jupyter Widget
title: ''
labels: jupyter
assignees: heshan0131
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for kepler.gl
title: ''
labels: ''
assignees: heshan0131
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
================================================
FILE: .github/SECURITY.md
================================================
# Security Policy
## Supported Versions
Security updates are applied only to the latest release.
## Reporting a Vulnerability
If you have discovered a security vulnerability in this project, please report it privately. **Do not disclose it as a public issue.** This gives us time to work with you to fix the issue before public exposure, reducing the chance that the exploit will be used before a patch is released.
Please disclose it at [security advisory](https://github.com/keplergl/kepler.gl/security/advisories/new).
This project is maintained by a team of volunteers on a reasonable-effort basis. As such, please give us at least 90 days to work on a fix before public exposure.
## Escalation
If you do not receive an acknowledgement of your report within 6 business days, or if you cannot find a private security contact for the project, you may escalate to the OpenJS Foundation CNA at `security@lists.openjsf.org`.
If the project acknowledges your report but does not provide any further response or engagement within 14 days, escalation is also appropriate.
================================================
FILE: .github/workflows/build-publish-pypi.yml
================================================
name: Build and Publish KeplerGL Python Package
on:
push:
workflow_dispatch:
inputs:
prerelease:
description: 'Publish as prerelease (uncheck for official release)'
required: false
type: boolean
default: true
jobs:
build_and_publish:
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v4
- name: Set up Python 3.11
run: uv python install 3.11
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install Python dependencies
working-directory: bindings/python
run: uv sync --dev
- name: Install npm dependencies
working-directory: bindings/python
run: npm ci
- name: Build TypeScript
working-directory: bindings/python
env:
MapboxAccessTokenJupyter: ${{ secrets.mapbox_jupyter_token }}
run: npm run build
- name: Type check
working-directory: bindings/python
run: npm run typecheck
- name: Build Python package
working-directory: bindings/python
run: uv build
- name: Test KeplerGL
working-directory: bindings/python
run: |
uv pip install dist/*.whl
uv run pytest
- name: Create artifact
uses: actions/upload-artifact@v4
with:
name: keplergl-pypi
path: bindings/python/dist/
- name: Check version format
if: github.event_name == 'workflow_dispatch'
working-directory: bindings/python
run: |
VERSION=$(grep -Po '(?<=^version = ")[^"]+' pyproject.toml)
echo "Package version: $VERSION"
# Check if version contains prerelease indicators (a, b, rc, dev)
if [[ "$VERSION" =~ (a|b|rc|dev)[0-9]+ ]]; then
IS_PRERELEASE_VERSION=true
else
IS_PRERELEASE_VERSION=false
fi
echo "Is prerelease version: $IS_PRERELEASE_VERSION"
echo "Publishing as prerelease: ${{ inputs.prerelease }}"
# Fail if mismatch between version format and publish type
if [[ "${{ inputs.prerelease }}" == "true" && "$IS_PRERELEASE_VERSION" == "false" ]]; then
echo "::error::Publishing as prerelease but version '$VERSION' does not have a prerelease suffix (e.g., 0.4.0a1, 0.4.0b1, 0.4.0rc1)"
exit 1
fi
if [[ "${{ inputs.prerelease }}" == "false" && "$IS_PRERELEASE_VERSION" == "true" ]]; then
echo "::error::Cannot publish official release with prerelease version '$VERSION'. Please update the version in pyproject.toml."
exit 1
fi
- name: Publish to PyPI
if: github.event_name == 'workflow_dispatch'
uses: pypa/gh-action-pypi-publish@release/v1
with:
packages-dir: bindings/python/dist/
================================================
FILE: .github/workflows/npmpublish.yml
================================================
name: Node.js Package
on:
release:
types: [created]
jobs:
publish-npm:
runs-on: ubuntu-latest
env:
NPM_AUTH_TOKEN: ${{secrets.npm_token}}
steps:
- uses: actions/checkout@v4
# use Volta to manage yarn/node versions
- uses: volta-cli/action@v4
- run: yarn install
- run: yarn bootstrap
- run: npm i -g npm@8.19.2
- name: Login to NPM
run: npm config set "//registry.npmjs.org/:_authToken=${NPM_AUTH_TOKEN}"
- name: Publish
run: npm publish --workspaces --access public
================================================
FILE: .github/workflows/test.yml
================================================
# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
name: Node.js CI
on:
push:
branches: [master]
pull_request:
branches: [master]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18.x]
steps:
- uses: actions/checkout@v4
# use Volta to manage yarn/node versions
- uses: volta-cli/action@v4
- name: Install XVFB
run: sudo apt-get install xvfb
- name: Install Dependencies
run: yarn install && yarn bootstrap
# - name: Install Puppeteer
# run: yarn dlx "puppeteer@23.1.0"
- name: Lint
run: yarn lint
- name: Test
run: xvfb-run --auto-servernum yarn cover
- name: Coveralls
uses: coverallsapp/github-action@master
continue-on-error: true
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
================================================
FILE: .gitignore
================================================
node_modules/
*/**/node_modules/
coverage/
*-coverage/
.nyc_output/
dist/
build/
umd/
*/**/dist/
__pycache__/
.pytest_cache/
.ipynb_checkpoints/
bindings/python/keplergl/static/
typedoc/
examples/**/yarn.lock
!examples/demo-app/yarn.lock
yarn-error.log
*/**/package-lock.json
package-lock.json
.DS_Store
.idea
.vscode/
.venv/
/bundle*.js
/favicon.png
/index.html
npm-debug.log
.history/
.yarn
.npmrc
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
# Local Netlify folder
.netlify
meta.json
.env
================================================
FILE: .nvmrc
================================================
18.18.2
================================================
FILE: .prettierrc.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
module.exports = {
bracketSpacing: false,
printWidth: 100,
semi: true,
singleQuote: true,
trailingComma: 'none',
arrowParens: 'avoid'
};
================================================
FILE: .stylelintrc
================================================
{
"processors": [
"stylelint-processor-styled-components"
],
"extends": [
"stylelint-config-recommended",
"stylelint-config-styled-components"
],
"rules": {
"no-descending-specificity": null,
"selector-pseudo-class-no-unknowny": null
}
}
================================================
FILE: .yarnrc.yml
================================================
# https://yarnpkg.com/configuration/yarnrc
nodeLinker: node-modules
# Define the registry to use when fetching packages.
npmRegistryServer: 'https://registry.yarnpkg.com'
================================================
FILE: CHANGELOG.md
================================================
# Change Log
All notable changes to kepler.gl will be documented in this file.
## [3.2.6] - Mar 16 2026
- b5ffed55b feat: add extra map export resolutions (#3357)
- faa000c6c feat(kepler-jupyter): version 0.4.0rc1 (#3345)
- efb072eb5 fix: colors not working in trip layer of TABLE mode (#3347)
- ca30df0e1 fix: create trip layer from duckdb table (#3344)
- cc33b0c8f feat: add support to DECIMAL column type (#3341)
- 40ce323a8 docs(localization): add translation guide for contributors (#3335)
- 35ab765d4 fix: tileset loading indicator improvements (#3331)
- cec11f3cb fix: add security warning about Mapbox token in HTML exports (#3139) (#3330)
- e2f672cdc fix: replace broken vis.academy link with docs.kepler.gl (#3309)
- 8c5030c3e fix: export zoom icon (#3308)
- 8cf4274bf fix: layer configurator icon update (#3306)
- 192f0fd2b feat: getDuckDBColumnTypes improvements (#3304)
- 3762a2b36 feat: make tile loading indicator more explicit (#3305)
- e5b7df170 rollback change, and truncate tooltip (#3300)
- cbb3204cf feat: Implement WKT validation in data-type.ts (#3298)
- e705fc8aa fix: name new point layer using label if provided (follow-up) (#3297)
- 4bdf8f4ff fix: name new point layer using label if provided
- cf76bba68 fix: hide Kepler editor tooltip “top-left jump” on invalid hover coords (#3294)
- 2ba9f6e22 fix: Clamp legend height if it exceeds available space (#3276)
- 562cb1ba8 kepler.gl-jupyter: codespell (#3273)
## [3.2.5] - Dec 24 2025
- 81f490d94 fix: trigger a redraw from icon layer once the icons are loaded. (#3269)
- 26e4a17d4 fix(ai-assistant): clear LLM history on restart chat (#3262)
- 2d985982a fix: image export for non-webpack bundlers (#3266)
## [3.2.4] - Dec 9 2025
- 82630dee3 fix: ensure icon layer render with the latest geometry (#3259)
- 422c1b347 fix: Avoid Monaco AMD bundle when importing `@kepler.gl/duckdb` (#3255)
## [3.2.3] - Nov 28 2025
- 2288bc324 fix: Allow passing arrow tables to ArrowDataContainer (#3247)
- a0a4eefc1 fix: Yarn start failed (#3249)
## [3.2.2] - Nov 25 2025
- f66ab3c61 fix: Allow passing arrow tables to ArrowDataContainer (#3242)
- e2efa50dd fix: copy geometry when geometry is of binary format (#3236)
## [3.2.1] - Nov 3 2025
- d2b130f95 fix: detect h3 column in arrow (#3230)
- 2aa200913 fix: interaction panel causes layout shift (#3224)
- 2e24bd207 feat: extend bigInt casting to support UBIGINT HUGEINT UHUGEINT in duckdb (#3227)
- 79d745ae2 [fix] fix for wkb/wkt saved in DuckDB as varchar (#3208)
- 24529655d fix: fixes to channel by value (#3216)
- f211ccd0a [Bug]: Fix scrollTop reest when scrolling horizontally in data table (#3206)
- b6aee95f3 docs: add security escalation policy (#3210)
- a6e9cb998 feat: ai assistant support llm proxy server (#3188)
- 2005927bd [fix] icon layer - render default icon in case svgIconUrl loading fails (#3204)
- 64ec955ae [chore] Add missing release notes for 3.2 (#3200)
- 70a129c4e [feat] vector tile layer - add feature uid selector (#3203)
- 2b8af8260 [fix] vector tile layer - use highlightedFeatureId for hover (#3202)
- 32fb77f42 [chore] bump demo-app example to kepler.gl 3.2 (#3201)
- 96dcef6b9 [fix] fixes for legend (#3199)
- 26dd6e832 [website] fix mobile layout (#3197)
- 7be817789 [website] Add OpenJS Foundation copyright and logo (#3196)
## [3.2.0] - Aug 21 2025
- 3b0be2dda [chore] docs update (#3192)
- 9c132de28 [chore] docs update (#3180)
- d4d8d184b [chore] raster tile form - add link to docs (#3183)
- f91564fb9 [fix] save raster layer config with layer, don't rely on app config (#3184)
- 420bbf2ad [feat] add support for boolean filter in vector tiles (#3190)
- e4b64a080 [chore] Replace Studio section with Desktop section (#3189)
- 751148111 [chore] Fix and update examples to v3.1.10 (#3182)
## [3.1.10] - Aug 14 2025
- 09297acc0 [improvement] optimize speed of getCategoricalColorMap (#3178)
- 1545fafe5 [chore] Update react-modal types version (#3173)
- fc1b91fa9 [chore] Create props interface for LinkRenderer Component (#3172)
- 5f664c3a5 [chore] pass through logoComponent to PlotContainer (#3176)
- 46cc44109 [fix] fix for a crash in getBins when numeric strings are treated as numbers (#3175)
- 0850ef2eb [chore] Update the Screenshot Image in Readme (#3171)
- f2001983a [feat] export duckdb column logic (#3170)
- 3df1c4ddf [chore] expose showDeleteDataset prop (#3166)
- 2a666ae0c [chore] export dnd constants
## [3.1.9] - July 28 2025
- 0d6d5fd1a [chore] raster tile - hide server settings by default (#3163)
- 7551f5d7d [fix] DuckDB mode: space in column name breaks file import (#3153) (#3156)
- 047334712 [fix] fit to bounds - fix initial basemap and deck projections mismatch (#3155)
- d43e8bbff [chore] replace ai-assistant model config file with ts for npm availability (#3154)
- 1a93a2b99 [chore] raster tile layer tests (#3152)
- 343b554db [feat] WMS layer improvements (#3151)
- c1d2b8616 [fix] button spinner fix (#3150)
- a05b3cf6d [fix] WMS layer fixes 2 (#3149)
- 1a47e08a5 [fix] WMS layer fixes 1 (#3148)
- 272fd1ae7 [Feat] WMS Layer - development (#3092)
- 9f656e06c [Docs] Add tutorial Spatial Data Analysis with Kepler.gl AI Assistant (part1) (#3126)
- ca628b523 [Chore] rewrite plot container for perf improvement (#3133)
- 49f4c3de2 [chore] Update old imports (#3131)
- 3b6e9049a [fix] improvements for raster tile layer (#3124)
- 4237b0a0e [chore] migrate custom-palette from react-sortable-hoc to dnd-kit (#3128)
- 49fbf8faa [fix] aggregation layers fixes for custom color scale (#3129)
- edf1f1ddd [fix] spatial join ai instruction (#3127)
## [3.1.8] - May 26 2025
- 4fd570c3e [example] Kepler.gl getting started example with Vite (#3123)
- f57173d35 [fix] DuckDB - cast BigInts to Double by default (#3120)
- fd4702c4f [perf] disable strokes by default for polygons in geojson layer (#3118)
- 1542bb6f7 [Feat] Add OSM road tool to support point analysis on road networks (#3117)
- 9da33316c [feat] Generate "idea" buttons from LLM (#3115)
- 330030185 [Fix] AI Connection to Ollama failed (#3113)
- be6ee823a [Bug] fix update selected feature bbox (#3110)
- 0dcacc66e [fix] Custom picker fix when called during initialization (#3107)
- 4fc1344a1 [Chore] style tweak (#3109)
- 3769aaf74 [Chore] Better handle add data to map error and loading indicator (#3106)
## [3.1.7] - May 14 2025
- 014059b97 [fix] fixes for raster tile layer (#3102)
- 518c515d1 [feat] loading indicator improvements for tiled layers (#3097)
- e290f281e [fix] fix for getFieldsFromTile regression (#3099)
- 7087ffe15 [fix] fix tooltip crashing for trip layer (#3103)
- a231ebfc1 [fix] fix for image export with effects (#3105)
- da38e26b9 [chore] Update Comments in actions (#3098)
- 21aac1c85 [fix] fixes for custom input (#3095)
- 271b8cc98 [fix] fix types publishing for table module (#3096)
- 3d3bb9b54 [chore] add cdnUrl option to application config (#3093)
- 9cdf73ea4 [Bug] remove layer item z-index (#3091)
## [3.1.6] - May 8 2025
- 33203a6de [fix] fix loading indicotor not hidden regression (#3088)
- 913176bb6 [bug] fix lodash imports regression (#3089)
## [3.1.5] - May 8 2025
- 223d14b60 [chore] ts fixes
- 3570ac429 [feat] Raster Tile Layer - development in progress (#3048)
- 07e5beae2 [chore] import add tileset dialog styling (#3085)
- 6568c0c94 [Feat] Add Spatial Data Analysis tools to AI Assistants (#3057)
- fd08fa1a9 [Chore] export more kepler-gl prop selector (#3081)
## [3.1.4] - May 5 2025
- 03b8ea0a9 [Chore] Use clonedeep in interaction config load (#3080)
- a6104eafe [Chore] drop lodash per-method packages in favor of the main lodash (#3065)
- abb3fd473 [feat] h3 layer from decimal format (#3066)
- 191f66161 [fix] fix for exported maps. Change react-markdown to markdown-to-jsx (#3077)
- 3c83e74b3 [chore] Added types in Action (#3075)
- 8baddbbaf [Chore] export bottom widget field selector (#3078)
- afc21c263 [chore] Fix TypeScript Errors (#3076)
- 822cd0e32 [Style] align icon styles, use lucid icons (#3073)
## [3.1.3] - May 2 2025
- d5ef5f713 [Chore] remove dnd-kit from dependency of utils and reducer, remove use of withState in dnd context (#3067)
## [3.1.2] - May 1 2025
- fb3615b90 [chore] extra duckdb utils export (#3063)
- a0d14b770 [fix] updateVisDataUpdater early exit (#3058)
- 111b3180d [chore] pass props directly to Draggable legend, not withState (#3055)
- 6bb6c98a1 [fix] Legend positioning fixes (#3052)
- 7d601f110 [fix] Only open either the mapDraw dropdown or locale dropdown (#3056)
- 52a2d2a2b [CHORE] disable auto lyaer creation based on color by int column (#3049)
- e935ef51d [chore] extra exports from duckdb module (#3050)
- 864dbe5c6 [Chore] Fix more style components warnings (#3047)
- 9de30e2ba [Chore] Export duckdub utils, allow cols in validate dataset (#3042)
- 6cc1ee4ef [Bug] Fix styled-components warnings for passing props to Dom (#3039)
- cb5c14f81 [Bug] Add mapbox-gl dep to prevent Failed to resolve import in vite (#3036)
- 7c3365fcf [chore] Get started minimal example with esbuild (#3028)
- 224975a25 [chore] pass duckDB adapter via application config (#3023)
## [3.1.1] - March 11 2025
- e271c8f8c [fix] fix for potential freeze during add data pipeline (#3015)
- 9eef01c48 [fix] make onFilteredItemsChange callback optional (#3016)
- 7107e4177 [fix] fixes for vector-tile layer (#3013)
- b4b979d59 [fix] schema panel displays temp table (#3014)
- ed2b5f322 [chore] fix react deprecation warnings (#3011)
- ba75087a1 [fix] DuckDB: update schema after running a query (#3009)
- b57b1ff9a [chore] update umd example to latest stable release (#3010)
- 9762dc379 [feat] DuckDb plugin: drag and drop file directly as table (#2952)
- 8e737e8cc [chore] changes to webpack.config path separators (#2623)
- 8fbb3b0b4 [fix] Fix Save map action for FSQ provider (overwrite logic) (#3006)
- df829fbe9 [fix] fix for geocoder coordinates (#3002)
- 44acecf2a [fix] adjust getZoomFactor for icon layer (#3004)
- 69ea2a176 [fix] fix for Icon layer UI (#3003)
- 702b49e3f [fix] Fix for More than one copy of react-palm was loaded error message (#3007)
- a67a7fcab [Bug] make sure the RangeBrush updates on slider range changes (#2047)
- 631f7a304 [fix] Update geojson-utils.ts to support GeometryCollections (#2059)
- ce867606f [chore] Bump express from 4.19.2 to 4.21.0 (#2655)
- c9dd05f32 [chore] Bump nanoid from 3.3.7 to 3.3.8 in /bindings/kepler.gl-jupyter/js (#2906)
- b2e24345c [chore] Bump fast-xml-parser from 4.4.0 to 4.5.0 (#2688)
- 976b079b3 [chore] Bump lodash from 4.17.19 to 4.17.21 in /src/deckgl-layers (#2858)
- 4074b320f [chore] Bump esbuild from 0.23.1 to 0.25.0 in /examples/demo-app (#2994)
- 57573d344 [chore] Bump elliptic from 6.6.0 to 6.6.1 (#2997)
- c5dbd571d [chore] Fix lint issues displayed on GitHub's File Changes page (#3001)
- b98a39def [fix] Transform binary buffers to hex wkb when saved to json/hmtl maps (#2998)
- 221b243c2 [feat] improvements to duckDB column type handling (#2970)
- d30a95bcd [fix] improvements for layer type change logic (#2995)
- 547ffeb0c [fix] arrow text labels from non-string source vectors (#2990)
- 7e2e619e2 [chore] updates to website (#2992)
- 7e2db2b7d [chore] Improved Props and Gettings Started Docs (#2993)
- 1216d235b [fix] export geoarrow to CSV as geojson (#2988)
- 2c525ed8e [fix] restore suport for string wkb; save binary wkb as hex wkb (#2982)
- e149384df [chore] update to hubble.gl 1.4 (#2987)
- c39778ce9 [fix] AI Assistant sends messages to 127.0.0.1 instead of remote Ollama URL (#2985)
- 81780f5ab [chore] Update README.md (#2981)
- f8fbf2461 [fix] heatmap renders nothing with black color or duplicate color (#2978)
- 11350eecb [chore] check for required env variables in demo-app and output a warning (#2977)
- 0325ef6ee [fix] FSQ storage provider - use prompt instead of auto login after logout (#2975)
- bbe51b980 [fix] fix for point column suggestion not working (#2974)
- fa1cc4f1e [chore] Rename ".env.template " to ".env.template" to prevent git clone fail (#2976)
- 47cd3da81 [keplergl-jupyter] Release v0.3.7 #2969
- 7bbe0b839 [Jupyter][Fix] convert datetimes to str so they can convert to json (#2968)
- 5367abaee [fix] fix geojson and trip layer crash without data (#2964)
- e1c9f869c [fix] FSQ Storage provider temp fix (#2960)
- 098ee9b42 [fix] fix for minzoom in examples (#2959)
- f7f10379e [chore] update demo-app version (#2958)
- ab17e7565 [chore] update banner mesasge (#2957)
## [3.1.0] - January 29 2025
- 089aa8cf8 [chore] vector tiles refactoring (#2945)
- 405c36e23 [fix] DuckDB: make query result title more reusable (#2956)
- 8033578f2 [docs] update docs for Kepler.gl release 3.1 (#2941)
- b1953cff7 [feat] banner with extra release info (#2955)
- e95c4e5a4 [fix] arrow tables - save timestamps as iso date string (#2953)
- 4aef54a93 [fix] adjust margin for map save modal to show Save button without scrolling (#2954)
- f00b4b88d [chore] testing mp4 embed with gitbook (#2951)
- f292d6181 [Chore] Add DeepSeek in Ai Assistant (#2946)
- c5484e1ae [fix] plumbing for DuckDB plugin support (#2949)
- da9988532 [chore] demo-app bump kepler.gl version (#2944)
## [3.1.0-alpha.7] - January 27 2025
- 7356c5afe [fix] hotfix for arrow saving / loading, without support of binary data (#2943)
- 4031451b0 [feat] duckdb plugin (#2798)
- 029bcc548 [feat] loading indicator (#2936)
- 1a68d1bd2 [Chore] Remove SQL plugin for AI Assistant (#2938)
- 4be4b6987 [Misc] Update demo-app README.md (#2934)
- b38054fa8 [Feat] AI Assistant Query (#2819)
- 4cd912097 [fix] Added 24 limit for maximum zoom (#2635)
- b1bddd5fb [chore] Fixes for using in a vite app (#2898)
- 4d1bfb3d0 [feat] minZoom and maxZoom for examples (#2933)
- 81be74920 [fix] don't auto create point layer from vector tiles (#2932)
## [3.1.0-alpha.6] - January 22 2025
- 803b2f540 [fix] remove dependencies from useEffect (prev componentDidMount in app.tsx) (#2930)
- 57926442f [fix] use saved map config for saved maps instead of zoom in to data (#2929)
- 4af609245 [chore] add dot.env, updates to demo-app build, update gitignore (#2928)
- ce23c7668 [feat] duckdb module updates (#2927)
- fc974d852 [feat] duckdb module placeholder (#2926)
- d1b3c9799 [fix] demo-app resolve to proper node_modules (#2925)
- 594250bc7 [fix] fix demo-app yarn start (#2924)
- 913ba1ce0 [feat] support for table plugin in demo examples and privately stored datasets (#2923)
- 630728190 [fix] fixes for style editor preview and error (#2919)
- d6aa2757e [fix] fix neighbor mode hovering crash in arc/line layers (#2920)
- e2bd71d4e [fix] fix csv table examples for layers (#2921)
- a6e151a0f [fix] vector tile layer fixes (#2911)
## [3.1.0-alpha.5] - January 15 2025
- b117b08ab [fix] fix for exported html maps
## [3.1.0-alpha.4] - January 15 2025
- 933a91a2f [fix] check for geoarrow extension in geojson layer (#2916)
- 0abe9979d [fix] opening multiple examples breaks url (#2915)
- 49e7956e8 [fix] Don't show 0 when description is empty (#2913)
- cb5d4ed42 [fix] fix styled-components version in exported map (#2907)
- b1d243363 [fix] adjust tooltip style (#2910)
- f0c57a869 [fix] fix website commit section
- 2753321c5 [feat] Vector Tile layer fixes (#2899)
- 073c585e4 [Fix] add_data() function failed in keplergl-jupyter
- 6e425972e [feat] mapbox and maplibre simultaneous support (#2897)
- 22f9ba14d [Chore] Fix lint error for Register actions (#2896)
- ccfc2e2ad [fix] Image export legend positioning (#2895)
- cf02a3ca6 [chore] Upgrade styled components to v6 (#2894)
- 4c9ffe827 [fix] Prevent infinite useEffects loop in range-plot (#2892)
- 0b67c5409 [fix] fixed onOptionSelected handler when option is null (#2891)
- 40ba839e3 [fix] Add ellipsis in LayerTypeListItem (#2890)
- d0d31bdfa [fix] Handle selecting geojson polygon with missing properties (#2889)
- 79801bec0 [fix] Tippy tooltips in animation controls (#2888)
- 0ad53723a [feat] Adding setAnimationConfig action (#2887)
- 67b001980 [chore] export TimeFieldFilterProps (#2883)
- 603fde8d1 [fix] Fixed issue when mapstate latitude or langitude are out of bounds (#2882)
- 92c9e6abc [fix] Use floating-ui to deal with closing on click outside (#2886)
- 4bcf55bd6 [Feat] Custom color scale for categorical/ordinal field (#2880)
- 23f603428 [Bug] Prevent dragging legend component outside of container (#2885)
- d549fcd4e [fix] copy map config style (#2878)
- 34444fa54 [fix] check for allBins (#2876)
- 8335ba410 [fix] Custom Color Scale fixes (#2875)
- 141236513 [chore] Add several vis state mergers combineConfigs and improve TS (#2634)
- 9f3f08944 [Chore] Add composedReducerSchema to schema manager (#2633)
- e633177ef [chore] applyFilterConfig action (#2872)
- ceb930e2d [Fix] incorrect multi-dataset filter domain (#2871)
- 00dd00279 [fix] show scale options for Point Count in aggregation layers (#2870)
- a39fcf8c4 [fix] pass strings to color palette inputs (#2873)
- b89b19c6a [chore] Consolidate vis state tests (#2869)
- 77e785713 [feat] Support custom ordinal color scale on string field in layer config (#2868)
- cccc4be2b [feat] Free positioning of the legend (#2874)
- 2d1d8e5f5 [Fix] add_data() function in keplergl-jupyter (#2867)
- 3b46abd34 [feat] add LayerToggleVisibility for single splitMap (#2863)
- b2b6f10c8 [Release] Candidate Kepler-Jupyter v0.3.4 (#2588)
- 3bf006f41 [fix] Remove legend layer groups height capping (#2864)
- f1245d7e5 [chore] ts refactoring (#2861)
- a897715cc [Feat] Add custom color scale for aggregate layers (#2860)
- 6bc594602 [Feat] replaceDataInMap action - save colorsByDataId (#2859)
- be2f04e6d [chore] add fsq color palettes (#2862)
- c7d3777fc [fix] change process to globalThis.process (#2865)
- 5cb8a3431 [chore] Create SECURITY.md (#2845)
## [3.1.0-alpha.3] - December 25 2024
- 2cd7a859c [chore] fix missing dependencies in workspaces (#2856)
## [3.1.0-alpha.2] - December 24 2024
- f9b385a6e [fix] Fixed time filter bug where points located at the borders of the domains were not correctly displayed (#2854)
- 59abc6a19 [fix] fix for custom color scales with tile layer (#2853)
- 3a4bf667f [feat] histogram and point layer fixes (#2852)
- f9c52e538 [feat] color scale histogram (#2851)
- 3e7dc937a [fix] custom palette issues (#2850)
- d55797991 [docs] Replace yarn global add with yarn dlx for puppeteer installation (#2849)
- e106c1927 [feat] Plumbing for vector tile layer (#2839)
- a2abbf72d [fix] fix yarn cover regression (#2846)
- 6925bd429 [docs] update demo-app/README.md (#2847)
- f05b6e37d [chore] Bump nanoid from 3.3.7 to 3.3.8 in /website (#2840)
- 4baa44d9b [chore] Bump nanoid from 3.3.7 to 3.3.8 (#2837)
- b09d7eb95 [Enhancement] support mapbox url protocol (#2693)
- 215383661 [Feat] Redesign color range to use chormajs and d3 color function (#2835)
- bded7af76 [Feat] handle layer color scale by field.domainQuantiles (#2829)
- 5f7c26bd0 [fix] Prevent duplicate legend in line and arc layers (#2830)
- 639c7a5b9 [feat] Apply new legend style (#2831)
- f9c214dd5 [chore] getSelectedFeature (#2832)
- efdf2ea8d [chore] ts fixes (#2827)
- 074d123dd [Feat] Add display format setting for table/tooltip (#2826)
- aec75d819 [Chore] Minor ts refactoring (#2825)
- 1825b6572 [fix] Expand legend (#2824)
- bb6a376e8 [fix] adjust time range filter on value set (#2823)
- cef3faf19 [Feat] add h3 typed column (#2822)
- c5d42ddc9 [fix] Fix multiple field filtering in setFilterUpdater (#2821)
- c4d1cfff0 [FEAT] support domain.domainStops in layer color, render color legend based on zoom (#2815)
- 3a4feac59 [fix] Line layer is not displayed for between hex ids (#2820)
- 89411c820 [fix] Typescript 4.4 fixes (#2816)
- 240289603 [feat] Show selected fields in the tooltip for aggregation layers (#2814)
- 95c6ed14b [chore] Bump elliptic from 6.5.7 to 6.6.1 in /bindings/kepler.gl-jupyter/js (#2818)
- fb3fa7b58 [chore] Bump cross-spawn from 6.0.5 to 6.0.6 in /website (#2817)
- f476a1c4c [chore] Bump elliptic from 6.5.7 to 6.6.0 (#2720)
- c727356f7 [chore] Bump cross-spawn from 6.0.5 to 6.0.6 (#2772)
- 3950d73ab [chore] Fixes in README.md (#2810)
- 786aa36cf [Fix] Don't modify height for with fixed height enabled; Height UI unification (#2804)
- 2178d9057 [fix] show sync layer animations when there is one dataset (#2803)
- 6f35313f7 [chore] timeline refactoring (#2802)
- d50bbc831 [fix] Updated plot when changing cross filters (#2801)
- b4dfa2fce [fix] disable Share Map for FSQ provider (#2808)
- 86b5dda7e [Feat] AI Assistant [2] (#2777)
- 5a0cbca66 [Bug] Fix issue with React StrictMode causing Dataset table to not display (#2683)
- b147db8d5 [chore] Local Development Guide Update (#2806)
- 6223be939 [fix] Foursquare storage provider improvements (#2800)
## [3.1.0-alpha.1] - December 3 2024
- f6b37c6af [fix] fixes for exported maps
- 979c9a5a1 [fix] align upload icon (#2799)
- 6862eb85c [fix] Fix for Try Sample Data (#2796)
- f4f7fd2b4 [fix] fix examples - proper publicPath to include bundle chunks (#2795)
- 7ca7f9178 [chore] prepublishOnly command fixes (#2793)
- 40c6c8b09 [chore] npmpublish fixes - set npm registry manually (#2792)
- f60b94f48 [chore] fix npmpublish action (#2791)
- e77981e13 [chore] fix for package publishing (#2790)
## [3.1.0-alpha.0] - November 26 2024
- 5b4f6537 [feat] create new dataset action (#2778)
- a253cae1 [chore] Update the keplergl processors update (#2776)
- 931e2c6b [fix] Update the path to relative path in utils (#2775)
- ac469c13 [chore] Updated imports for Kepler GL Reducers in docs (#2774)
- 13b469d8 [chore] common-utils module (#2773)
- 6fd4f884 [Feat] Kepler.gl AI Assistant [1] (#2735)
- ab9e2530 [fix] Time Sync fixes and tests (#2771)
- 1689ed68 [fix] Custom color scale fixes (#2770)
- d0c9a3b9 [feat] Support custom breaks in color scale (#2739)
- 3f645002 [fix] restore arc and line layers in non-geoarrow modes (#2732)
- 966ee4c6 [Chore] Custom Initial State and Forward Actions Docs update (#2731)
- e88577de [chore] Docs action page import updates (#2729)
- d783b43c [feat] experimental support for ARROW:extension:point; support for arrrow:wkb for geojson layer (#2716)
- 26687575 [chore] Update Code examples in API Reference Get Started page (#2727)
- 8ea1cabe [fix] Fixed synced filter domain and interval calculation (#2725)
- 695861b2 [Bug] fix yaxis chat doesn't update (#2724)
- 8c37afaa [fix] time sync bugfixes (#2723)
- 4c2a6b3c [Improvement] Improved radius legend number formatting (#2726)
- c9658214 [Doc] Improve keplergl-jupyter documentation (#2697)
- 934f8e89 [feat] Improve timeline sync filer UI (#2722)
- d6f68379 [fix] Time Sync bugfixes (#2721)
- 40f82127 [feat] Sync filter with layer timeline (#2718)
- 0b6f320a [Enhancement] Synced filter small tuneup to synced filter panel (#2715)
- caf6e485 [fix] filter fields based on timestamp (#2714)
- c17dacf3 [feat] Layer animation (#2713)
- 0507bd60 [faat] deckgl-arrow-layers module (#2680)
- 8e4d723b [feat] Allow function return type of getData in getFilterValueAccessor (#2708)
- e20d5e82 [BUG] fix gpu filter update trigger attribute update in every render (#2707)
- 2d8161e3 [Feat] add color picker to single color selector (#2699)
- b258e8a9 [Bug] Fix synced time filter loaded value not saved (#892) (#2706)
- e5fe97be [feat] Updated time filter sync style (#2705)
- cb705c63 [fix] Prevent bottom time widget crash (#895) (#2703)
- ef2ac8f0 [chore] Add runGpuFilterForPlot to export, ts changes to KeplerTableModel (#2702)
- ee695327 [fix] remove duplicate "https:" in example (#2711)
- a743a276 [fix] add map control buttons back (#2709)
- 97df4c94 [Feat] Replaced filter enlarged with view: side | enlarged | minified - part 2 (#2537)
- 1c0ef9a9 [feat] add deck.gl onFilteredItemsChange callback to DeckGl overlays (#2691)
- d6082fe6 [feat] Time filter syncing (#2690)
- b28a263e [feat] Implemented ability to invert time series trend colors (#2692)
- ecb5ed41 [feat] Edit color legend value (#2681)
- 9c82daae [Enhancement] Add billboard and fadeTrail toggles (#2684)
- 69fc6c65 [Feat] Dynamic map lib config (#2678)
- 5764b069 [Chore] Remove default props and react-onclickoutside in react functional components (#2679)
- 09e19f86 [Fix] Tooltip not working in exported HTML map (#2556)
- a24ba5ec [Feat] Support radius legend (#2677)
- 1e7415a3 [Enhancement] call layer methods to validate visconfig when switching dataset (#2676)
- 25a5b60d [Chore] Adding application config (#2658)
- a9135ac6 [Feat] add geojson column mode for point layer (#2666)
- b6ac6540 [Feat] Add neighbor column mode to arc layer, support arc from hex (#2665)
- 2bc59371 [Feat] support create geojson path from point csv in polygon layer (#2664)
- 4c489940 [chore] Split out column mode config into separate component (#2663)
- add6192b [feat] Layer Column Mode (#2662)
- ef32f711 [fix] Fixed disappearing animation time control (#2625)
- c70ae07e [chore] Update @loaders to 4.1.1 (#2638)
- ad94d703 [Fix] legend wasn't interactive in shadow DOM (#2630)
- 6ffb1dcb [chore] Move create or update filter action (#2636)
- 16a3ac26 [fix] Improved map bounds calculation and handled latitude issues (#2632)
- 7e3ea28b [fix] prevent second shadow effect (#2631)
- f8e7b417 [fix] Upgrade react-router from 3.2.5 to 3.2.6 (#2637)
- 56c9c3ed [fix] Updated type data-utils getColumnFormatter method (#2640)
- 5d77b7ab [chore] Add className for LayerManager (#2629)
- 6f45f1f0 [feat] add autoFocus prop in TypeHead (#2646)
- 406b9787 [fix] Reset default values when DropdownList component unmounts (#2648)
- cf39ab20 [fix] Map controls tooltips break drag event positioning (#2649)
- e7deb4c6 [chore] Exporting missing types for PlaybackControls (#2650)
- edd1fd98 [fix] Making sure animated spinner has border width CSS prop set (#2651)
- b92b9707 [fix] Disable polygon filter menu for non-polygon features (#2652)
- e40d9b6e [feat] Call get after inject to create full cache (#2647)
- f15be57f [fix] Fixed effect panel width (#2644)
- 04280b33 [fix] Hiding legend scrollbar when in image export (#2643)
- 73704019 [chore] Update modal with test id (#2642)
- 4f9d261c [fix] data table right margin in header (#2641)
- 66b7fbdf [chore] Replaced deprecated "assert" with "with". (#2654)
- fb7fd817 [fix] build_and_publish fix (#2645)
- 9dbc80f1 [chore] migrate from webpack to esbuild to build demo-app locally (#2616)
- 7b512cfa [chore]: Upgrade to yarn 4 (#2610)
- a06d03c5 [chore] Bump setuptools from 69.5.1 to 70.0.0 in /bindings/kepler.gl-jupyter (#2587)
- f977b4f2 [chore] Bump elliptic from 6.5.6 to 6.5.7 (#2608)
- 40005446 [chore] Fix cover script generate cover report (#2609)
- affc5b65 [Chore] Upgrade to eslint 8.53.0 and prettier 2.8.8, fix lint and type errors (#2607)
- bc90b0e2 [Chore] fix tests (#2602)
- e5111dad [Bug] Fixes a number of issues preventing Kepler from building on fresh checkout (#2596)
- 9341911e [Bug] Fix custom map style input (#2564)
- 89180277 [chore] update deps; update doc; update version (#2568)
- ff52dda6 [fix] jupyter widget: don't take over
(#1723)
- 739aed86 [deps] Bump ip from 1.1.5 to 1.1.9 (#2527)
- 44526ebc [Feat] Kepler-Jupyter 0.3.4 with kepler v3 (#2565)
- 6667a966 [Docs] Update node.js version in docs to v18 (#2558)
- 4932e76a [Feat] use fixed height in geojson layer (#2533)
- 400120f3 [Enhancement] call layer methods to validate visconfig when switching dataset (#2532)
- 1f9757b8 [feat] Pass in custom transformRequest function (#2534)
- b644f203 [Fix] layer popover mapIndex (#2535)
- 4b3c950f [fix] Fix sample maps (#2529)
- 55fb2426 [chore] Update COC to OpenJS (#2496)
- 0959de6a [Feat]Support Zoom to layer in layer panel (#2516)
- ac0d3575 [Chore] docs: Add GeoArrow to supported formats (#2503)
- 084d807f [Chore] Bump path-parse from 1.0.6 to 1.0.7 (#1569)
- 46086e88 [Chore] Bump cached-path-relative from 1.0.2 to 1.1.0 (#1687)
- b8e5f865 [Chore] Bump ssri from 6.0.1 to 6.0.2 (#1866)
- 48e5839f [Chore] Bump postcss from 7.0.35 to 7.0.39 (#1691)
- 03d844c4 [Chore] Bump url-parse from 1.5.1 to 1.5.10 (#1724)
- f5d3be2c [Chore] Bump async from 2.6.3 to 2.6.4 (#1810)
- 012e9d7e [Chore] Bump shell-quote from 1.7.2 to 1.7.3 (#1847)
- 3222fa11 [Chore] Bump minimist from 1.2.3 to 1.2.6 (#2520)
- 248a759d [Chore] Bump hosted-git-info from 2.8.8 to 2.8.9 (#1865)
- 8659d4c9 [Chore] Bump decode-uri-component from 0.2.0 to 0.2.2 (#2053)
- 354fb8d2 [Chore] Bump browserify-sign from 4.2.1 to 4.2.2 (#2421)
- 59d81ef8 [Chore] Bump @adobe/css-tools from 4.3.1 to 4.3.2 (#2464)
- 776f11bc [Chore] Update docs to MapLibre and react-map-gl v7 (#2497)
- 0ad17b50 [Chore] Bump follow-redirects from 1.15.1 to 1.15.4 (#2507)
- b3be6c9e [Fix] fix example node-app arrow errors (#2508)
- 24acc1a0 [Chore] Update Uber References (#2495)
## [3.0.0] - December 21 2023
- 21a445fd [chore] update readme, fix examples, show effects button (#2492)
- de8cb971 [Fix] GeoArrow demo not working (#2491)
## [3.0.0-alpha.2] - December 17 2023
- 5264c5f5 [fix] add thumbnails (#2486)
- 34bb812e [chore] Update all licenses to OpenJS recommendation (#2471)
- df87781a [Feat] add polygon filter based on mean centers for GeoJsonLayer (#2476)
- 50924867 [chore] Add file license header script (#2472)
- f33b09f8 [Demo] Add GeoArrow sample dataset (#2483)
- 09aee384 [feat] MapLibre basemap (#2461)
- 1544e202 [Fix] basemap frozen when incrementally loading GeoArrow (#2474)
- b290d871 [chore] pin luma.gl version to 8.5.21, to avoid mismatch (#2463)
- 955633df [chore] bump loaders (#2480)
- b481611c [fix] fix map import (#2479)
- 2024a6d8 [Feat] GeoArrow incremental rendering (1) (#2459)
- aa1c7d10 [chore] fix typo in landing page (#2402)
- 155a5825 [fix] Fix cloud tile fetching logic (#2456)
- 5eb62a9b [fix] Fixed website configuration to correctly import local kepler files (#2454)
- 39494866 [fix] update min value for hexagonal pixelate effect (#2453)
- 8e7b0ad1 [fix] Effects: fix possible 'undefined' in effect parameters (#2452)
- 84053786 [chore] Validate parameters for effects (#2450)
- d60ef31d [feat] Introduce Foursquare cloud provider (#2437)
- 82d616e4 [fix] ScenegraphLayer has broken lighting and textures (#2443)
- 110c2991 [chore] bump deck.gl, luma.gl, loaders.gl (#2442)
- f70b20ea [fix] effects: prevent time reset with invalid valese (#2441)
- 3ca8df02 [chore] Add effect MapControl test (#2440)
- 68bff82a [fix] effect-related UI fixes (#2439)
- 82fc69e2 [chore] Refactored cloud provider flow for performance and multi provider support (#2436)
- d975ea1e [Feat] support GeoArrow format (#2385)
- ee6f0754 [feat] Effect manager - UI improvements (timezone, time slider, time dropdown) (#2433)
- b5a6e9ce [chore] Making EffectPanelHeader actions configurable (#2432)
- 1ae4cd02 [feat] UI updates for effects (#2428)
- a69b0878 [chore] Effects - config refactoring (#2422)
- bfec82e5 [chore] Bump to loaders.gl@4.0.0 (#2424)
- e6e5a4c9 [Chore] export LayerBlendingSelector (#2419)
- a1878138 [chore] SplitMap type changes (#2418)
- 5e0ad511 [fix] Legend is rendered outside of widget (#2417)
- 473bd801 [fix] feature menu not working in shadow DOM (#2416)
- b995c9b5 [fix] Hexbin layer color aggregation incorrect on load (#2415)
- 58f0bb71 [Chore] merge other properties in splitMap merger (#2413)
- bcb8c4e8 [fix] long name in filter panel header (#2412)
- b8fa6ce1 [chore] Remove paths from tsconfig (#2414)
- 79002ea6 [feat] Support customized ref in useDimensions (#2409)
- 4d723317 [feat] Update Icon Layer to allow passing in svg icons as a prop to bypass remote resource fetching (#2410)
- 2ff3738f [fix] Viewports not always locked (#2408)
- 975a4762 [fix] Using resolution-corrected mapState for image export (#2407)
- 7fae622e [chore] adds additional properties to mock basemaps (#2411)
- df1397fd [fix] handle empty properties in GeoJson file (#2381)
- c8e2a9f1 [chore] move dev env to Node.js 18 (#2399)
- bb559750 [fix] long names in tooltips (#2405)
- c9c34c86 [chore] add custom classes to dropdown (#2404)
- 22dd6236 [chore] Remove unused deps (#2403)
- a36ec68b [fix] effect related fixes (split maps, shadows, timeline) (#2396)
- 5e7dd9b5 [fix] Upgrade Mapbox SDK (#2397)
- b54c1739 [chore] Upgrade to loaders.gl@4.0 (#2394)
- e47ccc07 [fix] Re-enabled plugin section in home page (#2400)
- 81a6e1fa [fix] Update layer domain in addLayer (#2393)
- bed4b7f8 [chore] Removed abs paths in mock state and layer utils (#2392)
- f1e654d8 [fix] place null values at the end when sorting table (#2391)
- 4f51abc3 [chore] extra typing for effects (#2390)
- 459ae555 [chore] fix lint in cmpEffects (#2389)
- 87df1197 [feat] Effects: shadow color picker; use animation & current time (#2387)
- dde3a6e3 [chore] Fix ColorMap type (#2388)
- 08492a8a [chore] Export effects types/utils and incapsulate dnd logic into new hooks (#2384)
- 2500a277 [feat] reorder tooltips (#2378)
- fdecb052 [fix] minor effect-related fixes (#2380)
- 5c16027d [chore] Drag&Drop context: extra check for the object type (#2379)
- a958586d [fix] fix for process is undefined (#2376)
- 9eb6b328 [chore] bump examples (#2375)
## [3.0.0-alpha.1] - October 17 2023
- a3521948 [feat] introduction of deck.gl effects (#2372)
- c798961d [feat] Introduced dnd-context factory to better override dnd properties (#2364)
- 673646ac [fix] fix map dropbox share (#2370)
- ec0881d7 [fix] Fix react-map-gl mapbox api props (#2362)
- d0a86587 [chore] Avoid confusion in viewstate context (#2361)
- 1fcdfde9 [fix] fix image export (#2368)
- 89043bd0 [fix] Fixed load remote map dialog exception (#2367)
- 7f9f211b [fix] Improved validation of field pairs suggestions for LayerColumnConfig (#2359)
- fa1edab9 [fix] add autoCreateTooltips as a prop in AddDataToMapOptions (#2358)
- e8220b0e [chore] pass custom classes to ListHeader (#2357)
- 5a9fa5bd [fix] Stronger AnimationConfig types (#2356)
- a2fd52ca [fix] Fix mapbox/deck syncing issue (#2355)
- cfee75a2 [fix] Text labels: can't set prop to false/0 with multiple labels (#2354)
- 357f77a8 [fix] text outlines are barely visible after upgrade to deck 8.9 (#2353)
- 9d99f0b6 [chore] Upgrade deck.gl to 8.9 (#2352)
- 032ad763 [fix] Layer column config: sometimes a suggested field pair will hard crash (#2351)
- 56afb092 [fix] remove from field name when show in tooltip (#2350)
- a9181f69 [feat] Table widged: pass getRowCell as prop (#2349)
- 1f169df1 [fix] Improve data table horizontal overflow and dataset tabs overflow (#2348)
- f2559445 [chore] Bump react-virtualized (#2347)
- ced842ea [chore] Update public CDN URL (#2346)
- 6ef400d2 [Fix] Dispatch click event instead of click() (#2345)
- cf9cf21a [fix] Add guard for null legend label (#2344)
- b5405f52 [fix] serializeLayer fixes (#2343)
- 4383bffd [feat] Text layer: add outline width, outline color, background color (#2342)
- a59d8342 [Fix] Resize observer crashes when passed a non-Element target (#2340)
- ec35ea97 [feat] introduced jest to replace tape/sinon/enzyme for browser tests; upgrade typescript to 4.5.5 (#2339)
- 85fa66f3 [feat] Adding applyLayerConfig action (#2337)
- ae26de55 [fix] Fix website kepler.gl example (#2338)
- d14e7ff4 [chore] Updated more deps to be compatible with react 18 (#2335)
- 70128119 [chore] updated modal and panel title types to react 18 (#2334)
- a0e5db72 [chore] Upgrade to react 18 (#2323)
- 52c69c54 [feat] Add Deck onAfterRender callback prop support (#2332)
- 0b8ae8bc [feat] deck.gl render callbacks (#2330)
- 6596187b [fix] Remove fixed height for list item (#2331)
- bcd3ff1b [fix] dropdown in color scale does not work (#2324)
- 203829aa [fix] dropdown list alignment and spacing (#2325)
- ba6259d3 [Fix] polygon context menu is offscreen (#2326)
- 6fd7f7a9 [fix] When editing a custom basemap style do not unintentionally drop extra properties (#2327)
- b3472a37 [chore] Upgrade deck to 8.8.27, loaders to 3.4.14 (#2320)
- d9c164bb [Feat] Support WKB geometry column in CSV (#2312)
- cfada4d5 [Chore] delete typeahead mousedown listener, pass onOptionSelected to ListItem (#2319)
- 2714c755 [fix] fix horizontal "over scrolling" and misalignment of header row vs. data cells (#2318)
- d28674ea [feat] Add onMouseMove callback (#2317)
- 66a6364f [feat] add prop to allow turning off custom webkit scrollbar CSS (#2316)
- 69ce4d06 [Chore] export action creator (#2315)
- e051eb55 [fix] Fix map attribution color (#2314)
- 090ef0ba [fix] Conditionally apply escapeXhtml to prevent export image crash (#2313)
- 8bb0d469 Introduce new fsq studio section in home page (#2308)
- 3e39337e updated cdn from unfolded to fsq (#2307)
- 5bae745b [chore] drill disabled prop to layer-type-selector (#2274)
- b6a2b804 [feat] Edit a custom base map style redux (#2281)
- 74bc22a6 [feat] add complimentary base map style property (#2280)
- e056d01a [feat] Remove a custom map style from the base maps side panel (#2279)
- e09ed287 [fix] map style selector: provide backup UI content (#2277)
- 963df0cf [chore] Update SavedCustomMapStyle accessToken property to be defined as optional (#2278)
- 46df6014 [Chore] improved saved layer and interaction type (#2275)
- 2dff78ff [fix] Long field names in filter UI obscure the delete icon (#2273)
- 32356b46 [chore] pass through className prop to TippyTooltip (#2272)
- 52fb6844 [chore] Add nx module tag (#2271)
- b255d60e [chore] Add tooltip format (#2269)
- 7b45e4f1 [fix] collapsible layer config group ui improvements (#2268)
- a1689540 [chore] update browserslist deps (#2267)
- 5db83285 [chore] specify filter id in addFilter (#2266)
- a8599dcf [feat] Update custom map style updater to support managed map style (#2264)
- 84c07360 [feat] Support map overlays (#2260)
- 8312d060 [Chore] Upgrade to Node 14 (#2257)
- 23763f0b [Chore] Add layer header action component to deps (#2265)
- 043db65f [Chore] export single color palette selector (#2262)
- d362fc21 [feat] H3 Layer separate layer opacity into unique fill opacity and stroke opacity (#2261)
- a1084016 [fix] Use auto width for pinned column in table preview (#2259)
- c79e9f90 [Chore] rewrite stack overflow functions (#2258)
- 9d57f575 [chore] upgrade gl dependency version (#2256)
- 11242f01 [Chore] Added collapsed prop for layer config group (#2255)
- 8d79f7d0 [chore] export types and components (#2254)
- 4a659e84 [feat] H3 Layer: default text label anchor to middle position (#2252)
- acd05e91 [chore] export more components and types (#2251)
- f6be2491 [Chore] expose functions and types to fix deep import issues (#2250)
- 5fcbcdab [feat] H3 Layer: Add fill transparency and stroke color settings (#2249)
- 94cb2a15 [feat] Layer property additions: H3 Layer: Add text labels (#2243)
- 9ba6bcdd [Chore] add exports to expose functions and components types (#2242)
- 88dd4b36 [fix] exported image has a thin white bar at the bottom (#2241)
- f562fbe0 [fix] range slider doesn't work when step < 1 in dataset filter (#2240)
- fa3bb9c9 [fix] Overlapping column names in drop down menu (#2239)
- 796a9d29 [fix] time ticks are the same when using Minute to set interval (#2238)
- b9cd1ec4 [Fix] Map popover z-index less than size panel (#2237)
- 8de7ae41 [Fix] mapbox logo has not been styled correctly (#2236)
- ed5cb8ad [Chore]: Add onClickControlBtn prop to MapControlButton to pass additional callbacks (#2235)
- 97126155 [fix] Remove split map controls from legend in exported image (#2234)
- bc1cfc55 [Chore] use unfolded cdn for base map, layer type select and icon layer svg (#2233)
- 07f8c9f9 [feat] Add extraReducers arg to keplerGlReducer.initialState (#2232)
- a112c0e9 [Fix] Feature Action Panel menu and editing tooltip are cut-off in dual map mode (#2231)
- 7fb4cada [fix] Fix types for Typescript 4.8 (#2229)
- 41c80993 [Chore] Pass onBruch, filter and datasets through range slide to plot (#2220)
- f80853b0 [Chore] add test for vis state schema column save undefined typeerror (#2219)
- e1e165e6 [Feat] Added new options parameter to override single action reducer default behavior (#2217)
- 1c1345b4 [Bug] preserveLayerOrder when replace data (#2214)
- c06ceca7 [chore] Exported layer utils methods and added onDragStart onDragEnd props (#2210)
- 7d3c6026 [fix] Fixed bug when switching to dataset layer view (#2209)
- 2275b8e6 [chore] Make dataId non-optional in layer config (#2205)
- c130a2f5 [Fix] vis state schema column save undefined typeerror (#2211)
- d8a5defa [Fix] ColorBlock component TypeError: e.color.slice(...).join is not a function (#2212)
- 1380644f [Fix] time widget animation: apply same duration for last time filter (#2218)
- 1094e734 [BUG] fix dropdown list fail to update when prop change (#2213)
- dafec9b8 [Chore] add exports for scenegraph to layers index (#2215)
- 14c6d014 [chore] layer testing support (#2216)
- e5686fda [Bug] Fix composer types, schema types (#2208)
- 28fbcdbf [feat] Convert layer order from idx to layer IDs (#2203)
- e1ccfdff [Enhancement] Allow empty column when layer created from config (#2206)
- 30792f47 [Fix] Add selected style for light dropdowns (#2207)
- 44aafd15 [Feat] add kepler.gl to info.source in exported kepler.gl.json (#2195)
- 95fd2369 [fix] Empty cells with date time data are filled with Invalid date (#2201)
- 3b73dc07 [Feat] Add display format setting for table/tooltip (#2199)
- 87b79c3b [Feat] add replaceDataInMap action (#2198)
- e9896def [Feat] add table config with custom number format (#2192)
- e635e4cb [fix] Fixed crash when switching to dataset layer view mode (#2191)
- a246574e [Fix] Auto-display legend in split mode + Fix legend and layer panel bugs (#2190)
- 2d141ff5 [fix] Layer drag and drop label is barely visible on light map (#2189)
- 70cde834 [Fix] Drop the same layer multiple times to one map (#2188)
- 2f5da5ec [Chore] Removed unneeded preventDefault (#2177)
- b364f3d8 [Fix] intervals rendered incorrectly in time widget (#2183)
- c8475737 [feat] Create layer correctly from saved layer config (#2179)
- 4c6e99e3 [fix] previous drawn-selected geometries are lost after click Select geometry (#2175)
- 79d8c756 [fix] support Polygon and LineString mode in idToPolygonGeo (#2182)
- 85897309 [Fix] hide pinned selection outline when layer is hidden (#2181)
- d441d5fd [feat] three dots button change (#2180)
- 4dd27abe [Feat] Drag and drop interaction for split map (#2172)
- 485252ad [fix] Improved split+unsynced mode for better handling (#2176)
- 90572720 [fix] handle undefined values in updateViewport (#2178)
- afee4800 [fix] hide side panel close button when data preview is open (#2174)
- 695bcccd [feat] Improve disabled zoom lock text styling (#2173)
- 9fc98e86 [Feat] Unlocked split map viewports (#2170)
- 8896dc13 [fix] fix visible layers toggle for split maps mode(#2168)
- f0727c97 [fix] type fixes for map popover (#2169)
- 04451827 [Feat] enhance mouse selection toolset (#2164)
- f640822a [Fix] round the float number to up to 4 decimal places in table (#2163)
- a41e0118 [Chore] Add more types for schema (#2162)
- 502c1ba3 [fix] remove duplicates from changelog (#2145)
- 7d996a68 [fix] Fix onViewStateChange callback (#2154)
- 2e57238b [chore] Type and export fixups (#2152)
- 245ac53b [chore] update filter types (#2153)
- ce4e5c7e [Fix] Datasets and basemap attributions separated by "|" (#2150)
- 1fd7bad0 [Fix] Datasets attribution width styling (#2149)
- 06f085db [Feat] render dataset attributions in map container (#2148)
- 425a6011 [chore] ts fixes (#2147)
- abb0d1ce [fix] improve handling of "interpolate" mapbox colors during basemap switching (#2144)
- a6a6b270 [fix] fixes to async merger (#2139)
- 9d568af3 [Feat] Support async mergers (#2129)
- 28c34901 [Chore] support offset in map legend panel (#2130)
- 953711ac [feat] Introduced updateDatasetProps to update dataset information (#2133)
- 332a94ad [Feat] Add arrow and light theme props to TippyTooltip (#2140)
- c79896be [Chore] Export LayerGroupColorPickerFactory from kepler-wide components (#2138)
- bf890fa9 [chore] Update react-modal version (#2131)
- def2ce12 [fix] Basemap overlay blending updater must pass through entire payload (#2137)
- e2848008 [Feat] Add "No Basemap" option with map background color control (#2136)
- 5cc6faab [fix] fixes the logic to set map overlay type properly when switching layer type (#2135)
- f605167f [Chore] Request map styles on demand (#2134)
- fb829922 [Feat] Add list toggle to filters (#2115)
- 20fcb662 [Bug] Object and array field types made numeric (#2127)
- 31e44350 [Chore] export LayerTypeListItem type (#2122)
- 390f5af8 [chore] changes to order layers by datasets (#2114)
- 210af2b4 [fix] remove constant scroll around layer config group (#2116)
- a438383b [feat] Add minZoom, maxZoom, maxBounds (#2124)
- 0e5a4bbc [Bug] data modal and data table scrollbar style (#2123)
- cdb69f4a [chore] Export parseGeoJsonRawFeature from utils (#2121)
- 3d5db39e [feat] add support for object and array field type (#2120)
- 1f20ef71 [Feat] Introduce MapPopoverContent (for tooltip charts) (#2119)
- 918aaf98 [Enhancement] Render data table with smarter cell size, prevent scroll back (#2117)
- b1d92c85 Bump ua-parser-js from 0.7.25 to 0.7.33 (#2112)
- 630e8ede [Enhancement] Improve Feature action panel style (#2099)
- 20134f01 [fix] Fixed time filter toggling and display the correct filter (#2098)
- 83673fd5 [chore] bump nebula; add picking width for polygons; preserve rectangles; (#2097)
- eeb50d6a [fix] Checking if drawing is active when delete an editor feature (#2093)
- d1abf3ee [Enhancement] Fix dropdown list disabled color (#2094)
- 943ee50a [Bug] fix update layer type reset layer dataId, new layer at the top (#2096)
- ac5f490e [fix] fix layer config group collapsible content overflow (#2092)
- 608fa0f3 [Feat] refactored AnimationControl to handle both layer and minified filter playback (#2079)
- 409db23e [fix] CSS fixes to avoid conflicts with Jupyter styling when embedded without iframe (#2095)
- e1b70000 [Enchancement] number formatting improvements (#2109)
- cf8d3321 [Enchancement] number formatting improvements (#2106)
- c9cc689c [fix] use dataset name as default h3 layer name (#2100)
- 7f01ca1c [fix] Trip Layer: issues for path from 2 points (#2101)
- 92bae8e0 [fix] Icon Layer - Labels are visible even if layer is hidden (#2102)
- 47cc281c fix: Open map control and geocoder for extension (#2103)
- 0cd0e379 [fix] Improve render cell size script perf for data table rendering (#2104)
- 4e06992b [Fix] Image export change resolution (#2105)
- 7d9d54b8 [Feat] Map overlay blending (#2086)
- f4329fcc chore: more specific error message for context lost error (#2090)
- 14ef4366 [Feat] Disable a layer after an error in Deck (#2072)
- d24ea4a5 [fix] dont show hidden layers as options in polygon dropdown menu (#2085)
- fd3a7a8b [fix] Prevent the app from crashing on geojson layer hover (#2087)
- a66f98f9 fix(filters): fix for broken filter state, load crash (#2069)
- 47b1124d fix 3d buildings rendering (#2080)
- 8edb5b2e [fix] lock react-vis version to prevent CI fails (#2082)
- 9416be4a save and merge editor features in map config (#2071)
- 217b89e7 chore: Child support and type exports for FeatureActionPanel (#2070)
- f53188b9 show filtered out and hidden layers as options in polygon filter menu (#2068)
- b53a6b75 [fix] Move FeatureActionPanel to class component (#2067)
- 0f7a4242 fix Cant right click on polygon or rectangle filters to get the menu (#2066)
- db549742 bump licence year to 2023 (#2073)
- a22e4259 [Feat](Editor) Replace react-map-gl-draw with Nebula.gl (#2054)
- 3de77995 [fix] fix import in demo-app carto provider (#2050)
- 3e7581b1 [Feat] Add hasStats prop to data table adjust first cell size (#2040)
- 15d1426e FIX: Fix margin for style panel icons (#420) (#2041)
- a865ce8b [fix] correct provider downloadMap type (#2049)
- c53d81fd Bump moment-timezone from 0.5.33 to 0.5.35 (#1966)
- efa32f75 [fix] include CenterFlexbox in common components (#2035)
- 5f3d185f correct @kepler.gl/styles types file location (#2034)
- 76e1a4d0 [fix] Updated dataset item cursor style (#2013)
- d0bcaa89 [Fix][perf] String filter freezes browser when loading a large dataset (#2012)
- 1214bd9d [fix] Time filter: Add padding if min/max values are the same (#2011)
- 36657380 [fix] Fixed hex tile play animation (#2010)
- 6c266665 [Fix] dropdown item title (#2009)
- 81fcbb41 Bump loader-utils from 1.4.0 to 1.4.2 (#2025)
- f1b7e1a8 [Fix] no aggregation options can be selected for date field when groupby (#2008)
- b9a04468 [Feat] Replaced filter enlarged with view: side | enlarged | minified (#2007)
- 6692585e Handle loading map style gracefully (#2005)
- 920659ff Add header cell stats control toggle (#2004)
- dbba7daa [Chore] bump and fix examples for v3.0.0.alpha.0 (#2030)
## [3.0.0-alpha.0] - November 5 2022
- 4eb6b24b [Chore] dependencies update + publish process update (#1978)
- 72f201c9 kepler.gl-jupyter: Fixed wording in documentation (#1938)
- 791bbe21 [Feat] make data table header cell overridable (#1995)
- 77ba9509 deck upgrade fix (#1997)
- 9b483b22 better regex for mapbox style boundary detection (#1996)
- 306da3a2 add onClose for color picker (#1992)
- 13bcaa06 update isRGBColor (#1991)
- 2845432e Moved animation control button to the right (#1990)
- 51a05ffe color picker crashes studio inside iframe (#1989)
- 73dba52e [Chore] Extra memoization for components to prevent re-rendering (#1988)
- 4e88e839 [Bug] "load from storage" and "Share" modals fix (#1976)
- 9029b8ea [Feat] Hide Mapbox attribution when using non-Mapbox tiles (#1975)
- d77ffcb4 [Feat] Improve fieldpair detection logic, add altitude (#1968)
- b70c35c2 [Chore] refactor dynamic require (#1971)
- 8878cff4 [Fix] polygon filter reload (#1970)
- ea738594 [Chore]: Typescript 4.4 fixes (#1957)
- 49321f87 [Feat] mobile bottom widget styling (#1930)
- db39b496 [Chore]: Technical: Isolate components (#1967)
- 90248326 [Chore] remove iconComponent from interactionConfig (#1973)
- 64542aa2 [Chore] bump to deck 8.6.0 (#1959)
- ab5f9f33 [Fix]: Item selector closeOnClickoutside conflict with portable (#1958)
- 9b81e49f [Chore]: Technical: Isolate schemas (#1962)
- 57dea6a3 [Chore]: Technical: Isolate reducers (#1961)
- 28578e76 Import for filters fixed (#1965)
- 359e0387 [Bug] Fix getSampleData import (#1964)
- c2cb8213 [Chore]: Technical: Isolate table-utils (#1949)
- af79e2e5 [Bug] fix layer order not correctly reloaded (#1956)
- 47a184c6 [Bug] Fix Range brush maximum update exceeds crashes (#1955)
- f9485018 [Enhancement] improve tooltip format label, make it more intuitive (#1954)
- a42aae33 [Enhancement] use portable in item-selector (#1953)
- 6e2fe3dd update layer selector types; get length for dc; (#1951)
- 0630c8b7 fix deck.gl version for src utils (#1950)
- d5f0f0cf [Docs] fix broken link (#1952)
- 5e20ac68 [Chore]: add class names to map control (#1940)
- c7ed4dbd [Chore]: change types for modal (#1939)
- f53117fb [Chore]: pin browserlist (#1935)
- 8ea93d40 [Chore]: Technical: Isolate actions (#1948)
- f828f695 [Feat]: Passing root context to tippy
- 34ebb889 [Chore] Fix debounce typing
- 3db186e5 [Chore] bump deck to 8.5.7 (#1934)
- 99b38d26 [Feat] Implemented new feature flag by passing features flags prop (#1933)
- 50eda73f [fix] 3d buildings aren't rendered without layers (#1931)
- f21afd8d [Chore]: Technical: Isolate tasks (#1941)
- 88039cd3 [Chore]: Technical: Isolate cloud-providers (#1942)
- a98a015b [Bug] Fix getSampleData util import (#1947)
- 4615c480 [Fix]: Kepler.gl site issue fixed (#1944)
- f2459c6c [Chore]: Technical: Isolate utils (#1876)
- 88e15d5e [Fix] fix lint (#1932)
- 3301a7c5 [Chore]: bump deck to 8.5.4, loaders to 3.0.9 (#1928)
- 0889d0d1 [Enhancement] (Map Control) use lazy tippy to improve map legend rendering perf (#1924)
- 82baedfb [Chore](Types) move howto button out, add layer conf types, yarn lint (#1926)
- c9ef6972 [Chore]: extra export (#1925)
- 4fc85960 [Chore]: layer-utils, map-utils refactor (#1923)
- 5c38f851 [fix] prevent deck crash due to layer id duplicate
- fb3f35ba [Chore]: Use relative import in test-utils (#1921)
- eff5f902 Map Control: Use MapControlTooltip with TippyTooltip (#1920)
- 5551abd6 [chore] Export IconButton type (#1919)
- d358b3a8 fixed findMinFromSorted when list is null (#1918)
- 3a3be58d [Chore] Upgrade to deck 8.5.2 (#1917)
- 20d39b8c [Enhancement] add bin to filter hiitogram construct (#1673)
- 41414ceb [Enhancement] change export video playback button order (#1916)
- 38734422 fix color pick type using react-color types (#1915)
- f739a499 chore: Updated filter-selector, item-selector, range-slider file typescript definitions (#1902)
- 40ac3068 [chore] test valueAccessor in field (#1906)
- f82494d6 [Feat] Use custom style token if available instead of the default token (#1913)
- 77dc2560 [BUG] Fix crash after layer type change (#1912)
- ac59ac7d [Bug] rename dataset should not use spread (#1911)
- 486e3239 Prevent "Cannot read property 'layers' of undefined" error (#299) (#1910)
- fae2058f [Bug] Fix map saved with empty filter cannt be load; validate empty filter.name when merging (#1909)
- 26b5f849 add type to keplerTable (#1905)
- bec013e5 improve reducer updater typing, change visstate to be more relaxed (#1908)
- 6c51a2ae [feat] Hubble gl integration (#1899)
- d31fe649 [Bug] Fix mouse event evt.point evt.lngLat undefined crash (#1903)
- 39427d46 [Bug] fix trip layer timestamp check (#1904)
- cb76ae0f [Enhancement] render warning in layer panel header (#1901)
- 9d171c60 [Enhancement] set initial layer config when set layer type (#1898)
- 8d35d9b8 [Chore] Export more type def (#1890)
- d90cd188 [Chore] fix types and missing import (#1891)
- 28cbb759 update shader modifications for deck 8.4.16 (#1892)
- 66de62cf Fix crash: visualChannels: Cannot read property label of undefined (#1886)
- 57f77dd2 deck to 8.4.16 (#1889)
- 41dbd570 [Enhancement] add disableDataOperation to dataset (#1897)
- 1f5e26c8 [Enhancement] pass schema to processKeplerGlDataset (#1885)
- 156f898b [Bug] fix comparison tooltip color and position (#1887)
- 6c99bb04 [Bug] Disable layer copy when layer is invalid (#1882)
- dfd73a53 add supportedDatasetTypes to layer, show dataset selector even if there is only 1 or no option (#1883)
- 40a82dfa [Enhancement] disable layer column selection if empty (#1888)
- 9c042fe5 Bump follow-redirects from 1.13.3 to 1.15.1 (#1871)
- 2a55a1e3 [Enhancement] Improve style of layer header panel (#1881)
- ceb23e21 fix for cluster layer z-fighting; fix - render 3d building map style only once (#1874)
- a983be75 [Bug] allow tooltip format to apply to aggregation layer hover (#1872)
- 723e6050 FILED_TYPE_DISPLAY -> FIELD_TYPE_DISPLAY (#1879)
- 7d328315 Chore: Fix lint script and issues (#1862)
- 940f9aad [Chore]: Technical: Isolate styles (#1861)
- ad7646ac [Chore]: Technical: Isolate localization (#1858)
- e798f317 Middleware isolation (#1860)
- 6c178d77 [Chore]: Technical: Isolate processors (#1857)
- 9e315d25 [Chore]: Technical: Isolate layers (#1856)
- c1e20348 [Feat] Upgrade deck.gl@8.4.11 luma.gl@8.4.3 loaders.gl@2.3.12 (#1674)
- b668fd28 [Chore]: Technical: Isolate deckgl-layers (#1851)
- 9feddc66 Fonts issue fix (#1846)
- 9a3da3c0 [Chore]: Technical: Translate deckgl-layers/cluster-layer (#1815)
- 10868ecf [Chore]: Technical: constants and types modules isolation (#1840)
- fe293e71 [Chore]: Technical: js to ts convertion components root modals (#1801)
- 55abc874 [Chore]: Technical: Notification item types added (#1824)
- bd8c3327 [Chore]: Technical: Translate map components to typescript (#1803)
- 371649c6 Debounce typings added (#1825)
- 1034c33d Lodash.memoize typings added (#1827)
- 69f8534d [Chore]: Technical: fix linting errors of @types/styled-components plugin (#1834)
- 5ee0cd4f [Chore]: Technical: add types for side panel root components (#1822)
- 9bee093e validate url of Add data modal (#1837)
- b7d8edf4 [Chore]: Technical: add types for layer panel components (#1819)
- 7b95c236 hide layer size legend with nullish label (#1836)
- ecc743af [Chore]: Technical:layer base config data allow to be null (#1835)
- 2b51c7bb [Chore]: Technical: Fixed errors happening in folders/files due to the addition of @types/styled-components: components/common/slider (#1831)
- e27cf134 [Chore]: Technical: fix attributes of styled components animation-control (#1829)
- 442d1b23 [Chore]: Technical: add types for filters (#1809)
- fc8ab5af [Chore]: Technical: Translate deckgl-layers/hexagon-layer (#1818)
- 959f1e0b [Chore]: Technical: Translate deckgl-layers/grid-layer (#1816)
- cbd26743 add types for styled components in styles (#1830)
- f7715892 [Chore]: Technical: Translate components to typescript (#1814)
- a5a347ba [Chore]: Technical: Translate components to typescript (#1812)
- 9225e005 Throttle typings added (#1826)
- f0671f06 [Chore]: Technical: add types for editor component (#1797)
- 4e8197d5 [Chore]: Technical: add types for processors (#1798)
- 47e4963e [Chore]: Technical: add types for side panel common (#1807)
- 0d3c98c8 [Chore]: Technical: add types for filters side panel (#1799)
- 8c5e5075 [Chore]: Technical: Translate layers final changes (#1783)
- e663bb16 [Chore] fix typo in docs (stule -> style) (#1823)
- 2d557df3 Typings for some lodash packages added (#1817)
- ca45cef8 [Bug] validate s2 token in s2 geometry layer (#1805)
- 7453b951 [Chore]: Technical: components/geocoder translated to typescript (#1808)
- 5b918e00 Review fixes (#1813)
- ae1173ec [Chore]: Technical: Translate deckgl-layers/layer-utils typesfix (#1791)
- 6a7d44bc [Bug] Build fix (#1811)
- 8ac5bbc6 [Bug] visual channels cannot read property 'label' of undefined (#1804)
- b7c6c8df Translate deckgl-layers/3d-building-layer to .ts (#1794)
- a5bcd814 [Chore]: Technical: Translate root components to typescript (#1790)
- 258c82da add types for svg-icon-layer (#1796)
- 0de32bec [Chore]: Technical: Translate deckgl-layers/line-layer (#1792)
- 013b9878 [Chore]: Technical: Translate deckgl-layers/column-layer (#1793)
- f64b551f [Chore]: Technical: Translate tasks (#1779)
- 65228a85 [Bug]: fix grid hexbin and cluster layer crash (#1795)
- 7ada98a0 [Chore]: Technical: Translate examples/custom-map-style (#1780)
- 84312384 [Chore]: Technical: Translate deckgl-layers/layer-utils (#1789)
- ec3351b6 [Chore]: Technical: Translate cloud-providers (#1778)
- 24e3549c Added deckgl-typings from community repo (#1787)
- 68abc5b5 [Chore]: Technical: Translate geojson-layer (#1757)
- 2d2ba1d7 [Chore]: Technical: Translate hexagon-layer (#1775)
- 543045d0 [Chore]: Technical: Translate heatmap-layer (#1773)
- cf57260a [Chore]: Technical: Translate trip-layer (#1777)
- e80c18b1 [Chore]: Technical: Translate line-layer (#1776)
- 9a0ad623 [Chore]: Technical: Translate cluster-layer (#1774)
- bc18a6c4 [Chore]: Technical: Translate scenegraph-layer (#1768)
- 831504f9 [Chore]: Technical: Translate icon-layer (#1763)
- b87bba3a [Chore]: Technical: Translate grid-layer (#1761)
- 079da4cc [Chore]: Technical: Translate h3-hexagon-layer (#1762)
- cd05dd4b [Chore]: Technical: Translate point-layer (#1764)
- 0b3f2c0c [Chore]: Technical: Translate s2-geometry-layer (#1765)
- 18342926 [Chore]: Technical: Translate mapboxgl-layer (#1755)
- 9b695f85 [Chore]: Technical: Translate aggregation-layer (#1753)
- 13ba6bb7 [Chore]: Technical: Translate arc-layer (#1749)
- a3ada4e9 UN-14 Technical: Translate components/[root files] to typescript: side-panel (#1712)
- fb2190f1 [Bugfix]: Fixed Babel configuration (#1754)
- d9e9d8aa [Chore]: Technical: Translate layer factory (#1748)
- c0f75341 [Chore]: Technical: Translate components/common final part (#1750)
- b06dfb1c [Chore] Typescript 'components/common/slider' (#1740)
- 0057a1e4 [Chore]: Technical: Setup for different Visual channels per layer (#1751)
- 1193258b UN-14 Technical: Translate components/[root files] to typescript: maps-layout (#1713)
- 8a06f711 Moving bottom-widget to ts (#1710)
- dd14702e [Chore]: Technical: Translate base-layer (#1746)
- 4a687ed4 [Chore]: Technical: Translate index and other files (#1745)
- 7a11260d [Chore]: Technical: Translate table utils (#1742)
- 7ee74ebe [Chore]: Technical: Translate filter-utils and gpu-filter-utils (#1744)
- e5d5d1ba [Chore]: Components/common 1st part (#1729)
- d8abca9d [Chore]: Technical: Translate utils (color and data) (#1732)
- 55a7b510 [Chore]: Technical: Translate utils (dataset-utils and export-utils) (#1734)
- 0505fda4 [Chore]: Technical: Translate redusers (vis-state) (#1727)
- 5304d4dc [Chore]: Technical: Translate utils (files without d.ts typings) (#1728)
- 30616984 [Chore]: Technical: Translate redusers (UI-state and provider-states) (#1726)
- 2ba94858 [Chore]: Technical: Translate actions to typescript part 2 (#1725)
- e36cac5b UN-12 Technical: Translate redusers (main files) to typescript (#1722)
- fb170ae0 [Feat]: Technical: Translate actions to typescript (#1704)
- cb542853 UN-13 Technical: Translate schemas to typescript (#1721)
- 8121893c [Feat]: Technical: Translate redusers (map-state and map-style) to typescript (#1717)
- fbe626be [Feat]: Technical: Translate redusers (composers and combined-updaters) to typescript (#1711)
- d8d7e44f [Feat]: Technical: Translate localization to typescript (#1705)
- 614a5003 [Feat]: Technical: Translate templates to typescript (#1702)
- 0ef5ccd8 [Feat]: Technical: Translate middleware to typescript (#1703)
- 20ec6666 [Feat]: Technical: Translate styles to typescript (#1701)
- 11c5b4cc [Feat]: Technical: Translate constants to typescript (#1697)
- 283586d0 [Feat]: Technical: Translate connect to typescript (#1700)
- 995f3f93 [Feat]: Setup build process for ts source code support (#1688)
- b71dd6b4 [Chore] Update license year 2022 (#1689)
- 0dfc7e1b [Bug] fix filtered datasets memoization (#1678)
- 1e8b3c1a [Enhancement] order layers by dataset (#1675)
- f9ae108a [Enhancement] extract layers list to a separate component (#1665)
- 52993525 [chore] export types, add script to build types (#1636)
- 6fb00fa0 [Bug] fix pin table column overide dataset (#1625)
- 22ea7a9d [Bug] do not display geocoder dataset in side panel
- a20db971 [Feat] allow custom value in layer slider (#1631)
- 5e6b1c45 [Bug] allow empty data rows (#1624)
- 612e18a9 [Feat] support pin map legend in map control (#1614)
- bfcce3fd [Enhancement]Allow changing MAX_DEFAULT_TOOLTIPS (#1627)
- a810ee13 [Chore] added more properties to export layer type (#1613)
- 0931a55c [Enhancement] Render map control tooltip with TippyTooltip (#1612)
- d0fb78de Add registry-url to avoid 404 issue when publishing keplergl npm package (#1623)
- 9936b7b7 [Feat] add color picker to dataset tag (#1608)
- 3e3d1631 [Jupyter] Update example versions
- 5b442c5d [Jupyter] keplergl==0.3.2 (#1619)
- a56206c8 keplergl-jupyter v0.3.1
- e12039c6 [Feat] Add Copy Button to Export Map Dialog (#1609)
- 3f876ac1 [Jupyter] bump kepler.gl js version release keplergl-jupyter=0.3.1 (#1617)
## [2.5.5] - September 12 2021
- 392e9a21 [Bug] lock deck.gl to 8.2.0 (#1602)
- 6121a343 [Chore] Fix explicit src import (#1596)
- 0b71f399 [Bug] fix locale panel (#1603)
- 8b42be29 [Bug] Fix integration with CARTO (#1600)
- e8ba7a05 [Feat] add setMapControlVisibility action to set mapControl visibility (#1590)
- 78274562 [Feat] add supportedFilterTypes to dataset (#1594)
- 41b364a6 [Enhancement] s2 updateLayerMeta: push instead of spread (#1593)
- 1b5e0235 fix for long processing time of data-utils::unique (#1592)
- 91a52b16 [Enhancement] Use layer.visible prop in deck.gl when toggle layer visibility (#1591)
- c106ee06 [Chore] Create factory for LayerLegendHeader and LayerLegendContent (#1589)
- 878750c4 [Feat] Add MapsLayoutFactory for custom split map layouts (#1588)
- d8db8f6f [Chore] Refactored map control and decoupled action components (#1552)
- 2f8b19f2 [Feat] update keplergl-jupyter widget for JupyterLab 3, add build for conda-forge (#1572)
- 6947c8c8 [Feat] Added Russian localization (#1570)
- 9726a400 [Docs] Data container upgrade notes (#1575)
- 070b04b2 [Feature] Abstract Data Container (#1555)
## [2.5.4] - July 31 2021
- 62d03ab2 [Examples] update replace-component example (#1557)
- 089bb7a9 [Jupyter] Make showing User Guide link optional for jupyter widget (#1559)
- 5985d201 [Bug] Fix screenshot with images (#1558)
## [2.5.3] - July 18 2021
- a4a6734a [Docs] fix add data to map docs (#1551)
- 8524061e [Enhancement] add displayName to field and show displayName whenever available (#1538)
- a0d2a76b [Feat] Save and load highlightColor from layer config (#1550)
- a9b2ba07 [Examples] fix panel toggle exmaple, add layer hove info demo (#1549)
- 9bcb3415 [feat] Using tippy for map popover (#1539)
- 2e6f8b79 [Chore] refactored side-panel from class to functional component (#1536)
- 16fab11c [Bug] Geojson layer is not updated when dataset updated (#1533)
- 29cf0829 [Enhancement] add toggleLayerAnimationControl action (#1537)
- 01e93966 [Enhancement] add disableClose to map control (#1529)
- c6e5b8a6 [Feat] use appName in exported image html json map and csv data (#1528)
- 72354560 [Bug] Fix geojson layer duplicated index (#1530)
- 1ed0fd6d [Bug] fix histogram in range (#1531)
- 305edfcd [Docs] Update Map Styles Link (#1512)
- 1890133d [Chore] Update peer dependencies for styled-components (#1527)
## [2.5.2] - June 28 2021
- 1c7521b1 [Bug] Fix center map accuracy (#1502)
- b662892a [Bug] trim string value before passing to type analyzer (#1503)
- d35ad489 [Website] Add ecosystem Section (#1491)
- 1935c70a [Chore] Bump ini from 1.3.5 to 1.3.8 (#1385)
- b7d333b4 [Chore] Bump y18n from 3.2.1 to 3.2.2 (#1449)
- aeb8b45a [Chore] Bump ssri from 6.0.1 to 6.0.2 (#1460)
- 86577263 [Chore] Bump ua-parser-js from 0.7.22 to 0.7.28 (#1471)
- f0fda0e4 [Chore] Bump handlebars from 4.7.6 to 4.7.7 (#1472)
- 027aecfa [Chore] Bump url-parse from 1.4.7 to 1.5.1 (#1473)
- 6d5981a0 [Chore] Bump hosted-git-info from 2.8.8 to 2.8.9 (#1474)
- 54690fc8 [Chore] Bump browserslist from 4.14.7 to 4.16.6 (#1494)
- 846ec388 [Chore] Bump dns-packet from 1.3.1 to 1.3.4 (#1497)
- c6def591 [Chore] Bump ws from 6.2.1 to 6.2.2 (#1500)
- 614750f4 [Feat] Make keplergl-jupyter work with JupyterLab 3 (#1501)
- b4fcf7be [Feature]: add copy geometry to feature action panel (#1495)
- d786d0f3 [Bug] fix arc layer configurator render crash (#1490)
- b24cc57a [Enhancement] Support elevation in Icon layer (#1483)
- d51f3050 [Enhancement] Support elevation in Line layer (#1481)
- a09cd589 [Enhancement] Elevation zoom factor toggle (#1478)
- 8a6d2635 [Enhancement] add Japanese translation (#1469)
- 910eb5e7 [Chore] Move 'uber-licence' to devDep (#1450)
- 0b03f3a6 [Docs] fix typos on playback readme (#1482)
- 14c35fc0 [Doc] Add example using none mapbox base map (#1440)
## [2.5.1] - Mar 30 2021
- 16703c0b [CHORE] add utils.js to package.json
- a15109b3 [Feat] add timezone and timeFormat prop for time display in animation control and time - widget (#1411)
- 13c6171e Bump elliptic from 6.5.3 to 6.5.4 (#1435)
- cdcc0eea [Enhancement] make panel tab a factory (#172) (#1412)
- 173811a3 [bug]: Fixed range slider null selection bug (#1413)
- df3fee5c [Bug]: Updated babel dependencies (#1410)
- 119c8933 [Bug] fix update dataId not update layer data (#1414)
- b97b58a9 [Enhancement] Choose the default field to be integer if no reals are present (#1409)
- 072876df [bug] upgrade colorbrewer to 1.5.0 (#1439)
- d4698bb8 [Chore] add initial version of ts-smoosh (#1437)
- 6b39c43f [Chore] reformat changelog
## [2.5.0] - Mar 3 2021
- 58af5b65 [bug] Set colorbrewer version to 1.4.0 #1416 (#1428)
- a03250a4 CHORE: export processKeplerglDataset (#1422)
- ddaa8bf7 FIX: incorrect type strin -> string (#1421)
- 9e5bfdca [Feat] Duplicate layer and add layer from config (#1401)
- 29bfa406 [Bug] Interval animation doesn't stop when speed is set to 0 (#1397)
- 9476c293 feat: Converted dataset object to kepler table class (#1239)
- 498305cc [Bug] save to map provider (#1399)
- 6728b30f [Bug] Clamping slider values outside range (#1395)
- f0e51743 [Enhancement] add changedFilters to datasets when filter data is called (#1396)
- 8d68001d [Bug] Add style prop to kepler-gl container (#1398)
- d295c762 [Enhancement]: Save filter speed to schema (#1394)
- fb801d70 [Chore] Update license year (#1393)
- fa6deff0 (0116-babel-deps) [Enhancement] Show an error notification for errors in deck (#1373)
- 5d4b4547 [Bug] Bug fixes (#1388)
- 35bf90a9 [Bug]: FIxed issue with map popover object being null (#1384)
- fc2fb04d [CHORE] Typescript fixes (#1383)
- d6e28377 [Bug] Fix 12350 format in tooltip (#1327)
- 2ea82deb [Feat] fixed augumented numeric formats with ~ (#1369)
- e88b4f19 [Bug] Fix speed button input on timeline (#1376)
- 7aeca210 [Enhancement] bump loaders.gl to 2.3.3 (#1366)
- eff0a15d [Enhancement] Choose layer color by default (point layer) (#1367)
- 823405ab [Bug] fix arc layer configurator (#1375)
- a11c63c3 [Enhancement] avoid calling mapPopover setstate infinitely (#1346)
- ae234e72 [Bug] Prevent crash in react-map-gl when zoom cannot be calculated (#1365)
- be61b70b [Enhancement] automatically re-project GeoDataFrame to EPSG:4326 (#1350)
- 2aad97f3 [Bug] Added better check for bins in bottom widget (#1361)
- ef8bdbaf [Chore]: Upgraded to node 12, migrate from TravisCi to Github actions (#1326)
- c7726680 [Enhancement]: Added uiStateUpdater showDatasetTable in order to intercept showDatasetTable action (#1363)
- f33c76b4 [FEAT] Add rename dataset reducer (#1362)
- 027985af [Bug] Fixed color picker closure when selecting first custom palette value) (#1347)
- 7f3be27f [Enhancement] check bounds before calling fitbounds (#1348)
- f046ac1b [Enhancement] better arc layer column config layout (#1345)
- 2ea853b1 [Bug] Fixed bug with fixed radius after remove size field in pointlayer (#1343)
- 32d80182 [Bug] fixed geocoder crash and added ability to pass coordinates (#1342)
- c2ba7f04 [Enhancement] Fix negative button border (#1344)
- 55f74dcd [Enhancement] added check for oldLayerData (#1357)
- 223af2b6 [Enhanment] extract valdiate layer and validate filter function (#1349)
- 06ea669d [Enhancement] pass dataset to renderLayer function (#1341)
- 524fc591 [Feat] Visual channel refactor generalize get accessor and updateTrigger (#1338)
- c1d4943b [Enhancement] Adjust input light styles (#1340)
- 5642ca8b [Chore] SidePanel panels are now passed through only through props or default ones (#1339)
- f802f393 [Chore] Decouple table from dataset Id (#1337)
- c7f50fdc [Chore] Export KeyEvent and downloadFile utils (#1335)
- 335f82a3 [Enhancement] Added the ability to pass supported data types when exporting (#1336)
- 239051f0 keplergl==0.2.2
- 55053230 keplergl-jupyter@0.2.2
- 1bac01ab update example app versions
## [2.4.0] - Nov 30 2020
- 259022ee [Upgrade] Support React 17 (#1323)
- 6c48c422 [Enhancement] Export more utils (#1317)
- 81bc6b37 [Enhancement] make provider injector function to get injectedApp back (#1318)
- 5e2b8988 [Enhancement] update spanish and catalan translations (#1319)
- 334f0b76 [Enhancement] extend template for light theme (#1305)
- abbe032e [Chore] Dependency upgrade (#1314)
- f0a966cd [Bug] check category (#1316)
- 7f5282b4 [Feat] add incremental timeline animation (#1315)
- c1a251de [Enhancement] make visConfigSwitch a factory (#1313)
- 37cf1457 [Enhancement] Enable polygon filter on h3 layer (#1306)
- bdbea264 [Feat] allow changing dataset in layer config (#1312)
- 28f5204d [Bug] fix radio button style (#1310)
- c990a477 [Enhancement] Upgrade d3-scale (#1311)
- ea69da8a [Enhancement] fix item-selector dropdown value overflow nad tooltip pin color (#1309)
- d94de814 [Chores] Exported default formatters (#1308)
- 307cd3d4 [Bug] avoid duplicated h3 layer detection (#93) (#1307)
- 8bc11a37 [Enhancement] Add inputBGdActive for light theme (#1301)
- 3f0f7a6c [Bug] Check for valid layer pinned prop before performing comparison (#1297)
- 42acc1cf [Bug] Fixed bug when reversing color schema (#1296)
- 9949888f Table of content -> Table of contents
- 9a13ce68 [Chores] Fixed security vulnerabilities and added new factories (#1294)
- 3276cef3 Merge branch 'upwards_update'
- 70687cab [Docs] Add usage example in doc for _repr_html_ method (#1282)
- 32b519af [Chores] Updated yarn.lock and file license
- aecbdc55 [Bug] Fixed typo in renderedSize cell-size (#90)
- 9f8b84e1 upgrade react-palm to 3.3.7 (#89)
- 7410cfa5 [Enhancement] Disable layer select option when no data is loaded (#88)
- 7a69c865 data table style tiny adjustment
- 21d09475 add fontFamily to input style
- 96c37618 export renderSize from cell-size.js
- f356fe43 [Enhancement] Added modalStyle prop Portaled to override default values (#83)
- b6fd3916 [Enhancement] UI input style improvement (#1284)
- 92a2bb65 [Enhancement] Add preserveLayerOrder to layer merger (#1288)
- 480ead69 [Enhancement] Add a CTA button type (#80) (#1286)
- d882ba09 [Enhancement] Layer config: Add column validators (#1287)
- e8fc1c5e Export typeahead (#1289)
- ad5ec020 [Enhancement] render last added filter first (#1285)
- 42569ec3 [Enhancement] Export StyledDropdownSelect (#1283)
- 1b748471 [Jupyter] add _repr_html_ method (#1202)
- fbbd4c45 [Enhancement] export more utils and schema (#1280)
- e5a6f9e8 [Enhancement] Improve schema and utils typing (#1279)
- ad651700 [Enhancement] Create factory for histogram and line chart, add brush handle to range brush (#1274)
- 6681d2e2 [Enhancement] pass light theme through to item selector (#1276)
- 0184cf1e [Enhancement] add setTimeAnimation action (#70) (#1263)
- 908a5e2b [Chores] Bump http-proxy from 1.18.0 to 1.18.1 (#1268)
- 7acb3d66 [Auto] Bump elliptic from 6.5.2 to 6.5.3 (#1210)
- 490cafb0 [Jupyter] Updated Docs for Jupyter (#1267)
- a7865c8d [Enhancement] Added factory for the icons of the map control (#1273)
- 77b4e018 [Enhancement] switch style tweak (#1262)
- 9dbb9e73 [Bug] fix dropdown list item lineheight (#1261)
- d677c18f [Feat] Move more css to theme and create more factories (#1248)
- 2ebd1368 [Enhancement] Typescript improvement (#1254)
- 959f1a33 [Bug] fix export image size not set (#1257)
- 678aacc2 [Upgrade] upgrade react-palm to 3.3.6 (#1255)
- f54d6afb [Enhancement] Map control style improve (#1253)
- 3e40a48c [Website] disable banner (#1252)
- 3b81b59f [Enhancement] Add new theme variables (#1245)
- b09aa2e1 [Bug] Fix load data modal crash (#1244)
- 42670d89 [Bug] Fix provider preview image during map save and share flow (#1243)
- efd3676d [Bug] Fix component exports
- 0b91f4d1 [Enhancement] Improve react intl support (#1237)
- 7ff0c459 [Enhancement] Save merger and schema to visState (#1235)
- ## [2.3.2] - Aug 16 2020
- 10468e19 [Enhancement] Export more utils (#1233)
- 242dcf99 [Enhancement] Upgrade dependencies and fix vulnerabilities (#1236)
- 3d72066f [Bug] Fixed image export bug due to mapbox attrition logo (#1229)
- f4951102 [Feat] add readonly prop to KeplerGl component (#1220)
- 04991352 [Enhancement] Added props to panel-header iconComponent (#64) (#1219)
- b91785ec [Feat] Auto detect h3 layer from h3 field data (#53) (#1218)
## [2.3.1] - Aug 4 2020
- [Bug] fix tooltip config, add boolean formatter (#1216)
- [Enhancement] Geocoder interaction improvements (#1214)
- [Enhancement] add options.autoCreateLayers to addDataToMap (#1215)
- [Bug] Hide BottomWidgetContainer nothing to render (#1213)
- [Enhancement] Cleanup unused babel plugins (#1211)
- [Bug] fix file handler row parsing to support single geojson feature (#1212)
- [Enhancement] Add KeplerGl.onDeckInitialized callback (#1193)
- [Enhancement] Render geocode in readOnly mode (#1177)
- [Feat] pass initialUiState to prop (#1187)
- [Docs] Fix `replace-component` Readme (#1207)
- [Jupyter] Convert to gdf to a dataframe instead of a copy (#1201)
- New image export approach (#1199)
- Add prop to disable file extension checking (#1195)
- Load: extract extensions from loader objects (#1194)
- Add `visState.loaders` to let app inject a list of loaders.gl loaders. (#1192)
- Enable modal prop types (#1190)
- Enable modal types (#1189)
- Add types to top-level KeplerGl component (#1188)
- Add typescript types for upload modal and components (#1185)
- Add types for composer helpers (#1186)
- [Feat] add zoom to coordinate tooltip (#1179)
- [Enhancement] export more layer configurator components (#1176)
- [Bug/Enhancement] Pass PanelHeader props to the onClick handler of action items (#1181)
- [Bug] Fix import of the user guide link (#1182)
- [examples] update example version to 2.3.0
## [2.3.0] - July 6 2020
- [Enhancement] Improve animation sliders (#1157)
- [Enhancement] speed control step to 0.001 (#1155)
- [website] remove unused env, relax on package engines requirement (#1173)
- [Feat] Pinned tooltip + Compare (#1132)
- [Feat] Integration with loaders.gl 2.2 (#1156)
- [Feat] Bump deck.gl and luma.gl to v8.2 (#1166)
- [Chore] Bump websocket-extensions from 0.1.3 to 0.1.4 (#1138)
- [Website] Add 2020 Survey (#1154)
- [Bug] Tooltip formatting (#1129)
- [Jupyter] Default centerMap to False so that zoom map state configurations are not (#1142)
- [Enhancement] close modal when press escape key (#1134)
- [Enhancement] Export time widget factories (#1133)
- [Enhancement] filter invalid value when calculate trip layer domain (#1131)
- [Feat] enable tooltip formatting in interaction config (#1102)
- [Feat] Add type definition (#1116)
- [RFC] table class RFC (#1109)
- [Docs] adding missing bracket (#1094)
- add side-panel inner class (#1113)
- [Bug] add hexagon layer translation (#1114)
- [Jupyter] fix gitignore add missing files (#1118)
- [Jupyter] Publish keplergl jupyter 0.2.0 (#1110)
- [Enhancement] fix attribution color, add kepler smaller font (#1092)
## [2.2.0] - May 10 2020
- [Enhancement] Added Editor and FeatureActionPanel factories (#1093)
- [Feat] Geocoder Search (#1068)
- [Doc] Updated release docs with gh-release instructions (#1059)
- [Bug] Aggregation layer fix out-of-domain coloring for valid strings (#1070)
- [Feat] Add Spanish and Catalan translation (#1087)
- [Doc] Update playback documentation (#1072)
- [Bug] Fix link to umd folder
- [Doc] Refactored doc files for better structure (#1084)
- [Enhancement] Add Portuguese translations (#1063)
- [Bug] Fixed download file for microsoft edge (#1074)
- [Bug] Fix broken redirects in jupyter user guide (#1077)
- [Docs] update upgrade guide (#1044)
## [2.1.2] - April 3 2020
- [Enhancement] Add support for localization and Finnish translations (#994)
- [Bug] Fixes for case sensitive fields in CARTO storage (#1057)
- [Chore] Removed engine requirements (#1049)
- [Chore] Improve the secondary button color for base theme (#1048)
- [Chore] Updated examples to v2.1.1 (#1043)
## [2.1.1] - March 31 2020
- [Chore] Updated example to 2.1.0 (#1041)
## [2.1.0] - March 30 2020
- [Enhancement] Remove table cell char limit and increased cell header height (#1038)
- [Docs] CHANGELOG.md markup update (#1029)
- [Enhancement] add classes to button for easier style override (#1035)
- [Bugfix] Remove incorrect outlier calculation for better map centering (#1026)
- [Bug] fix scatterplot stroke width in pixels (#1018)
- [Test] e2e test (#940)
- [Enhancement] Move layer panel visible toggle to end (#1017)
- [Bug] export formatCsv (#1022)
- [Enhancement] Refactor load file tasks to better handle multiple file types (#986)
- [Bug] Fixed carto-provider example: importing the correct kepler.gl processor path (#1016)
- [Feat] Add satellite basemap (#1007)
- [Feat] Improved data table rendering (#1010)
- [Chore] Upgrade to Node 10 (#1009)
- [Feat] S2 layer (#800)
- [BUG] Fix provider test (#1008)
- [Enhancement] better handling provider tile update (#1000)
- [Enhancement] Loading and error feedback for shared maps loaded from URL #1002 (#1003)
- [Enhancement] adjust button color in light theme (#1004)
- [Bug] Reset selected provider status after loading and before sharing (#999)
- [Feat] Add more light themes (#1001)
- [Bug] fix bug map loaded with custom map style not save correctly (#993)
- [Bug] Fix username set to null after loading map from URL #995 (#996)
- [Enhancement] Decrease filter step size for small domains (#958)
## [2.0.1] - March 9 2020
- [Bug] Add cloud-providers.js to package.json (#991)
- [Feat] CARTO provider for cloud storage (#985)
- [Bugfix] Fix typo on variable name (#987)
- [Enhancement] pass appWebsite to logo component (#984)
- [Chore] Removed testing from publish action (#980)
- [Bug] remove console.log in filter.utils
- [Feat] Load cloud map with provider (#947)
## [2.0.0] - Feb 25 2020
- [Enhancement] Independently customize Geojson layer fill stroke opacity (#966)
- [Bug] Fix text collision on toggle input (#973)
- [Chore] upgrade prettier to 1.19 to better handle single line function compositions (#971)
- [Style] run prettier and lint on tests (#968)
- [Bug] Select dataset filter bug (#965)
- [Bug] fix hexagon layer hover crash (#964)
- [Style] run prettier (#963)
- [Feat] Allow adding custom side panel tabs
- [Chore] Fix prettier update config (#767)
- [Bug] Fixed json map export and added tests (#956)
- [Bug] Resolve deck luma version conflict (#955)
- [Feat] upgrade to deck.gl@8 (#889)
- [Feat] UI for save map to backend storage (#906)
- [Bug] Fixed geo-filter extra layer issue (#936)
- [Bug] Fix low projection accuracy in higher zoom level (#946)
- [Bug] fix hexagon layer hover cause app crash (#933)
- [Bug] fix heatmap crash when there is no filter (#934)
- [Bug] should add redux devtools in demo app by default (#932)
- [Feat] Gpu data filter (#878)
- [Feat] Global export of image export constants (#923)
- [Bug] Fix mix int/float column interpreted as sting (#927)
- [Chore] Correctly update the copy changes to actions.js (#914)
- [Enhancement] Hide data modal in export map (#920)
- [Chore] remove action to publish to github package repo (#919)
- [Feat] Geo-Operations: create and apply polygon filters (#595)
- [Bug] Fix h3 layer projection error at edge of world map (#918)
## [1.1.13] - Jan 17 2020
- [Enhancement] added coordinate to tooltip export configuration (#876)
- [Bug] mapState not applied in exported map html (#913)
- [Chore] Update grammar, cleanup whitespace, fix broken link (#912)
- [Docs] add Upgrade-guide
- [Docs] Remove hyperlink with "Advanced Usage" (#903)
- [Docs] add initial cloud provider api (#868)
- [Enhancement] treat type-analyzer type: NUMBER as strings (#891)
- [Bug] remove argument.length check in injector (#899)
- [Enhancement] add disabled to layer-configurator group (#897)
- [Bug] Fix a bug in file-drop.js that causes error in server side render (#896)
- [Bug] Ensure all colors returned from get3DBuildingColor are RGB arrays (#871)
- [Chore] License 2020 (#883)
- [Bug] Correctly copy over field.filterProps when merging multiple filters (#884)
- [Bug] Fix newDateEntries typo and formatting fixes (#870)
- [Bug] Fix multiple geojson layer found when properties contain object and array (#872)
- [Bug] fix demo-app resolve react-redux (#866)
## [1.1.12] - Dec 14 2019
- [Bug] Remove sqrt, log from default color aggregation for count (#856)
- [Bug] fix cluster point count, cluster layer failed to render on export image (#855)
- [Style] Remove extra semicolon (#850)
- [Docs] Update api-reference overview links
- [Bug] Don't merge domain when update filter name (#841)
- [Enhancement] React 17: replace componentWillReceiveProps and componentWillMount (#745)
- [Bug] Fixed delete dataset action (#835)
- [Chore] Github action to publish npm package (#825)
- [Enhancement] Demo App Cloud provider refactor (#831)
## [1.1.11] - Nov 13 2019
- [Bug] Correctly save filterProps to field while merging filter from config (#829)
- [Docs] fixing api reference broken link (#812)
- [Bug] fix empty geometry causing trip layer detection to fail (#826)
- [Docs] update a-add-data-to-the-map.md with embed geometries in CSV
## [1.1.10] - Oct 30 2019
- [Docs] Add instructions for image and weblink in tooltip (#797)
- [Enhancement] Add Bug Report User Guides to demo app panel header (#787)
- [Docs] Fix typos in add-data-workflow-user-guide (#807)
- [Feat] add stdev and variance aggregators to aggregation layer (#809)
- [Feat] Multiple datasets per filter (#773)
- [Bug] Fixed loading urls with query params (#780)
- [Jupyter] Publish keplergl jupyter 0.1.2 (#784)
## [1.1.9] - Oct 11 2019
- [Enhancement] improve Geojson processing performance and error handling (#781)
- [Enhancement] add file format instruction to file upload (#770)
- [Bug] Filter invalid H3 IDs (#775)
- [Bug] fix readonly in addDataToMap (#783)
- [Enhancement] Expose LayerHoverInfoFactory and CoordinateInfoFactory (#769)
- [Bug] Fixed dropbox upload in Firefox. Passing explicit file name to upload function
- [Enhancement] Demo app sample info (#758)
- [Enhancement] Generate custom map style icon from style url (#762)
- [Jupyter][bug] fix lab widget window responsiveness, add version to header (#771)
- [Jupyter][docs] add installation instruction to jupyter widget user guide
- [Docs] Update add data to map docs
- [Jupyter] Publish keplergl-jupyter for Jupyter labs (#764)
- [Jupyter][bug] fix flashing html export when open in window (#756)
- [Enhancement] Add logo and GA to exported html (#757)
- [Docs] update Trip Layer md
## [1.1.8] - Sep 30 2019
- [Bug] Fix saving animation speed (#752)
- [Feat] Add Trip Layer - Final (#699)
- [Feat] add custom color editor (#601)
- [Chore] add coverall (#748)
- [Docs] mapboxApiUrl usage examples (#737)
- [Feat] Support Policy page (#724)
## [1.1.7] - Sep 11 2019
- [Enhancement] Create more factories from SourceDataCatalog, add onClickTitle (#720)
- [Enhancement] Express example (#704)
- [Bug] check new layers based on new dataset id (#721)
- [Feat] Add Log and Sqrt scale (#670)
- [Chore] Add a script to automatically edit kepler.gl version (#714)
## [1.1.6] - Sep 5 2019
- [Bug] Upgrade to deck 7.1.11 (#715)
## [1.1.5] - Sep 4 2019
- [Bug] Unlock luma.gl version (#713)
- [Bug] fix heatmap getBounds (#711)
- [Feat] HTML Export: provide read only mode (#709)
## [1.1.4] - Sep 3 2019
- [Bug] Lock deck.gl to version 7.1.5 (#688)
- [Enhancement] add keepExistingConfig option to addDataToMap (#619)
- [Bug] Fixed issue with geojson fields (#683)
- [Enhancement] Switch from callback refs to createRef (#622)
- [Bug] Fix uglify error compiling dom-to-image in prod (#682)
- [Enhancement] pass set useDevicePixels to deck.gl to plot container (#663)
- [jupyter] Upgrade to kepler.gl v1.1.3 (#660)
- [Chore] use xvfb as a service in travis-ci (#669)
## [1.1.3] - Aug 5 2019
- [Enhancement] Use preserved state to apply keplerGlInit. when mint=false (#649)
- [Enhancement] Replace react-data-grid with react-virtualized (#629)
## [1.1.2] - Aug 1 2019
- [Bug] Fix issue in Layer.registerVisConfig preventing custom boolean properties
- [Enhancement] Simplify map layer visible logic in splitMaps and deck, mapbox overlay renders (#642)
- Netlify badge (#641)
- [Enhancement] Add 3d building color editor (#633)
- [Enhancement] Update mapbox-gl css version (#634)
- [Bug] fix SolidPolygonLayer import causing 3d building layer crash (#625)
- [Bug] Don't show null for labels if there is no data (#626)
- [Bug] add deckGlProps to pass preserveDrawingBuffer to plot container (#624)
- [Enhancement] DemoApp: explicitly pass window.fetch to Dropbox to suppress warning (#621)
- [Enhancement] Use theme in histogram plot color (#607)
- [Enhancement] Bump supercluster version (#590)
- [Feat] Add mapboxApiUrl to `KeplerGL` (#554)
- [Docs] Update link to the GitHub repo (#589)
- Fixed python3 compatiability and wrong variable in string format (#587)
- [Bug] Remove isMouseOver state from MapPopover (#577)
- [Docs] fix: Correct Custom Theme Example Link (#578)
- [Bug][jupyter] Replacing print statement with () to make it Python 3 compatible (#582)
- Update build command: remove yarn since netlify runs yarn by default (#585)
- [Jupyter] cleanup examples (#574)
- [Feat] Publish keplergl jupyter 0.1.0a5 (#572)
- [Chore] Add issue template for kepler.gl Jupyter
- [Bug] Solve issue #547 avoid crash application (#564)
## [1.1.1] - Jun 24 2019
- [Bug] Fix radius rendering when value = 0 (#551)
- [Docs] Updating Layer User Guides (#373)
- [Feat] Display mouse coordinate (#550)
- [Docs] Replace CLA with DCO (162a9f7)
- [Style] fix README typo (c1fafbf)
- [Docs] Add jupyter widget user guide link o README (17d3ec8)
- [Chore] Add jupyter widget issue templates (a40c1fe)
- [Feat] Bump deck.gl to v7.1.5 (#568)
- [Feat] Add ScenegraphLayer (#540)
- [Feat] Add kepler.gl-jupyter python package (#543)
## [1.1.0] - Jun 15 2019
- Upgrade to deck.gl 7.1 (#559)
- [Docs] update user documentation with newer layers and features (#552)
- Upgrade to deck.gl 7 and luma.gl 7 (#544)
- [Bug] Display color legend for stroke color scale (#546)
- [Enhancement] Image export error handling (#538)
- [Bug] Fix typo on layer-configurator.js (#549)
## [1.0.0] - May 23 2019
- [Enhancement] Detecting mapbox token validity (#513)
- [Enhancement] Netlify webpack optimization (#525)
- [Feat] More control over point label (#515)
- [Enhancement] Applied changes for enable netlify deployment (#516)
- [Enhancement] Refactored modal dialog to be more responsive (#501)
- [Bug] fix side panel unnecessary rerender (#512)
- [Feat] Upgrade deck.gl to 6.4 (#456)
- [BUG] Fixed layer list sorting dnd effect (#509)
- [Feat] add onViewStateChange callback to KeplerGl (#506)
- [Enhancement] More granular speed control (#500)
- [Docs] update all uber links to keplergl org (#502)
## [1.0.0-2] - May 2 2019
- [Bug] Fix missing default map styles after loading custom map style from saved json (#490)
- [Bug] Fix `fix radius` in point layer unclickable (#491)
- [Bug] fix image export doesnt get called when map rendered (#494)
- [Enhancement] Merge export config and map into one interaction (#488)
## [1.0.0-1] - Apr 23 2019
- [Bug] Fix point layer brushing and highlight (#487)
- [Feat] Add a light theme to KeplerGl Prop (#489)
- [Bug] Fix browse for file upload (#486)
- [Enhancement] Cleanup load map style tasks (#472)
- [Enhancement] load svg icons from aws, add bundle analyzer, reduce bundle size -1mb (#479)
- [Bug] upgrade kepler.gl version in examples
- [Docs] Fixed link to addDataToMap (#459)
- [Enhancement] expand bottom widget to full length if in read only mode(#465)
## [1.0.0-0] - Apr 2 2019
- [Enhancement] Replace react anything sortable with React-Sortable-Hoc
- [Enhancement] Replaced DI object storage with an actual Map
- [Feat] Able to overwrite custom theme
- [Chore] Upgraded waypoint library to support react16
- [Chore] Dropbox UI enhancements
- [Bug] Fix points disappear while panning across 180th meridian
- [Chore] Tweak save and export documentation
- [Chore] Add oss header and middleware.js
- [Chore] Added file header for user-guide.js
- [Feat] Single map page export
- [Chore] Upgraded libraries: react, styled-components
##### BREAKING CHANGES
- React 15 is no longer supported
- Style components v4+ is now required because is now a peer dependency
## [0.2.4] - Mar 13 2019
- [Enhancement] Slider: use clientX to calculate delta to support windows IE and Tableau kepler.gl (#431)
- [Bug] Range slider: correctly setting ranch brush selection when mount (#433)
- [Feat] Add getMapboxRef prop (#372)
- [Enhancement] Automatically loading custom dependencies when inject custom component factor (#430)
- [Bug] Range brush width change should not trigger onBrush callback (#432)
- [Bug] fix processor export, support previous (#428)
## [0.2.3] - Mar 3 2019
- [Docs] Export processors and Add Docs (#421)
- [Docs] Add docs for actions and updaters (#368)
- [Bug] Fix image export component failed to render (#418)
## [0.2.2] - Feb 26 2019
- (HEAD -> master, origin/master, origin/HEAD) [Bug] Fixed web doc link (#369)
- [Bug]: Fixed example dependencies (#362)
- [Bug] Fix missing 3d building layer in image export (#361)
- [Bug] fix 3d building layer missing mapbox token, fix image export (#360)
- [Docs] Add API Docs (#279)
- [Feature] UMD module in unpkg (#349)
- Disabled banner (#352)
## [0.2.1] - Feb 6 2019
- (HEAD -> master, origin/master) [Feature] Collapsible layer group (#350)
- [Enhancement] Added default feature flags to disable dropbox (#338)
- [Bug]: fix alias and module resolve in webpack.config.local (#348)
- [Enhancement] Upgraded Webpack, Babel and Eslint (#342)
- [Feature] Notification systems with new UI panel and helpers to generate messages (#333)
- GitHub browser history (#321)
- [Bug] Fix Maximum call stack size exceeded when double click (#323)
- [Docs] Export identity actions individually and add JSDocs (#290)
- [Docs] Edit PR guidance in contribution guidelines (#320)
- [Docs] Add Contribution Guidelines (#261)
- (overide-style) [Enhancement] Upgrade type-analyzer to pass 0/1 as integer (#317)
- [Typo] Misspellings in comments (#314)
- [Housekeeping] Update Copyright header to 2019, Happy New Year (#316)
- Feat: Implemented Dropbox integration (#312)
## [0.2.1-beta.1] - Dec 17 2018
- [Feature] Added a Tiled 3D Building Deck.gl Layer (#270)
- [Enhancement] Fossa Integration (#309)
- [Enhancement] Change BottomWidget to pure functional component (#249)
- [Docs]: updated docs for better readability(alignments) (#255)
- [Enhancement] export processKeplerglJSON from processors (#299)
- [website] BugFix: missing tracking payload (#311)
- [Enhancement] Hexbin Layer: smaller radius step and dynamic hover (#310)
- [Bug] remove unpm from yarn.lock (#303)
- [Enhancement] use mapbox style url for default (published) uber map styles (#292)
- [Feature] Load data and kepler.gl file using URLs (#260)
## [0.2.1-beta.0] - Nov 16 2018
- [Bug] Fixing global color issue #130 for the heat map (#277)
- [Enhancement] More exports (#284)
## [0.2.0] - Nov 16 2018
- [Enhancement] Export side panel component factories (#282)
- [Feature] Upgrade to deck.gl v6 (#272)
- [Refactor] Small update of readability (#250)
- [website] Click logo should go to kepler.gl website (#251)
- [Enhancement] Add contribution guidelines on contributing.md file (#108)
- [Enhancement] Scan through all text labels to get the entire character set (#245)
## [0.1.6] - Oct 3 2018
- [Enhancement] save and load text label config (#242)
## [0.1.5] - Oct 2 2018
- [Enhancement] Fix z-fighting issue between text label and scatter plot (#234)
- [Bug] Sort color steps (#241)
- [Bug] fix a bug where field is valid is always false (#240)
## [0.1.4] - Sep 15 2018
- [Enhancement] Null check for missing arc column (#235)
## [0.1.3] - Sep 10 2018
- [Enhancement] Add H3 layer (#217) (#198)
- [Enhancement] Add text label in Point layer (#166)
## [0.1.2] - Aug 24 2018
- [Bug] Fix server render error, remove react-ace (#206)
## [0.1.1] - Aug 24 2018
- [Enhancement] Bump react-palm@1.1.2 (#215)
## [0.1.0] - Aug 21 2018
- Upgrade to Deck.gl v5.3.4 (#153)
## [0.0.28] - Aug 8 2018
- Fix cluster layer label rendering
## [0.0.27] - Aug 3 2018
- Fix unable to fetch external stylesheets when taking the screenshot (#187)
- [Bug] Avoid repeatedly calling HIDE_EXPORT_DROPDOWN (#180)
## [0.0.26] - Aug 3 2018
- [Bug] fix mapStyles loaded as an empty object after load map from config (#169)
## [0.0.25] - Jul 10 2018
- [Bug] Create ellipsis when dataset name is a long name (#109)
- [Enhancement] Save custom reducer initialState, add custom-reducer example (#159)
## [0.0.24] - Jul 5 2018
- [Bug] fix image export failing (#155)
- [Enhancement] Add default map styles to mapStyle reducer initial state (#147)
## [0.0.23] - Jun 28 2018
- [Enhancement] Consider all mew layers when calculating the map bounds (#142)
- [Bug] Fix icon layer instructions (#131)
- [Website] add banner to demo app for survey (#117)
## [0.0.22] - Jun 10 2018
- [Bug] new filter shouldn't be enlarged if there is already an enlarged filter (#93)
- [Enhancement] Enable ordinal aggregation in aggregation layer (hex, grid, cluster) (#29)
## [0.0.21][0.0.20] - Jun 4 2018
- [Bug] TimeRangeSlider should not cache props.onChange (#100)
================================================
FILE: FILE-HEADER
================================================
SPDX-License-Identifier: MIT
Copyright contributors to the kepler.gl project
================================================
FILE: LICENSE
================================================
Copyright contributors to the kepler.gl project
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
================================================
FILE: README.md
================================================
[ ](http://kepler.gl)
[ ](https://kepler.gl/demo)
[Kepler.gl][web] is a data-agnostic, high-performance web-based application for visual exploration of large-scale geolocation data sets. Built on top of [MapLibre GL](https://maplibre.org/) and [deck.gl](https://deck.gl/), kepler.gl can render millions of points representing thousands of trips and perform spatial aggregations on the fly.
Kepler.gl is also a React component that uses [Redux](https://redux.js.org/) to manage its state and data flow. It can be embedded into other React-Redux applications and is highly customizable. For information on how to embed kepler.gl in your app take a look at the [documentation](https://docs.kepler.gl/).
## Links
- [Website][web]
- [Demo][demo-app]
- [Examples][examples]
- [Get Started][get-started]
- [App User Guide][user-guide]
- [Jupyter Widget User Guide][user-guide-jupyter]
- [Documentation][docs]
- [Stack Overflow][stack]
- [Contribution Guidelines][contributing]
- [Api Reference][api-reference]
- [Roadmap][roadmap]
## Env
Use Node 18.18.2 or above, older node versions have not been supported/ tested.
For best results, use [nvm](https://github.com/creationix/nvm) `nvm install`.
## Install kepler.gl modules
Kepler.gl consists of different modules. Each module can be added to the project like this:
```sh
npm install --save @kepler.gl/components
// or
yarn add @kepler.gl/components
```
kepler.gl is built upon [mapbox][mapbox]. You will need a [Mapbox Access Token][mapbox-token] to use it.
If you don't use a module bundler, it's also fine. Kepler.gl npm package includes precompiled production UMD builds in the [umd folder](https://unpkg.com/kepler.gl/umd).
You can add the script tag to your html file as it follows (latest version of Kepler.gl):
```html
```
or if you would like, you can load a specific version:
```html
```
## Develop kepler.gl
Take a look at the [development guide][developers] to develop kepler.gl locally.
## Basic Usage
Here are the basic steps to import kepler.gl into your app. You also take a look at the examples folder. Each example in the folder can be installed and run locally.
### 1. Mount reducer
Kepler.gl uses Redux to manage its internal state, along with [react-palm][react-palm] middleware to handle side effects.
You need to add `taskMiddleware` of `react-palm` to your store too. We are actively working on a solution where
`react-palm` will not be required, however it is still a very lightweight side effects management tool that is easier to test than react-thunk.
```js
import {createStore, combineReducers, applyMiddleware, compose} from 'redux';
import keplerGlReducer from '@kepler.gl/reducers';
import {enhanceReduxMiddleware} from '@kepler.gl/middleware';
const initialState = {};
const reducers = combineReducers({
// <-- mount kepler.gl reducer in your app
keplerGl: keplerGlReducer,
// Your other reducers here
app: appReducer
});
// using createStore
export default createStore(
reducer,
initialState,
applyMiddleware(
enhanceReduxMiddleware([
/* Add other middlewares here */
])
)
);
```
Or if use enhancer:
```js
// using enhancers
const initialState = {};
const middlewares = enhanceReduxMiddleware([
// Add other middlewares here
]);
const enhancers = [applyMiddleware(...middlewares)];
export default createStore(reducer, initialState, compose(...enhancers));
```
If you mount kepler.gl reducer in another address instead of `keplerGl`, or the kepler.gl reducer is not
mounted at root of your state, you will need to specify the path to it when you mount the component
with the `getState` prop.
Read more about [Reducers][reducers].
### 2. Mount Component
```js
import KeplerGl from '@kepler.gl/components';
const Map = props => (
);
```
### Props
| Prop Name | Type | Default Value | Description |
| ----------------------------- | ------------- | ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id` | String | `map` | The unique identifier for the KeplerGl instance. Required when multiple KeplerGl instances exist. It maps to the state in the reducer (e.g. component with id `foo` can be found in`state.keplerGl.foo`). |
| `mapboxApiAccessToken` | String | `undefined` | API token for Mapbox, used for rendering base maps. Create a free token at [Mapbox](https://www.mapbox.com). |
| `getState` | Function | `state => state.keplerGl` | Function that specifies the path to the root KeplerGl state in the reducer. |
| `width` | Number | `800` | The width of the KeplerGl UI in pixels. |
| `height` | Number | `800` | The height of the KeplerGl UI in pixels. |
| `appName` | String | `Kepler.Gl` | The app name displayed in the side panel header. |
| `version` | String | `v1.0` | The version displayed in the side panel header. |
| `onSaveMap` | Function | `undefined` | A function called when the "Save Map URL" in side panel header is clicked. |
| `onViewStateChange` | Function | `undefined` | Triggered when the map viewport is updated. Receives `viewState` parameter with updated values like longitude, latitude, zoom, etc. |
| `getMapboxRef(mapbox, index)` | Function | `undefined` | Called when `KeplerGl` adds or removes a MapContainer with an inner Mapbox map. `mapbox` is a `MapRef` when added, or `null` when removed. `index` is `0` for the first map and `1` for the second map in a split view. |
| `actions` | Object | `{}` | Custom action creators to override the default KeplerGl action creators. Only use custom action when you want to modify action payload. |
| `mint` | Boolean | `true` | Determines whether to load a fresh empty state when mounted. When `false`, the state persists across remounts. Useful for modal use cases. |
| `theme` | Object/String | `null` | Set to `"dark"`, `"light"`, or `"base"`, or pass a theme object to customize KeplerGl’s style. |
| `mapboxApiUrl` | String | `https://api.mapbox.com` | The Mapbox API URL if you are using a custom Mapbox tile server. |
| `mapStylesReplaceDefault` | Boolean | `false` | Set to `true` to replace default map styles with custom ones. (see `mapStyles` prop) |
| `mapStyles` | Array | `[]` | An array of [custom map styles](#example-custom-map-style) for the map style selection panel. Styles replace the default ones if `mapStylesReplaceDefault` is `true`. |
| `initialUiState` | Object | `undefined` | The initial UI state applied to the `uiState` reducer. |
| `localeMessages` | Object | `undefined` | Used to modify or add new translations. Read more about [Localization][localization]. |
#### Example Custom Map Style
You can supply additional map styles to be displayed in [map style selection panel](https://github.com/keplergl/kepler.gl/blob/master/docs/user-guides/f-map-styles/1-base-map-styles.md). By default, additional map styles will be added to default map styles. If you pass `mapStylesReplaceDefault: true`, they will replace the default ones. kepler.gl will attempt to group layers of your style based on its `id` naming convention and use it to allow toggle visibility of [base map layers](https://github.com/keplergl/kepler.gl/blob/master/docs/user-guides/f-map-styles/2-map-layers.md). Supply your own `layerGroups` to override default for more accurate layer grouping.
Each `mapStyles` should has the following properties:
- `id` (String, required) unique string that should **not** be one of these reserved `dark` `light` `muted`. `muted_night`
- `label` (String, required) name to be displayed in map style selection panel
- `url` (String, required) mapbox style url or a url pointing to the map style json object written in [Mapbox GL Style Spec](https://docs.mapbox.com/mapbox-gl-js/style-spec/).
- `icon` (String, optional) image icon of the style, it can be a url, or an [image data url](https://flaviocopes.com/data-urls/#how-does-a-data-url-look)
- `layerGroups` (Array, optional)
```js
const mapStyles = [
{
id: 'my_dark_map',
label: 'Dark Streets 9',
url: 'mapbox://styles/mapbox/dark-v9',
icon: `${apiHost}/styles/v1/mapbox/dark-v9/static/-122.3391,37.7922,9.19,0,0/400x300?access_token=${accessToken}&logo=false&attribution=false`,
layerGroups: [
{
slug: 'label',
filter: ({id}) => id.match(/(?=(label|place-|poi-))/),
defaultVisibility: true
},
{
slug: '3d building',
filter: () => false,
defaultVisibility: false
}
]
}
];
```
### 3. Dispatch custom actions to `keplerGl` reducer.
One advantage of using the reducer over React component state to handle keplerGl state is the flexibility
to customize its behavior. If you only have one `KeplerGl` instance in your app or never intend to dispatch actions to KeplerGl from outside the component itself,
you don’t need to worry about forwarding dispatch and can move on to the next section. But life is full of customizations, and we want to make yours as enjoyable as possible.
There are multiple ways to dispatch actions to a specific `KeplerGl` instance.
- In the root reducer, with reducer updaters.
Each action is mapped to a reducer updater in kepler.gl. You can import the reducer updater corresponding to a specific action, and call it with the previous state and action payload to get the updated state.
e.g. `updateVisDataUpdater` is the updater for `ActionTypes.UPDATE_VIS_DATA` (take a look at each reducer `reducers/vis-state.js` for action to updater mapping).
Here is an example how you can listen to an app action `QUERY_SUCCESS` and call `updateVisDataUpdater` to load data into Kepler.Gl.
```js
import {keplerGlReducer, visStateUpdaters} from '@kepler.gl/reducers';
// Root Reducer
const reducers = combineReducers({
keplerGl: keplerGlReducer,
app: appReducer
});
const composedReducer = (state, action) => {
switch (action.type) {
case 'QUERY_SUCCESS':
return {
...state,
keplerGl: {
...state.keplerGl,
// 'map' is the id of the keplerGl instance
map: {
...state.keplerGl.map,
visState: visStateUpdaters.updateVisDataUpdater(state.keplerGl.map.visState, {
datasets: action.payload
})
}
}
};
}
return reducers(state, action);
};
export default composedReducer;
```
Read more about [using updaters to modify kepler.gl state][using-updaters]
- Using redux `connect`
You can add a dispatch function to your component that dispatches actions to a specific `keplerGl` component,
using connect.
```js
// component
import KeplerGl from '@kepler.gl/components';
// action and forward dispatcher
import {toggleFullScreen, forwardTo} from '@kepler.gl/actions';
import {connect} from 'react-redux';
const MapContainer = props => (
props.keplerGlDispatch(toggleFullScreen())}/>
)
const mapStateToProps = state => state
const mapDispatchToProps = (dispatch, props) => ({
dispatch,
keplerGlDispatch: forwardTo(‘foo’, dispatch)
});
export default connect(
mapStateToProps,
mapDispatchToProps
)(MapContainer);
```
- Wrap action payload
You can also simply wrap an action into a forward action with the `wrapTo` helper
```js
// component
import KeplerGl from '@kepler.gl/components';
// action and forward dispatcher
import {toggleFullScreen, wrapTo} from '@kepler.gl/actions';
// create a function to wrapper action payload to 'foo'
const wrapToMap = wrapTo('foo');
const MapContainer = ({dispatch}) => (
dispatch(wrapToMap(toggleFullScreen())} />
);
```
Read more about [forward dispatching actions][forward-actions]
### 4. Customize style.
Kepler.gl implements css styling using [Styled-Components](https://www.styled-components.com/). By using said framework Kepler.gl offers the ability to customize its style/theme using the following approaches:
- Passing a Theme prop
- Styled-Components ThemeProvider
The available properties to customize are listed here [theme](https://github.com/keplergl/kepler.gl/blob/master/src/styles/base.js).
[Custom theme example](https://github.com/keplergl/kepler.gl/tree/master/examples/custom-theme).
#### Passing a Theme prop.
You can customize Kepler.gl theme by passing a **theme** props to Kepler.gl react component as it follows:
```javascript
const white = '#ffffff';
const customTheme = {
sidePanelBg: white,
titleTextColor: '#000000',
sidePanelHeaderBg: '#f7f7F7',
subtextColorActive: '#2473bd'
};
return (
);
```
As you can see the customTheme object defines certain properties which will override Kepler.gl default style rules.
#### Styled-Components Theme Provider.
In order to customize Kepler.gl theme using [ThemeProvider](https://www.styled-components.com/docs/api#themeprovider) you can simply wrap Kepler.gl using ThemeProvider as it follows:
```javascript
import {ThemeProvider} from 'styled-components';
const white = '#ffffff';
const customTheme = {
sidePanelBg: white,
titleTextColor: '#000000',
sidePanelHeaderBg: '#f7f7F7',
subtextColorActive: '#2473bd'
};
return (
);
```
### 5. Render Custom UI components.
Everyone wants the flexibility to render custom kepler.gl components. Kepler.gl has a dependency injection system that allow you to inject
components to KeplerGl replacing existing ones. All you need to do is to create a component factory for the one you want to replace, import the original component factory
and call `injectComponents` at the root component of your app where `KeplerGl` is mounted.
Take a look at `examples/demo-app/src/app.js` and see how it renders a custom side panel header in kepler.gl
```javascript
import {injectComponents, PanelHeaderFactory} from '@kepler.gl/components';
// define custom header
const CustomHeader = () => My kepler.gl app
;
const myCustomHeaderFactory = () => CustomHeader;
// Inject custom header into Kepler.gl, replacing default
const KeplerGl = injectComponents([[PanelHeaderFactory, myCustomHeaderFactory]]);
// render KeplerGl, it will render your custom header instead of the default
const MapContainer = () => (
);
```
Using `withState` helper to add reducer state and actions to customized component as additional props.
```js
import {withState, injectComponents, PanelHeaderFactory} from '@kepler.gl/components';
import {visStateLens} from '@kepler.gl/reducers';
// custom action wrap to mounted instance
const addTodo = text =>
wrapTo('map', {
type: 'ADD_TODO',
text
});
// define custom header
const CustomHeader = ({visState, addTodo}) => (
addTodo('hello')}>{`${
Object.keys(visState.datasets).length
} dataset loaded`}
);
// now CustomHeader will receive `visState` and `addTodo` as additional props.
const myCustomHeaderFactory = () =>
withState(
// keplerGl state lenses
[visStateLens],
// customMapStateToProps
headerStateToProps,
// actions
{addTodo}
)(CustomHeader);
```
Read more about [replacing UI component][replace-ui-component]
### 6. How to add data to map
To interact with a kepler.gl instance and add new data to it, you can dispatch the **`addDataToMap`** action from anywhere inside your app. It adds a dataset or multiple datasets to a kepler.gl instance and updates the full configuration (mapState, mapStyle, visState).
#### Parameters
- `data` **[Object][40]** **\*required**
- `datasets` **([Array][41]<[Object][40]> | [Object][40])** **\*required** datasets can be a dataset or an array of datasets
Each dataset object needs to have `info` and `data` property.
- `datasets.info` **[Object][40]** \-info of a dataset
- `datasets.info.id` **[string][42]** id of this dataset. If config is defined, `id` should matches the `dataId` in config.
- `datasets.info.label` **[string][42]** A display name of this dataset
- `datasets.data` **[Object][40]** **\*required** The data object, in a tabular format with 2 properties `fields` and `rows`
- `datasets.data.fields` **[Array][41]<[Object][40]>** **\*required** Array of fields,
- `datasets.data.fields.name` **[string][42]** **\*required** Name of the field,
- `datasets.data.rows` **[Array][41]<[Array][41]>** **\*required** Array of rows, in a tabular format with `fields` and `rows`
- `options` **[Object][40]**
- `options.centerMap` **[boolean][43]** `default: true` if `centerMap` is set to `true` kepler.gl will place the map view within the data points boundaries
- `options.readOnly` **[boolean][43]** `default: false` if `readOnly` is set to `true`
the left setting panel will be hidden
- `options.keepExistingConfig` **[boolean][43]** `default: false` whether to keep exiting map config, including layers, filters and splitMaps.
- `config` **[Object][40]** this object will contain the full kepler.gl instance configuration {mapState, mapStyle, visState}
Kepler.gl provides an easy API `KeplerGlSchema.getConfigToSave` to generate a json blob of the current kepler instance configuration.
#### Examples
```javascript
// app.js
import {addDataToMap} from '@kepler.gl/actions';
const sampleTripData = {
fields: [
{name: 'tpep_pickup_datetime', format: 'YYYY-M-D H:m:s', type: 'timestamp'},
{name: 'pickup_longitude', format: '', type: 'real'},
{name: 'pickup_latitude', format: '', type: 'real'}
],
rows: [
['2015-01-15 19:05:39 +00:00', -73.99389648, 40.75011063],
['2015-01-15 19:05:39 +00:00', -73.97642517, 40.73981094],
['2015-01-15 19:05:40 +00:00', -73.96870422, 40.75424576]
]
};
const sampleConfig = {
visState: {
filters: [
{
id: 'me',
dataId: 'test_trip_data',
name: 'tpep_pickup_datetime',
type: 'timeRange',
view: 'enlarged'
}
]
}
};
this.props.dispatch(
addDataToMap({
datasets: {
info: {
label: 'Sample Taxi Trips in New York City',
id: 'test_trip_data'
},
data: sampleTripData
},
option: {
centerMap: true,
readOnly: false
},
config: sampleConfig
})
);
```
Read more about [addDataToMap](./docs/api-reference/actions/actions.md#adddatatomap) and [Saving and loading maps with schema manager][saving-loading-w-schema].
[contributing]: contributing/README.md
[demo-app]: http://kepler.gl/#/demo
[github]: https://github.com/keplergl/kepler.gl
[github-pr]: https://help.github.com/articles/creating-a-pull-request/
[mapbox]: https://www.mapbox.com
[mapbox-token]: https://www.mapbox.com/help/define-access-token/
[developers]: contributing/DEVELOPERS.md
[examples]: https://github.com/keplergl/kepler.gl/tree/master/examples
[react-palm]: https://github.com/btford/react-palm
[roadmap]: https://github.com/keplergl/kepler.gl/wiki/Kepler.gl-2019-Roadmap
[stack]: https://stackoverflow.com/questions/tagged/kepler.gl
[web]: http://www.kepler.gl/
[docs]: https://docs.kepler.gl/
[user-guide]: docs/user-guides/README.md
[user-guide-jupyter]: docs/keplergl-jupyter/README.md
[api-reference]: docs/api-reference/README.md
[get-started]: ./docs/api-reference/get-started.md
[reducers]: docs/api-reference/reducers/README.md
[components]: docs/api-reference/components/README.md
[custom-theme]: docs/api-reference/custom-theme/README.md
[reducers]: docs/api-reference/reducers/README.md
[actions-updaters]: docs/api-reference/actions/README.md
[processors]: docs/api-reference/processors/README.md
[schemas]: docs/api-reference/schemas/README.md
[using-updaters]: ./docs/api-reference/advanced-usages/using-updaters.md
[custom-map-styles]: ./docs/api-reference/advanced-usages/custom-map-styles.md
[forward-actions]: ./docs/api-reference/advanced-usages/forward-actions.md
[replace-ui-component]: ./docs/api-reference/advanced-usages/replace-ui-component.md
[saving-loading-w-schema]: ./docs/api-reference/advanced-usages/saving-loading-w-schema.md
[localization]: ./docs/api-reference/localization/README.md
[40]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object
[41]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array
[42]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String
[43]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean
[44]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number
[45]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function
================================================
FILE: SUMMARY.md
================================================
# Table of contents
* [Welcome](README.md)
* [What's new?](docs/release-notes.md)
* [Docs](docs/README.md)
* [User guides](docs/user-guides/README.md)
* [Get Started](docs/user-guides/j-get-started.md)
* [Kepler.gl workflow](docs/user-guides/b-kepler-gl-workflow/README.md)
* [Add data to layers](docs/user-guides/b-kepler-gl-workflow/b-add-data-layers/README.md)
* [Adding Data Layers](docs/user-guides/b-kepler-gl-workflow/b-add-data-layers/a-adding-data-layers.md)
* [Create a Layer](docs/user-guides/b-kepler-gl-workflow/b-add-data-layers/b-create-a-layer.md)
* [Blend and Rearrange Layers](docs/user-guides/b-kepler-gl-workflow/b-add-data-layers/d-blend-and-rearrange-layers.md)
* [Hide, Edit and Delete Layers](docs/user-guides/b-kepler-gl-workflow/b-add-data-layers/c-hide-edit-and-delete-layers.md)
* [Add Data to the Map](docs/user-guides/b-kepler-gl-workflow/a-add-data-to-the-map.md)
* [Layers](docs/user-guides/c-types-of-layers/README.md)
* [Point](docs/user-guides/c-types-of-layers/a-point.md)
* [S2 Layer](docs/user-guides/c-types-of-layers/l-s2.md)
* [Icon](docs/user-guides/c-types-of-layers/g-icon.md)
* [Line](docs/user-guides/c-types-of-layers/c-line.md)
* [Cluster](docs/user-guides/c-types-of-layers/f-cluster.md)
* [Polygon](docs/user-guides/c-types-of-layers/e-polygon.md)
* [Hexbin](docs/user-guides/c-types-of-layers/h-hexbin.md)
* [Grid](docs/user-guides/c-types-of-layers/d-grid.md)
* [H3](docs/user-guides/c-types-of-layers/j-h3.md)
* [Heatmap](docs/user-guides/c-types-of-layers/i-heatmap.md)
* [Arc](docs/user-guides/c-types-of-layers/b-arc.md)
* [Trip layer](docs/user-guides/c-types-of-layers/k-trip.md)
* [Vector Tile Layer](docs/user-guides/c-types-of-layers/m-vector-tile-layer.md)
* [Raster Tile layer](docs/user-guides/c-types-of-layers/n-raster-tile-layer.md)
* [WMS layer](docs/user-guides/c-types-of-layers/o-wms-layer.md)
* [Layer Attributes](docs/user-guides/d-layer-attributes.md)
* [Color Palettes](docs/user-guides/l-color-attributes.md)
* [Filters](docs/user-guides/e-filters.md)
* [Map Styles](docs/user-guides/f-map-styles.md)
* [Interactions](docs/user-guides/g-interactions.md)
* [Map Settings](docs/user-guides/m-map-settings.md)
* [Time Playback](docs/user-guides/h-playback.md)
* [Save and Export](docs/user-guides/k-save-and-export.md)
* [FAQ](docs/user-guides/i-faq.md)
* [API Reference](docs/api-reference/README.md)
* [ecosystem](docs/api-reference/ecosystem.md)
* [Get Started](docs/api-reference/get-started.md)
* [Advanced usages](docs/api-reference/advanced-usages/README.md)
* [Saving and Loading Maps with Schema Manager](docs/api-reference/advanced-usages/saving-loading-w-schema.md)
* [Replace UI Component with Component Dependency Injection](docs/api-reference/advanced-usages/replace-ui-component.md)
* [Forward Dispatch Actions](docs/api-reference/advanced-usages/forward-actions.md)
* [Reducer Plugin](docs/api-reference/advanced-usages/reducer-plugin.md)
* [Using Updaters](docs/api-reference/advanced-usages/using-updaters.md)
* [Custom reducer initial state](docs/api-reference/advanced-usages/custom-initial-state.md)
* [custom-mapbox-host](docs/api-reference/advanced-usages/custom-mapbox-host.md)
* [Components](docs/api-reference/components/README.md)
* [Reducers](docs/api-reference/reducers/README.md)
* [reducers](docs/api-reference/reducers/reducers.md)
* [map-style](docs/api-reference/reducers/map-style.md)
* [map-state](docs/api-reference/reducers/map-state.md)
* [combine](docs/api-reference/reducers/combine.md)
* [overview](docs/api-reference/reducers/README.md)
* [ui-state](docs/api-reference/reducers/ui-state.md)
* [vis-state](docs/api-reference/reducers/vis-state.md)
* [Processors](docs/api-reference/processors/README.md)
* [All processors](docs/api-reference/processors/processors.md)
* [Schemas](docs/api-reference/schemas/README.md)
* [Actions](docs/api-reference/actions/README.md)
* [All actions](docs/api-reference/actions/actions.md)
* [Cloud providers](docs/api-reference/cloud-providers/README.md)
* [Provider](docs/api-reference/cloud-providers/cloud-provider.md)
* [Custom theme](docs/api-reference/custom-theme/README.md)
* [Localization](docs/api-reference/localization/README.md)
* [Jupyter Notebook](docs/keplergl-jupyter/README.md)
* [Examples](examples/README.md)
* [Node/Express](examples/node-app/README.md)
* [Demo App](examples/demo-app/README.md)
* [Open modal](examples/replace-component/README.md)
* [Open modal](examples/open-modal/README.md)
* [UMD client](examples/umd-client/README.md)
* [Customize kepler.gl Theme](examples/custom-theme/README.md)
* [Customize kepler.gl Reducer](examples/custom-reducer/README.md)
* [Contributing](contributing/README.md)
* [Developing Kepler.gl](contributing/DEVELOPERS.md)
* [Contributor Covenant Code of Conduct](contributing/CODE_OF_CONDUCT.md)
* [Change Log](CHANGELOG.md)
* [Upgrade Guide](UPGRADE-GUIDE.md)
================================================
FILE: TODO.md
================================================
# TODO
### Bugs
- Time playback slider sticking out after resize
- Heatmap frozen
### Refactor Tasks
- Refactor Layer configurator component so it works better with the layer API [shan]
### Feature
- Re-implement file upload to use event streaming (no react-palm) [shan]
- Input map style from mapbox style url [shan]
- Map style API to add custom map style [shan]
- Field type editor [shan]
- Export map [javid, shan]
### Remaining UI Update
- Free form color picker [shan]
- Vis config by channel UI (add value switch) [shan]
### Design Request
- More map styles [erik]
================================================
FILE: UPGRADE-GUIDE.md
================================================
# Upgrade Guide
## Table of Content
- [v2.3 to v2.4](#upgrade-from-v23-to-v24)
- [v2.2 to v2.3](#upgrade-from-v22-to-v23)
- [v2.1 to v2.2](#upgrade-from-v21-to-v22)
- [v2.0 to v2.1](#upgrade-from-v20-to-v21)
- [v1.1.12 to v2.0](#upgrade-from-v1112-to-v20)
- [v1.1.11 to v1.1.12](#upgrade-from-v1111-to-v1112)
## Upgrade from v2.4 to v3.0
- TBD
## Upgrade from v2.3 to v2.4
### Breaking Changes
- Supports React 17
- Dependency Upgrades, major ones: `d3-xxx@^2`, `redux@4.0.5`, `type-analyzer@0.3.0`, `react-palm@~3.3.7`
### New Features
- Support incremental timeline animation
- Allow changing dataset in layer config
- Enable polygon filter for h3 layer
- Show last added filter at the top
### Bug Fixes
- Avoid duplicated h3 layer detection
- Fixed bug when reversing color palette not update
## Upgrade from v2.2 to v2.3
- Upgrade dependencies to `deck.gl@8.2.0`, `loaders.gl@2.2.5` and `luma.gl@8.2.0`. This should only affects projects with the above libraries in its dependencies.
## Upgrade from v2.1 to v2.2
### New Features
- **Interaction** - Added Geocoder in the interactin panel
### Improvements
- **Localization** - Added Spanish, Catalan, and Portuguese translations
### Bug Fixes
- **Layer** - Aggregation layer fix out-of-domain coloring for valid strings
- **Export** - Fixed download file for microsoft edge
### API Update
- **Components** - Exported map drawing editor factories
## Upgrade from v2.0 to v2.1
### Breaking Changes
- Upgrade Node v10 for dev development, node requirement is now at `>=10.15.0`
### New Features
- **Provider** - Add cloud provider API
- **Layer** - Added S2 Layer
- **Basemap** - Added satellite to base map styles options
- **Theme** - Added base UI theme to theme option as `base`
### Improvements
- **UI** - Improved data table and layer panel header
- **Filter** - Better handle filter steps for small domains
### Bug Fixes
- **Layer** - Remove incorrect outlier for better map center detection
- **Layer** - Fix point layer stroke width
- **Basemap** - Fix bug custom map style not saved correctly
- **Export** - Fix bug exported html blank
---
## Upgrade from v1.1.12 to v2.0
### Breaking Changes
- Upgrade deck.gl to `8.0.15`, this only affects projects with deck.gl in its dependencies. Because only one version of deck.gl can be loaded.
### New Features
- **GPU Filter** - Improved time and numeric filter performance by moving calculation to GPU
- **Geo Fitler** - Added drawing polygon function, allow filter layer based on polygon
### Improvements
- **Layer** - Improved GeoJson and H3 layer geometry rendering
- **UI** - Support custom side panel tabs. [example](https://github.com/keplergl/kepler.gl/tree/master/examples/replace-component)
### Bug Fixes
---
## Upgrade from v1.1.11 to v1.1.12
### Breaking Changes
#### Dependency Upgrade
- **react** and **react-dom**: minimum required version is now `^16.3`
- **react-redux** is upgraded to `^7.1.3`. If you have older version of `react-redux` in your app. You will have error loading kepler.gl, likely due to multiple version of `react-redux` installed.
- **react-palm**: required version is now `^3.1.2`.
- **react-route**: if you are using `react-router`, we suggest using `^3.2.5` to avoid `React 16.8` lifecycle deprecation warning in the console.
### Bug Fixes
- **Cluster Layer**: Fix incorrect cluster point count. Fix cluster layer missing in exported image.
### Moved from `kepler.gl/utils` to `@kepler.gl/table`
- `maybeToDate`
- `getNewDatasetColor`
- `createNewDataEntry`
- `setFilterGpuMode`
- `assignGpuChannels`
- `assignGpuChannel`
- `resetFilterGpuMode`
- `getGpuFilterProps`
- `getDatasetFieldIndexForFilter`
### Moved from `kepler.gl/utils` to `@kepler.gl/reducers`
- `findMapBounds`
- `exportData`
- `TOOLTIP_MINUS_SIGN`
- `getDefaultInteraction`
- `BRUSH_CONFIG`
- `findFieldsToShow`
- `getTooltipDisplayDeltaValue`
- `getTooltipDisplayValue`
- `LayersToRender`
- `AggregationLayerHoverData`
- `LayerHoverProp`
- `findDefaultLayer`
- `calculateLayerData`
- `getLayerHoverProp`
- `renderDeckGlLayer`
- `isLayerRenderable`
- `isLayerVisible`
- `prepareLayersForDeck`
- `prepareLayersToRender`
- `getCustomDeckLayers`
- `ComputeDeckLayersProps`
- `computeDeckLayers`
### Moved from `kepler.gl/processors` to `@kepler.gl/utils`
- `ACCEPTED_ANALYZER_TYPES`
- `validateInputData`
- `getSampleForTypeAnalyze`
- `getFieldsFromData`
- `renameDuplicateFields`
- `analyzerTypeToFieldType`
### Moved from `kepler.gl/templates` to `@kepler.gl/utils`
- `exportMapToHTML`
### Moved from `kepler.gl/layers` to `@kepler.gl/utils`
- `getCentroid`
- `idToPolygonGeo`
- `h3IsValid`
- `getHexFields`
================================================
FILE: babel-register.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
const forceTranspile = [
// ESM libraries that require transpilation
/@deck.gl\/layers/,
/@loaders.gl\/polyfills/,
// For some reason babel crashes even before trying to transpile this library
// Instead we force transpile @deck.gl/layers which includes it, and alias to a transpiled version in babel.config.js
/@mapbox\/tiny-sdf/
];
require('@babel/register')({
// This tells babel where to look for `babel.config.js` file
root: __dirname,
ignore: [
filepath => {
return forceTranspile.some(patt => patt.test(filepath))
? false
: Boolean(filepath.match(/node_modules/));
}
],
only: [__dirname],
extensions: ['.ts', '.js', '.tsx', '.json']
});
require('@babel/polyfill');
var path = require('path');
var glob = require('glob');
// Requiring mapbox-gl here prevents polyfill errors during tests.
require('mapbox-gl');
// eslint-disable-next-line func-names
process.argv.slice(2).forEach(function (arg) {
// eslint-disable-next-line func-names
glob(arg, function (er, files) {
if (er) throw er;
// eslint-disable-next-line func-names
files.forEach(function (file) {
require(path.resolve(process.cwd(), file));
});
});
});
================================================
FILE: babel.config.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
const {resolve} = require('path');
const KeplerPackage = require('./package');
const {RESOLVE_ALIASES} = require('./webpack/shared-webpack-configuration');
const srcDir = resolve(__dirname, 'src');
const nodeModules = resolve(__dirname, 'node_modules');
const PRESETS = ['@babel/preset-env', '@babel/preset-react', '@babel/preset-typescript'];
const getPlugins = isTest => {
const PLUGINS = [
['@babel/plugin-transform-typescript', {isTSX: true, allowDeclareFields: true}],
'@babel/plugin-transform-modules-commonjs',
'@babel/plugin-transform-class-properties',
'@babel/plugin-transform-optional-chaining',
'@babel/plugin-transform-logical-assignment-operators',
'@babel/plugin-transform-nullish-coalescing-operator',
'@babel/plugin-transform-export-namespace-from',
[
'@babel/transform-runtime',
{
regenerator: true
}
],
[
'module-resolver',
{
extensions: ['.js', '.ts', '.tsx', '.json'],
root: ['./src'],
alias: {
test: './test',
// We explicitly transpile this ESM library in scripts/fix-dependencies.js and consume the transpiled version here
// This may not be needed once switch to Jest is complete as it is handled by transformIgnorePatterns
'@mapbox/tiny-sdf': `${nodeModules}/@mapbox/tiny-sdf/index.cjs`,
// fix ERR_REQUIRE_ESM in yarn cover
'maplibregl-mapbox-request-transformer': `${nodeModules}/maplibregl-mapbox-request-transformer/src/index.cjs`,
// compile from @kepler.gl src
...RESOLVE_ALIASES,
// loaders.gl cjs bundle of polyfills is not transpiled properly, use esm instead
'@loaders.gl/polyfills': `${nodeModules}/@loaders.gl/polyfills/src`
}
}
],
[
'search-and-replace',
{
rules: [
{
search: '__PACKAGE_VERSION__',
replace: KeplerPackage.version
}
]
}
]
];
return PLUGINS;
};
const ENV = {
test: {
plugins: ['istanbul']
},
debug: {
sourceMaps: 'inline',
retainLines: true
}
};
module.exports = function babel(api) {
const isTest = api.env('test'); // Check if running in test mode
api.cache(true);
return {
presets: PRESETS,
plugins: getPlugins(isTest),
env: ENV
};
};
================================================
FILE: bindings/kepler.gl-jupyter/.gitignore
================================================
*.egg-info/
*.py[cod]
*/__pycache__/
.ipynb_checkpoints/
dist/
# labextension build
keplergl-jupyter/
build/
*.py[cod]
node_modules/
env/
ENV/
ENV3/
# OS X
.DS_Store
.vs_code/
# Compiled javascript
keplergl/static/*
setup.orig.py
setup.orig2.py
notebooks/*.html
notebooks/*.sh
notebooks/*.js
notebooks/ignore_*
*/*.tgz
package/
*.old*
*test*
js/temp.*
================================================
FILE: bindings/kepler.gl-jupyter/Dockerfile
================================================
# NOTE: PLEASE run `yarn build` before running this dockerfile
FROM ubuntu:latest
# Install python3
RUN apt-get update && apt-get install -y python3 python3-pip python3-venv
# Install gdal
RUN apt-get install -y gdal-bin
# Fix: No such file or directory: 'gdal-config'
RUN apt-get install -y libgdal-dev
# Make the current directory the working directory
WORKDIR /kepler.gl
# The current directory is /bindings/kepler.gl-jupyter
# Copy the root directory contents into the working directory
COPY . .
# Create a virtual environment .venv
RUN python3 -m venv .venv
# Activate the virtual environment
RUN . .venv/bin/activate
# Install jupyter_packaging using pip
RUN .venv/bin/pip install jupyter_packaging
# Install keplergl-jupyter in the virtual environment from the current directory
RUN .venv/bin/pip install .
# Run jupyter notebook with token exposed in logs
CMD [".venv/bin/jupyter", "notebook", "--ip=0.0.0.0", "--port=8888", "--no-browser", "--allow-root", "--NotebookApp.log_level='INFO'"]
EXPOSE 8888
================================================
FILE: bindings/kepler.gl-jupyter/MANIFEST.in
================================================
recursive-include keplergl/static *.*
recursive-include keplergl-jupyter/labextension *.*
include keplergl-jupyter.json
================================================
FILE: bindings/kepler.gl-jupyter/README.md
================================================
# kepler.gl for Jupyter
This is the [kepler.gl](http://kepler.gl) jupyter widget, an advanced geospatial visualization tool, to render large-scale interactive maps in Jupyter Notebook.
![Kepler.gl for Jupyter][jupyter_widget]
Table of contacts
- [Installation](#installation)
- [Quick Start](#quick-start)
- [Demo Notebooks](#demo-notebooks)
- [Usage](#usage)
- [Local Development Setup](#local-development-setup)
- [FAQ & Troubleshoot](#faq--troubleshoot)
## Installation
[](https://anaconda.org/conda-forge/keplergl) [](https://badge.fury.io/py/keplergl)
### 1. For Jupyter Notebook
#### Using conda:
```shell
conda install -c conda-forge keplergl
```
##### Prerequisites
- Python >= 3.7
#### Using pip:
```shell
pip install keplergl
```
##### Prerequisites
- For kelplergl <= 0.3.0
- Python >= 2
- ipywidgets >= 7.0.0
If you're on Mac, used `pip install`, and you're running Notebook 5.3 and above, you don't need to run the following:
```shell
jupyter nbextension install --py --sys-prefix keplergl # can be skipped for notebook 5.3 and above
jupyter nbextension enable --py --sys-prefix keplergl # can be skipped for notebook 5.3 and above
```
NOTE: For No Module named 'keplergl' error, please make sure your virtual environment is activated and has been added to the Jupyter kernel.
Use the following command to check the kernel list:
```shell
jupyter kernelspec list
```
Use the following command to add the virtual environment to the Jupyter kernel:
```shell
python -m ipykernel install --user --name=myenv
```
The `--name` parameter is your preferred name to identify the virtual environment
### 2. For Google Colab:
`keplergl` (>0.3.0) works with Google Colab. You can install it using pip.
```python
# Install keplergl (>0.3.0)
!pip install keplergl
```
### 3. For JupyterLab
#### JupyterLab 3
NOTE: `keplergl` <=0.3.0 doesn't work with JupyterLab 3. You need to make sure the python package `keplergl` > 0.3.0 is installed.
Installation using pip:
```shell
pip install keplergl
```
Installation using conda:
```shell
conda install keplergl
```
There is no need to use `jupyter labextension install` for `keplergl` > 0.3.0 with JupyterLab3.
#### JupyterLab 1
For JupyterLab1, you need to install `keplergl-jupyter` labextension from NPM registry. There is no need to install `keplergl` python package.
First, install `jupyterlab-manager` for JupyterLab1:
```shell
jupyter labextension install @jupyter-widgets/jupyterlab-manager@1.1
```
Then, install `keplergl-jupyter` labextension from NPM registry:
```shell
jupyter labextension install keplergl-jupyter
```
##### Prerequisites:
- Node >= 12
- Python 3
#### JupyterLab 2
For JupyterLab2, you need to install `keplergl-jupyter` labextension from NPM registry. There is no need to install `keplergl` python package.
First, install `jupyterlab-manager` for JupyterLab2:
```shell
jupyter labextension install @jupyter-widgets/jupyterlab-manager@2
```
To install `keplergl-jupyter` from NPM registry, JupyterLab2 has following requirements of dependencies:
```
JupyterLab Extension Package
>=16.9.0 <16.10.0 >=17.0.0 <18.0.0 react
>=16.9.0 <16.10.0 >=17.0.0 <18.0.0 react-dom
```
However, `keplergl-jupyter`<=0.3.0 depends on `react` >= 17.0.2. Therefore, the latest `keplergl-jupyter` can’t be installed with JupyterLab2: if you use `jupyter labextension install keplergl-jupyter`, the version 0.2.2 as a fallback will be installed. Unfortunately, version 0.2.2 does NOT work with JupyterLab2.
A workaround is to modify the file `lib/python3.x/site-packages/jupyterlab/staging/package.json` and remove “react” and “react-dom” from “singletonPackages” object. Then, install keplergl-jupyter using this command:
```
jupyter labextension install keplergl-jupyter
```
##### Prerequisites:
- Node >= 12
- Python 3
## Quick Start
### For Jupyter Notebook and JupyterLab:
NOTE: please make sure the python kernel is correctly specified in the notebook.
```python
# Load kepler.gl with an empty map
from keplergl import KeplerGl
map_1 = KeplerGl(height=400)
map_1
# Load kepler.gl with map data and config
# Since keplergl 0.3.4, you can pass `use_arrow=True` to load and render data faster using GeoArrow, e.g. `KeplerGl(data={'data_1': df}, config=config, use_arrow=True)`
map_2 = KeplerGl(height=400, data={'data_1': df}, config=config)
map_2
# Add data to map
# Since keplergl 0.3.4, you can pass `use_arrow=True` to load and render data faster using GeoArrow, e.g. `map_1.add_data(df, 'data_1', use_arrow=True)`
map_1.add_data(df, 'data_1')
# Apply config
map_1.config(config)
# print data and config
map_1.data
map_1.config
# save map to html
map_1.save_to_html(file_name='keplergl_map.html')
```
### For Google Colab:
Keplergl (>0.3.0) works with Google Colab. You can install it using pip.
```python
# Install keplergl (>0.3.0)
!pip install keplergl
# Load Kepler.gl with an empty map
from keplergl import KeplerGl
map_1 = KeplerGl()
# Display map
map_1.show()
```
The function `show()` is newly introduced for displaying map in Google Colab. The function is defined as:
```python
def show(self, data=None, config=None, read_only=False, center_map=False)
```
with input parameters:
- data: a data dictionary {"name": data}, if not provided, will use current map data
- config: map config dictionary, if not provided, will use current map config
- read_only: if read_only is True, hide side panel to disable map customization
- center_map: if center_map is True, the bound of the map will be updated according to the current map data
Please note that the map is not interactive due to the limitation of Google Colab. For example, when applying config to the map in Colab, the map won't be updated and one needs to call `show()` again to render a new map in a new cell.
## Demo Notebooks
- [Load kepler.gl](https://github.com/keplergl/kepler.gl/blob/master/bindings/kepler.gl-jupyter/notebooks/Load%20kepler.gl.ipynb): Load kepler.gl widget, add data and config
- [Geometry as String](https://github.com/keplergl/kepler.gl/blob/master/bindings/kepler.gl-jupyter/notebooks/Geometry%20as%20String.ipynb): Embed Polygon geometries as `GeoJson` and `WKT` inside a `CSV`
- [GeoJSON](https://github.com/keplergl/kepler.gl/blob/master/bindings/kepler.gl-jupyter/notebooks/GeoJSON.ipynb): Load GeoJSON to kepler.gl
- [DataFrame](https://github.com/keplergl/kepler.gl/blob/master/bindings/kepler.gl-jupyter/notebooks/DataFrame.ipynb): Load DataFrame to kepler.gl
- [GeoDataFrame](https://github.com/keplergl/kepler.gl/blob/master/bindings/kepler.gl-jupyter/notebooks/GeoDataFrame.ipynb): Load GeoDataFrame to kepler.gl
https://docs.kepler.gl/docs/keplergl-jupyter#1-load-keplergl-map
## Usage
- [1. Load kepler.gl](https://docs.kepler.gl/docs/keplergl-jupyter#1-load-keplergl-map)
- [`keplergl.KeplerGl()`](https://docs.kepler.gl/docs/keplergl-jupyter#keplergl)
- [2. Add Data](https://docs.kepler.gl/docs/keplergl-jupyter#2-add-data)
- [`.add_data()`](https://docs.kepler.gl/docs/keplergl-jupyter#add_data)
- [`.data`](https://docs.kepler.gl/docs/keplergl-jupyter#data)
- [3. Data Format](https://docs.kepler.gl/docs/keplergl-jupyter#3-data-format)
- [`CSV`](https://docs.kepler.gl/docs/keplergl-jupyter#csv)
- [`GeoJSON`](https://docs.kepler.gl/docs/keplergl-jupyter#geojson)
- [`DataFrame`](https://docs.kepler.gl/docs/keplergl-jupyter#dataframe)
- [`GeoDataFrame`](https://docs.kepler.gl/docs/keplergl-jupyter#geodataframe)
- [`WKT`](https://docs.kepler.gl/docs/keplergl-jupyter#wkt)
- [4. Customize the map](https://docs.kepler.gl/docs/keplergl-jupyter#4-customize-the-map)
- [5. Save and load config](https://docs.kepler.gl/docs/keplergl-jupyter#5-save-and-load-config)
- [`.config`](https://docs.kepler.gl/docs/keplergl-jupyter#config)
- [6. Match config with data](https://docs.kepler.gl/docs/keplergl-jupyter#6-match-config-with-data)
- [7. Save Map](https://docs.kepler.gl/docs/keplergl-jupyter#7-save-map)
- [`.save_to_html()`](https://docs.kepler.gl/docs/keplergl-jupyter#save_to_html)
## Local Development Setup
### Environment Setup
You will need to install node, yarn and Jupyter Notebook.
#### 1. Node and Yarn
Install [node](https://nodejs.org/en/download/package-manager/#macos) `> 12`, and [yarn](https://yarnpkg.com/en/docs/install#mac-stable). Use [nvm](https://github.com/creationix/nvm) for better node version management e.g. `nvm install 12`.
#### 2. Install Jupyter
- Using conda
```shell
conda install jupyter
conda install notebook 6.0.1
```
- Using pip
```shell
pip install jupyter
pip install notebook==6.0.1
```
#### 3. Install GeoPandas
- Using conda
```shell
conda install geopandas
```
- Using pip
```shell
pip install geopandas
```
### Download and run keplergl in your local Jupyter Notebook
#### Clone Repo
```shell
git clone https://github.com/keplergl/kepler.gl.git
```
### Setup JS
#### 1. Install Js module
```sh
cd bindings/kepler.gl-jupyter
cd js
yarn
```
#### 2. Load mapbox token
Add [Mapbox access token](https://docs.mapbox.com/help/how-mapbox-works/access-tokens/) to Node env.
```sh
export MapboxAccessTokenJupyter=
```
#### 3. Build js module, start a local server to watch for changes
```shell
npm start
```
You need to run step 2 and 3 to restart the js program. And step 1-3 if any js dependency has changed (Usually after pulling new changes from master).
### Setup jupyter
#### 1. Install python module and enable extension from local files
This command must be run **AFTER** the `js` setup, and folder `static/` was created. It only needs to be run once.
```sh
# dev install from folder containing setup.py
pip install -e .
# only needed in dev mode, not in normal mode.
jupyter nbextension install --py --symlink --sys-prefix keplergl
# only needed in dev mode, not in normal mode.
jupyter nbextension enable --py --sys-prefix keplergl
```
NOTE: The above command `jupyter nbextension install -py --symlink --sys-prefix keplergl` is trying to create a symbolic link of the folder `bindings/kepler.gl-jupyter/keplergl/static` under the jupyter's folder `nbextensions`. Please check if there is already a folder "nbextensions/kepler-jupyter" existed, and you might need to remove it first.
To find the location of `nbextensions` folder, you can use the following command:
```shell
$ where jupyter
/Users/test/opt/anaconda3/envs/test37/bin/jupyter
# the nbextensions should be at: /Users/test/opt/anaconda3/envs/test37/share/jupyter/nbextensions
```
#### 2. Start jupyter notebook
```shell
cd notebooks
jupyter notebook
```
#### Have fun!
You can now start editing the .js and .py files to see changes reflected in your local notebook. After changing files in the js folder, the local start script will recompile the js files and put them in to `keplergl/static` folder. You need to reload the jupyter notebook page to reload the files.
#### 3. Development for JupyterLab
To test the development work in previous 2 steps for JupyterLab. You can build the `keplergl labextension` under the `js` directory:
```shell
jupyter labextension build .
```
The output of the jupyter labextension is defined in the file `js/package.json`:
```javascript
...
"jupyterlab": {
"extension": "babel/labplugin",
"outputDir": "../keplergl-jupyter/labextension",
"sharedPackages": {
"@jupyter-widgets/base": {
"bundled": false,
"singleton": true
}
}
}
```
Then, you can either install this labextension to test it:
```shell
jupyter labextension install .
```
or, you can manually create a symbolic link for the folder `bindings/kepler.gl-jupyter/kepler-jupyter/labextension` under the jupyter's folder `labextensions`, e.g. `/Users/test/opt/anaconda3/envs/test37/share/jupyter/labextensions`. You will need to reload the jupyter lab page.
[jupyter_widget]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_widget.png
[empty_map]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_empty_map.png
[geodataframe_map]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_geodataframe.png
[map_interaction]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_custom_map.gif
[load_map_w_data]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_load_map_w_data.gif
[map_add_data]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_add_data.png
[connect_data_config]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_connect_data_w_config.png
[save_widget_state]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_save_state.png
[wkt]: https://dev.mysql.com/doc/refman/5.7/en/gis-data-formats.html#gis-wkt-format
[geojson]: https://tools.ietf.org/html/rfc7946
[feature_collection]: https://tools.ietf.org/html/rfc7946#section-3.3
[features]: https://tools.ietf.org/html/rfc7946#section-3.2
[data_frame]: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html
[geo_data_frame]: https://geopandas.readthedocs.io/en/latest/data_structures.html#geodataframe
[match-config-w-data]: #match-config-with-data
[data_format]: #3-data-format
================================================
FILE: bindings/kepler.gl-jupyter/RELEASE.md
================================================
# Kepler.gl Jupyter Releases
## Release a new version
When release a new version, the `keplergl-jupyter` js module will be published on NPM and the `keplergl` python module will be published on PyPI.
NOTE: __Version number of the js module **`kelergl-jupyter`** and the python module **`keplergl`** should match__
### Step1:
Update `version_info` in keplergl/_version.py in bindings/kepler.gl-jupyter folder.
Update `"version": "0.x.x"` to match the version info in js/package.json in bindings/kepler.gl-jupyter folder.
Update `EXTENSION_SPEC_VERSION` to match the js module version.
```
git add keplergl/_version.py
git add js/package.json
git commit -am "keplergl=="
```
### Step2:
Create a tag: `-jupyter` e.g. v0.3.4-jupyter
```
git tag -a -jupyter -m "-jupyter"
git push origin -jupyter
```
The new tag will trigger the Github Action `build-publish-pypi.yml`: __"Build KeplerGL Python and NPM packages"__. The packages will be built and tested, then published to NPM and PyPI using the secret tokens.
### Step3:
For conda-forge release, please use the repo: https://github.com/conda-forge/keplergl-feedstock
The new version should be automatically picked and built from PyPi by conda-forge. If you want to submit a manual build:
Edit `meta.yaml` under directory `recipes/`:
* Update the version number
```python
{% set version = "0.3.0" %}
```
* Update the sha256 value of the latest tarball in PyPi that is published in Step2.
```python
source:
url: https://pypi.io/packages/source/{{ name[0] }}/{{ name }}/{{ name }}-{{ version }}.tar.gz
sha256: cb21047b2104413af1c00ef1ac75794a19e0b578e51c69c86713911d97370167
```
* Create a pull request and wait for checking from conda-forge team.
================================================
FILE: bindings/kepler.gl-jupyter/js/.gitignore
================================================
node_modules/
dist/
temp.*
babel/
yarn-error.log
package-lock.json
================================================
FILE: bindings/kepler.gl-jupyter/js/README.md
================================================
# keplergl-jupyter
This is a simple jupyter widget for kepler.gl, an advanced geospatial visualization tool, to render large-scale interactive maps.
## Package Install
---
**Prerequisites**
- [node](http://nodejs.org/) >=8.15.0
- [yarn](https://yarnpkg.com/en/docs/install#mac-stable) >=1.6.0
**More links**
- [Jupyter Widget](https://ipywidgets.readthedocs.io/en/stable/examples/Widget%20Custom.html)
- [Widget Cookiecutter](https://github.com/jupyter-widgets/widget-cookiecutter)
## Local Dev
---
### Local Dev Installation for Classic Notebook
To develop this package against the classic notebook, run:
- `pip install -e .` (installs python package for development, runs `npm install` and `npm run build`)
- `jupyter nbextension install --py --symlink --sys-prefix keplergl`\
(symlinks `static/` directory into `/nbextensions/keplergl/`). Now the notebook has access to the frontend code.
- `jupyter nbextension enable --py --sys-prefix keplergl`\
(copies `.json` into `/etc/jupyter/nbconfig/notebook.d/` directory). Now the notebook will load your frontend code on page load.
Now make some changes to your source code. Then:
- After making Python code changes, restarting the notebook kernel will be enough to reflect changes
- After making JavaScript code changes:
- `cd js`
- `npm run build`
- Refresh browser to reflect changes
### Local Dev Installation for JupyterLab
To develop this package against JupyterLab, run:
- `pip install -e .` (installs python package for development, runs `npm install` and `npm run build`)
- `jupyter labextension install @jupyter-widgets/jupyterlab-manager`: this install lab widgets manager.
- `jupyter labextension install js`: this installs the current labextension into JupyterLab and enables it.
- `jupyter lab --watch` starts JupyterLab, but in `--watch` mode: it will rebuild itself incrementally if it detects changes.
Now make some changes to your source code. Then:
- After making Python code changes, restarting the notebook kernel will be enough to reflect changes
- After making JavaScript code changes:
- `cd js`
- `npm run build:lab`
- Refresh browser to reflect changes
- By default, the application will load from the JupyterLab staging directory (default is /share/jupyter/lab/staging. Check the correct version of `@jupyter-widgets/jupyterlab-manager` and `@jupyter-widgets/base` is install in `yarn.lock`
#### JupyterLab widget Dependencies
Install correct version of jupyterlab-manager based on your Jupyter Lab version. Make sure `@jupyter-widgets/base` version in the widget does not conflict with requirements in `jupyterlab-manager`.
- [@jupyter-widgets/jupyterlab-manager](https://github.com/jupyter-widgets/ipywidgets/tree/master/packages/jupyterlab-manager)
- [@jupyter-widgets/base](https://github.com/jupyter-widgets/ipywidgets/tree/master/packages/base)
- [@jupyter-widgets/base-manager](https://github.com/jupyter-widgets/ipywidgets/tree/master/packages/base-manager)
================================================
FILE: bindings/kepler.gl-jupyter/js/babel.config.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
const KeplerPackage = require('./package');
module.exports = function babel(api) {
api.cache(true);
const presets = ['@babel/preset-env', '@babel/preset-react', '@babel/preset-typescript'];
const plugins = [
'@babel/plugin-transform-modules-commonjs',
'@babel/plugin-transform-class-properties',
'@babel/plugin-transform-optional-chaining',
'@babel/plugin-transform-logical-assignment-operators',
'@babel/plugin-transform-nullish-coalescing-operator',
'@babel/plugin-transform-export-namespace-from',
'transform-inline-environment-variables',
[
'search-and-replace',
{
rules: [
{
search: '__PACKAGE_VERSION__',
replace: KeplerPackage.version
}
]
}
]
];
return {
presets,
plugins
};
};
================================================
FILE: bindings/kepler.gl-jupyter/js/lib/embed.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
// Entry point for the unpkg bundle containing custom model definitions.
//
// It differs from the notebook bundle in that it does not need to define a
// dynamic baseURL for the static assets and may load some css that would
// already be loaded by the notebook otherwise.
// Export widget models and views, and the npm package version number.
module.exports = require('./keplergl-plugin');
module.exports.version = require('../package.json').version;
================================================
FILE: bindings/kepler.gl-jupyter/js/lib/extension.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
// This file contains the javascript that is run when the notebook is loaded.
// It contains some requirejs configuration and the `load_ipython_extension`
// which is required for any notebook extension.
//
// Some static assets may be required by the custom widget javascript. The base
// url for the notebook is not known at build time and is therefore computed
// dynamically.
/* eslint-disable no-undef */
__webpack_public_path__ = `${document.querySelector('body').getAttribute('data-base-url') }nbextensions/keplergl-jupyter`;
/* eslint-enable no-undef */
// Configure requirejs
if (window.require) {
window.require.config({
map: {
"*" : {
"keplergl-jupyter": "nbextensions/keplergl-jupyter/index"
}
}
});
}
// Export the required load_ipython_extension
module.exports = {
load_ipython_extension() {}
};
================================================
FILE: bindings/kepler.gl-jupyter/js/lib/index.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
// Export widget models and views, and the npm package version number.
module.exports = require('./keplergl-plugin');
module.exports.version = require('../package.json').version;
================================================
FILE: bindings/kepler.gl-jupyter/js/lib/keplergl/components/app.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React, {useEffect, useState, useRef} from 'react';
import styled from 'styled-components';
const ReactHelmet = require('react-helmet');
const Helmet = ReactHelmet ? ReactHelmet.Helmet : null;
import {
SidebarFactory,
AddDataButtonFactory,
PanelHeaderFactory,
CustomPanelsFactory,
injectComponents
} from '@kepler.gl/components';
import CustomPanelHeaderFactory from './panel-header';
import CustomSidebarFactory from './side-bar';
import CustomCustomPanelsFactory from './config-panel';
export const KEPLER_GL_JUPYTER_VERSION = '__PACKAGE_VERSION__';
const CustomAddDataButtonFactory = () => {
const CustomAddDataButton = () =>
;
return CustomAddDataButton;
};
const KeplerGl = injectComponents([
[AddDataButtonFactory, CustomAddDataButtonFactory],
[SidebarFactory, CustomSidebarFactory],
[PanelHeaderFactory, CustomPanelHeaderFactory],
[CustomPanelsFactory, CustomCustomPanelsFactory]
]);
const MAPBOX_TOKEN = process.env.MapboxAccessTokenJupyter; // eslint-disable-line
const StyledContainer = styled.div`
width: 100%;
height: 100%;
.kepler-gl .ReactModal__Overlay.ReactModal__Overlay--after-open {
position: absolute !important;
}
.kepler-gl .side-panel__content > div {
display: flex;
height: 100%;
flex-direction: column;
}
`;
function App() {
const rootElm = useRef(null);
const [windowDimension, setDimension] = useState({});
const handleResize = () => {
if (!rootElm.current) {
return;
}
const width = rootElm.current.offsetWidth;
const height = rootElm.current.offsetHeight;
const dimensionToSet = {
...(width && width !== windowDimension.width ? {width} : {}),
...(height && height !== windowDimension.height ? {height} : {})
};
setDimension(dimensionToSet);
};
// in Jupyter Lab, parent component has transition when window resize.
// need to delay call to get the final parent width,
const resizeDelay = () => window.setTimeout(handleResize, 500);
useEffect(() => {
window.addEventListener('resize', resizeDelay);
return () => window.removeEventListener('resize', resizeDelay);
}, []);
return (
{Helmet ? (
) : null}
);
}
export default App;
================================================
FILE: bindings/kepler.gl-jupyter/js/lib/keplergl/components/config-panel.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React, {useState} from 'react';
import {Button, Icons, TextArea, withState} from '@kepler.gl/components';
import {KeplerGlSchema} from '@kepler.gl/schemas';
import {visStateLens, mapStateLens, mapStyleLens} from '@kepler.gl/reducers';
import {CopyToClipboard} from 'react-copy-to-clipboard';
import styled from 'styled-components';
const Params = {
true: 'True',
false: 'False',
null: 'None'
};
export const StyleCopyConfig = styled.div.attrs({
className: 'copy-config'
})`
width: 100%;
display: flex;
flex-direction: column;
height: 100%;
.copy-button {
position: absolute;
margin-top: -45px;
right: 28px;
}
textarea {
overflow-y: scroll;
white-space: pre-wrap;
width: 100%;
height: 100%;
resize: none;
}
`;
// convert config from string to pything dictionary
function configStringify(config) {
// replace true => True; false => False; null => None
const configStr = JSON.stringify(config, null, 2);
return configStr.replace(/: ([a-z]+)/g, function(_, key) {
return ': ' + Params[key] || ': ' + key;
});
}
export const CopyConfig = ({config}) => {
const [copied, setCopy] = useState(false);
const value = configStringify(config);
return (
setCopy(true)} className="copy-button">
{copied ? 'Copied!' : 'Copy'}
);
};
function CustomSidePanelsFactory() {
const CustomPanels = ({activeSidePanel, visState, mapState, mapStyle}) => {
const config = KeplerGlSchema.getConfigToSave({visState, mapState, mapStyle});
if (activeSidePanel === 'config') {
return ;
}
return null;
};
CustomPanels.defaultProps = {
panels: [
{
id: 'config',
label: 'Config',
iconComponent: Icons.CodeAlt
}
]
};
const ConnectedCustomPanels = withState(
[visStateLens, mapStateLens, mapStyleLens],
state => state
)(CustomPanels);
ConnectedCustomPanels.defaultProps = {
panels: [
{
id: 'config',
label: 'modal.exportMap.json.configTitle',
iconComponent: Icons.CodeAlt
}
]
};
return ConnectedCustomPanels;
}
export default CustomSidePanelsFactory;
================================================
FILE: bindings/kepler.gl-jupyter/js/lib/keplergl/components/panel-header.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {PanelHeaderFactory, Icons, withState} from '@kepler.gl/components';
import {toggleModal} from '@kepler.gl/actions';
import React from 'react';
import {IntlProvider} from 'react-intl';
const KEPLER_DOC = 'https://docs.kepler.gl/docs/keplergl-jupyter';
export function CustomPanelHeaderFactory() {
const PanelHeader = PanelHeaderFactory();
const actionItems = props => [
{
id: 'docs',
iconComponent: Icons.Docs,
href: KEPLER_DOC,
blank: true,
tooltip: 'tooltip.documentation',
onClick: () => {}
}
];
const JupyterPanelHeader = props => (
);
return withState([], state => state, {
toggleModal
})(JupyterPanelHeader);
}
export default CustomPanelHeaderFactory;
================================================
FILE: bindings/kepler.gl-jupyter/js/lib/keplergl/components/root.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React from 'react';
import ReactDOM from 'react-dom';
import {Provider} from 'react-redux';
import App from './app';
function renderRoot({id, store, ele}) {
const Root = () => (
);
ReactDOM.render( , ele);
}
export default renderRoot;
================================================
FILE: bindings/kepler.gl-jupyter/js/lib/keplergl/components/side-bar.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React from 'react';
import {SidebarFactory, CollapseButtonFactory} from '@kepler.gl/components';
import styled from 'styled-components';
const StyledSideBarContainer = styled.div`
.side-panel--container {
transform:scale(0.85);
transform-origin: top left;
height: 117.64%;
padding-top: 0;
padding-right: 0;
padding-bottom: 0;
padding-left: 0;
.side-bar {
height: 100%;
}
.side-bar__close {
right: -30px;
top: 14px;
}
}
`;
// Custom sidebar will render kepler.gl default side bar
// adding a wrapper component to edit its style
function CustomSidebarFactory() {
const CloseButton = CollapseButtonFactory();
const Sidebar = SidebarFactory(CloseButton);
const CustomSidebar = (props) => (
);
return CustomSidebar;
}
export default CustomSidebarFactory;
================================================
FILE: bindings/kepler.gl-jupyter/js/lib/keplergl/kepler.gl.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {addDataToMap, ActionTypes} from '@kepler.gl/actions';
import {KeplerGlSchema} from '@kepler.gl/schemas';
import document from 'global/document';
import renderRoot from './components/root';
import createAppStore from './store';
import {loadJupyterData} from './utils';
import log from '../log';
const getData = that => that.model.get('data');
const getConfig = that => that.model.get('config');
const getHeight = that => that.model.get('height');
const DOM_EL_ID = 'keplergl';
let counter = 0;
const NONE_UPDATE_ACTIONS = [
ActionTypes.REGISTER_ENTRY,
ActionTypes.DELETE_ENTRY,
ActionTypes.RENAME_ENTRY,
ActionTypes.LOAD_MAP_STYLES,
ActionTypes.LAYER_HOVER
];
function getConfigInStore({hash = true, store} = {}) {
if (store) {
const currentState = store.getState().keplerGl.map;
const currentValue = KeplerGlSchema.getConfigToSave(currentState);
return hash ? JSON.stringify(currentValue) : currentValue;
}
return {};
}
function getDatasetsInStore(store) {
if (store) {
return store.getState().keplerGl.map.visState.datasets;
}
}
class KeplerGlJupyter {
constructor() {
this.id = `${DOM_EL_ID}-${counter}`;
counter++;
this.mapUpdateCounter = 0;
}
create(that) {
log('kepler.gl create');
let previousValue;
function handleStoreChange(action, nextStore) {
log(action);
if (!action || NONE_UPDATE_ACTIONS.includes(action.type)) {
return;
}
const saveState = getConfigInStore({hash: false, store: nextStore});
const hash = JSON.stringify(saveState);
// should not update model after first UPDATE_MAP action
// when component first mounted
if (previousValue !== hash && this.mapUpdateCounter > 2) {
// keplerGl State has changed
log('store state has changed, update model');
log(previousValue);
log(hash);
previousValue = hash;
that.model.set({config: saveState});
// that.model.save_changes();
that.touch();
}
if (action.type === ActionTypes.UPDATE_MAP) {
this.mapUpdateCounter++;
}
}
this.store = createAppStore(handleStoreChange.bind(this));
const height = getHeight(that);
that.el.classList.add('jupyter-widgets');
that.el.classList.add('keplergl-jupyter-widgets');
const divElmt = document.createElement('div');
divElmt.setAttribute('id', this.id);
divElmt.classList.add('kepler-gl');
divElmt.setAttribute('style', ` width: 100%; height: ${height}px;`);
that.el.appendChild(divElmt);
renderRoot({id: this.id, store: this.store, ele: divElmt});
const data = getData(that);
const config = getConfig(that);
log('<<<<<<<< render finished! >>>>>>>>>');
// After rendering the component,
// we add the data that's already in the model
const hasData = data && Object.keys(data).length;
const hasConfig = config && config.version;
if (hasData) {
log('data already in model');
addDataConfigToKeplerGl({data, config, store: this.store});
} else if (hasConfig) {
log('config already in model');
this.onConfigChange(that);
}
}
onDataChange(that) {
log('kepler.gl onDataChange');
const data = getData(that);
addDataConfigToKeplerGl({data, store: this.store});
}
onConfigChange(that) {
log('kepler.gl onConfigChange');
const config = getConfig(that);
const currentValue = getConfigInStore({hash: true, store: this.store});
if (currentValue === JSON.stringify(config)) {
// calling model.set('config') inside the js component will trigger another onConfigChange
log('onConfigChange: config is the same as saved in store');
return;
}
this.store.dispatch(
addDataToMap({
// reuse datasets in state
// a hack to apply config to existing data
datasets: Object.values(getDatasetsInStore(this.store)).map(d => ({
info: {
id: d.id,
label: d.label,
color: d.color
},
data: {
fields: d.fields,
...(d.dataContainer instanceof ArrowDataContainer
? {cols: d.dataContainer._cols}
: {rows: d.allData})
}
})),
config,
options: {centerMap: false}
})
);
}
}
export function addDataConfigToKeplerGl({data: inputData, config, options, store}) {
const data = inputData ? dataToDatasets(inputData) : [];
log(data);
const results = loadJupyterData(data);
const succeeded = results.filter(r => r && r.data);
log('addDataConfigToKeplerGl');
log(succeeded);
log(config);
const hasMapState = Boolean(config && config.config && config.config.mapState);
store.dispatch(
addDataToMap({
datasets: succeeded,
config,
options: options || {centerMap: !hasMapState}
})
);
}
export function dataToDatasets(data) {
return Object.keys(data).map(key => ({
id: key,
data: data[key]
}));
}
export default KeplerGlJupyter;
================================================
FILE: bindings/kepler.gl-jupyter/js/lib/keplergl/main.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
// NOTE: this is only used for exporting html template
import createAppStore from './store';
import renderRoot from './components/root';
import document from 'global/document';
import Window from 'global/window';
import {addDataConfigToKeplerGl} from './kepler.gl';
const map = (function initKeplerGl() {
const id = 'keplergl-0';
const store = createAppStore();
const divElmt = document.createElement('div');
divElmt.setAttribute('style', 'width: 100vw; height: 100vh; position: absolute');
document.body.appendChild(divElmt);
return {
render: () => {
renderRoot({id, store, ele: divElmt});
},
store
};
})();
map.render();
(function loadDataConfig(keplerGlMap) {
const {data, config, options} = Window.__keplerglDataConfig || {};
addDataConfigToKeplerGl({data, config, options, store: keplerGlMap.store});
})(map);
================================================
FILE: bindings/kepler.gl-jupyter/js/lib/keplergl/store.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {applyMiddleware, compose, createStore} from 'redux';
import {combineReducers} from 'redux';
import {keplerGlReducer, enhanceReduxMiddleware} from '@kepler.gl/reducers';
const customizedKeplerGlReducer = keplerGlReducer.initialState({
uiState: {
currentModal: null,
activeSidePanel: null
}
});
const reducers = combineReducers({
// mount keplerGl reducer
keplerGl: customizedKeplerGlReducer
});
const createAppStore = onChangeHandler => {
const updatesMiddleware = store => next => action => {
// exclude some actions
// Call the next dispatch method in the middleware chain.
/* eslint-disable callback-return */
const returnValue = next(action);
/* eslint-enable callback-return */
// state after dispatch
if (typeof onChangeHandler === 'function') {
onChangeHandler(action, store);
}
// This will likely be the action itself, unless
// a middleware further in chain changed it.
return returnValue;
};
const middlewares = enhanceReduxMiddleware([updatesMiddleware]);
const enhancers = [applyMiddleware(...middlewares)];
const store = createStore(reducers, {}, compose(...enhancers));
return store;
};
export default createAppStore;
================================================
FILE: bindings/kepler.gl-jupyter/js/lib/keplergl/utils.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {tableFromIPC} from 'apache-arrow';
import {processCsvData, processGeojson, processArrowBatches} from '@kepler.gl/processors';
import log from '../log';
import console from 'global/console';
function handleJuptyerDataFormat(dataEntry) {
// This makes passing data between Jupyter the iframe easier
// detect data type here
log('handleJuptyerDataFormat');
const {data, id} = dataEntry;
let parsed = data;
let type = 'csv';
if (typeof data === 'object') {
if (data.columns && data.data && data.index) {
// Data is parsed as a Dataframe
log('data is a dataframe');
type = 'df';
// parsed = {fields: data.columns, data: data.data};
} else {
// assume is geojson
type = 'json';
}
} else if (typeof data === 'string') {
// check if js string is json string
try {
parsed = JSON.parse(data);
type = 'json';
} catch (e) {
// assume it is base64 string represents arrow table
try {
console.log('parse base64string arrow tabl');
// convert arrowTable from base64 string to ArrayBuffer
const arrowTableBuffer = Buffer.from(data, 'base64').buffer;
// create arrow table from ArrayBuffer
parsed = tableFromIPC([new Uint8Array(arrowTableBuffer)]);
type = 'arrow';
} catch (e) {
// now we can assume it is csv
}
}
}
return {data: parsed, type, id};
}
function processReceivedData({data, info}) {
// assume there is only 1 file
log('processReceivedData');
let processed;
try {
processed =
info.queryType === 'csv'
? processCsvData(data)
: info.queryType === 'json'
? processGeojson(data)
: info.queryType === 'df'
? processDataFrame(data)
: info.queryType === 'arrow'
? processArrowBatches(data.batches)
: null;
} catch (e) {
console.log(
`Kepler.gl fails to parse data, detected data
format is ${info.queryType}`,
e
);
}
return {data: processed, info};
}
function processDataFrame(data) {
const fields = data.columns.map(name => ({name}));
const rows = data.data;
// kepler.gl will detect field types
return {fields, rows};
}
export function loadJupyterData(rawData) {
const dataToLoad = rawData.map(handleJuptyerDataFormat).map(rd => ({
data: rd.data,
info: {
id: rd.id,
label: rd.id,
queryType: rd.type,
queryOption: 'jupyter'
}
}));
return dataToLoad.map(processReceivedData);
}
================================================
FILE: bindings/kepler.gl-jupyter/js/lib/keplergl-plugin.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import * as widgets from '@jupyter-widgets/base';
import KeplerGlJupyter from './keplergl/kepler.gl';
import log from './log';
// Custom Model. Custom widgets models must at least provide default values
// for model attributes, including
//
// - `_view_name`
// - `_view_module`
// - `_view_module_version`
//
// - `_model_name`
// - `_model_module`
// - `_model_module_version`
//
// when different from the base class.
// When serializing the entire widget state for embedding, only values that
// differ from the defaults will be specified.
// Note: in JavaScript, class.extend does not inherently inherit static functions.
export class KeplerGlModal extends widgets.DOMWidgetModel {
defaults() {
return {
...super.defaults(),
_model_name: 'KeplerGlModal',
_model_module: 'keplergl-jupyter',
_view_name: 'KeplerGlView',
_view_module: 'keplergl-jupyter',
data: {},
config: {}
};
}
}
export class KeplerGlView extends widgets.DOMWidgetView {
render() {
log('KeplerGlModal start render');
this.keplergl = new KeplerGlJupyter();
this.keplergl.create(this);
// event listener
this.model.on('change:data', this.data_changed, this);
this.model.on('change:config', this.config_changed, this);
window.dom = this.el;
}
data_changed() {
log('KeplerGlModal start data_changed');
this.keplergl.onDataChange(this);
}
config_changed() {
log('KeplerGlModal start config_change');
this.keplergl.onConfigChange(this);
}
}
================================================
FILE: bindings/kepler.gl-jupyter/js/lib/labplugin.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
var keplerglJupyter = require('./index');
var base = require('@jupyter-widgets/base');
module.exports = {
id: 'keplergl-jupyter',
requires: [base.IJupyterWidgetRegistry],
activate(app, widgets) {
widgets.registerWidget({
name: 'keplergl-jupyter',
version: keplerglJupyter.version,
exports: keplerglJupyter
});
},
autoStart: true
};
================================================
FILE: bindings/kepler.gl-jupyter/js/lib/log.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import console from 'global/console';
function log(...args) {
if (process.env.NODE_ENV === 'development') {
console.log(...args);
}
}
export default log;
================================================
FILE: bindings/kepler.gl-jupyter/js/package.json
================================================
{
"name": "keplergl-jupyter",
"version": "0.3.7",
"description": "This is a simple jupyter widget for kepler.gl, an advanced geo-spatial visualization tool, to render large-scale interactive maps.",
"author": "Shan He",
"license": "MIT",
"main": "babel/index.js",
"repository": {
"type": "git",
"url": "https://github.com/keplergl/kepler.gl.git"
},
"keywords": [
"jupyter",
"jupyterlab",
"jupyterlab-extension",
"widgets",
"ipython",
"ipywidgets"
],
"files": [
"lib/**/*.js",
"dist/*.js",
"babel/**"
],
"scripts": {
"start": "NODE_ENV=development webpack --config ./webpack/dev.js --mode development --watch --progress",
"clean": "rimraf dist/ && rimraf ../keplergl/static/",
"cleanall": "npm run clean && rimraf node_modules/",
"prepublishOnly": "NODE_OPTIONS=--openssl-legacy-provider yarn build && yarn build:lab",
"build": "NODE_OPTIONS=--openssl-legacy-provider npm run clean && npm run build:lab && webpack --config ./webpack/build.js && jupyter labextension build .",
"build:lab": "NODE_OPTIONS=--openssl-legacy-provider rimraf babel/ && mkdir babel && babel lib --out-dir babel",
"test": "echo \"Error: no test specified\" && exit 1",
"lint": "eslint lib webpack --fix",
"prettier": "prettier --config ./.prettierrc --print-width 80 --single-quote --write lib/**/*.js"
},
"devDependencies": {
"@babel/cli": "7.4.4",
"@babel/core": "^7.12.1",
"@babel/plugin-transform-class-properties": "^7.12.1",
"@babel/plugin-transform-export-namespace-from": "^7.12.1",
"@babel/plugin-transform-modules-commonjs": "^7.12.1",
"@babel/plugin-transform-optional-chaining": "^7.12.1",
"@babel/plugin-transform-runtime": "^7.12.1",
"@babel/plugin-transform-typescript": "^7.16.8",
"@babel/preset-env": "^7.0.0",
"@babel/preset-react": "^7.0.0",
"@babel/preset-typescript": "^7.16.7",
"@jupyterlab/builder": "^4.0.0",
"apache-arrow": "^13.0.0",
"babel-eslint": "^9.0.0",
"babel-loader": "^8.0.0",
"babel-plugin-search-and-replace": "^1.0.0",
"babel-plugin-transform-inline-environment-variables": "0.4.3",
"eslint": "^5.12.1",
"eslint-config-prettier": "^3.6.0",
"eslint-config-uber-es2015": "^3.1.2",
"eslint-config-uber-jsx": "^3.3.3",
"eslint-plugin-babel": "^5.3.0",
"eslint-plugin-prettier": "^3.0.1",
"eslint-plugin-react": "~7.12.4",
"html-webpack-plugin": "^4.3.0",
"react-dev-utils": "^10.2.1",
"rimraf": "^2.6.1",
"webpack": "^4.29.0",
"webpack-cli": "^3.2.1",
"webpack-dev-middleware": "^3.5.1",
"webpack-dev-server": "^3.1.14",
"webpack-hot-middleware": "^2.24.3",
"webpack-stats-plugin": "^0.2.1"
},
"dependencies": {
"@jupyter-widgets/base": "^6",
"@jupyterlab/builder": "^4.0.0",
"@kepler.gl/actions": "^3.0.0",
"@kepler.gl/components": "^3.0.0",
"@kepler.gl/processors": "^3.0.0",
"@kepler.gl/reducers": "^3.0.0",
"@kepler.gl/schemas": "^3.0.0",
"@kepler.gl/styles": "^3.0.0",
"@loaders.gl/arrow": "^4.1.0",
"@loaders.gl/core": "^4.1.0",
"@loaders.gl/csv": "^4.1.0",
"@loaders.gl/json": "^4.1.0",
"global": "^4.3.0",
"node-polyfill-webpack-plugin": "^1.1.2",
"querystring": "0.2.1",
"react": "^18.2.0",
"react-copy-to-clipboard": "^5.0.2",
"react-dom": "^18.2.0",
"react-helmet": "^5.2.0",
"react-intl": "^6.3.0",
"react-redux": "^8.0.5",
"redux": "^4.2.1",
"redux-actions": "^2.2.1",
"styled-components": "6.1.8"
},
"resolutions": {
"@deck.gl/core": "^8.9.27",
"@deck.gl/react": "^8.9.27",
"@deck.gl/aggregation-layers": "^8.9.27",
"@deck.gl/geo-layers": "^8.9.27",
"@deck.gl/layers": "^8.9.27"
},
"jupyterlab": {
"extension": "babel/labplugin",
"outputDir": "../keplergl-jupyter/labextension",
"sharedPackages": {
"@jupyter-widgets/base": {
"bundled": false,
"singleton": true
}
}
},
"engines": {
"node": ">=18"
},
"volta": {
"node": "18.18.2",
"yarn": "4.4.0"
},
"packageManager": "yarn@4.4.0"
}
================================================
FILE: bindings/kepler.gl-jupyter/js/template/keplergl-html.ejs
================================================
<% var item, key %>
<% htmlWebpackPlugin.options.appMountIds = htmlWebpackPlugin.options.appMountIds || [] %>
<% htmlWebpackPlugin.options.lang = htmlWebpackPlugin.options.lang || "en" %>
<% htmlWebpackPlugin.options.links = htmlWebpackPlugin.options.links || [] %>
<% htmlWebpackPlugin.options.meta = htmlWebpackPlugin.options.meta || [] %>
<% htmlWebpackPlugin.options.scripts = htmlWebpackPlugin.options.scripts || [] %>
manifest="<%= htmlWebpackPlugin.files.manifest %>"<% } %>>
<% if (htmlWebpackPlugin.options.baseHref) { %>
<% } %>
<% if (Array.isArray(htmlWebpackPlugin.options.meta)) { %>
<% for (item of htmlWebpackPlugin.options.meta) { %>
<%= key %>="<%= item[key] %>"<% } %>>
<% } %>
<% } %>
<%= htmlWebpackPlugin.options.title %>
<% if (htmlWebpackPlugin.files.favicon) { %>
<% } %>
<% if (htmlWebpackPlugin.options.mobile) { %>
<% } %>
<% for (item of htmlWebpackPlugin.options.links) { %>
<% if (typeof item === 'string' || item instanceof String) { item = { href: item, rel: 'stylesheet' } } %>
<%= key %>="<%= item[key] %>"<% } %>>
<% } %>
<% for (item of htmlWebpackPlugin.options.scripts) { %>
<% if (typeof item === 'string' || item instanceof String) { item = { src: item, type: 'text/javascript' } } %>
<% } %>
<% if (htmlWebpackPlugin.options.unsupportedBrowser) { %>
Sorry, your browser is not supported. Please upgrade to the latest version or switch your browser to use this
site. See
outdatedbrowser.com for options.
<% } %>
<% if (htmlWebpackPlugin.options.appMountId) { %>
<% } %>
<% for (item of htmlWebpackPlugin.options.appMountIds) { %>
<% } %>
<% if (htmlWebpackPlugin.options.window) { %>
<% } %>
<% if (htmlWebpackPlugin.options.inlineManifestWebpackName) { %>
<%= htmlWebpackPlugin.files[htmlWebpackPlugin.options.inlineManifestWebpackName] %>
<% } %>
<% if (htmlWebpackPlugin.options.devServer) { %>
<% } %>
================================================
FILE: bindings/kepler.gl-jupyter/js/webpack/build-html.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const InlineChunkHtmlPlugin = require('react-dev-utils/InlineChunkHtmlPlugin');
const packageJson = require('../package.json');
const {dependencies} = packageJson;
const entry = path.resolve(__dirname, '../lib/keplergl/main.js');
const template = path.resolve(__dirname, '../template/keplergl-html.ejs');
function clearCarats(version) {
return version && version.startsWith('^') ? version.substring(1) : version;
}
const VERSIONS = {
react: clearCarats(dependencies.react),
reactDom: clearCarats(dependencies['react-dom']),
redux: clearCarats(dependencies.redux),
reactRedux: clearCarats(dependencies['react-redux']),
// reactIntl UMD build is not available after 5.x
reactIntl: '4.7.6',
reactCopyToClipboard: clearCarats(dependencies['react-copy-to-clipboard']),
styledComponents: clearCarats(dependencies['styled-components']),
keplergl: clearCarats(dependencies['@kepler.gl/components'])
};
const externals = [
{react: 'React'},
{'react-dom': 'ReactDOM'},
{redux: 'Redux'},
{'react-redux': 'ReactRedux'},
{'react-intl': 'ReactIntl'},
{'react-copy-to-clipboard': 'CopyToClipboard'},
{'styled-components': 'styled'},
{'kepler.gl/reducers': 'KeplerGl'},
{'kepler.gl/components': 'KeplerGl'},
{'kepler.gl/actions': 'KeplerGl'},
{'kepler.gl/processors': 'KeplerGl'},
{'kepler.gl/schemas': 'KeplerGl'},
{'kepler.gl/middleware': 'KeplerGl'},
{'react-helmet': 'Helmet'}
].reduce((accu, ext) => ({
...accu,
[Object.keys(ext)[0]]: {
root: Object.values(ext)[0],
commonjs2: Object.keys(ext)[0],
commonjs: Object.keys(ext)[0]
}
}), {});
module.exports = (rules, plugins) => ({
entry,
output: {
path: path.resolve(__dirname, '../..', 'keplergl', 'static'),
libraryTarget: 'umd'
},
externals,
module: {
rules
},
plugins: [
// ...webpackConfig.plugins,
// new webpack.optimize.UglifyJsPlugin({sourceMap: true, compressor: {comparisons: false, warnings: false}}),
...plugins,
new HtmlWebpackPlugin({
template,
appMountId: 'app-content',
filename: 'keplergl.html',
inject: true,
links: [
'https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/uber-fonts/4.0.0/superfine.css',
'https://api.tiles.mapbox.com/mapbox-gl-js/v1.1.1/mapbox-gl.css',
'https://unpkg.com/maplibre-gl@^3/dist/maplibre-gl.css'
],
scripts: [
`https://unpkg.com/react@${VERSIONS.react}/umd/react.production.min.js`,
`https://unpkg.com/react-dom@${VERSIONS.reactDom}/umd/react-dom.production.min.js`,
`https://unpkg.com/redux@${VERSIONS.redux}/dist/redux.js`,
`https://unpkg.com/react-redux@${VERSIONS.reactRedux}/dist/react-redux.min.js`,
`https://unpkg.com/react-intl@${VERSIONS.reactIntl}/dist/react-intl.min.js`,
`https://unpkg.com/react-copy-to-clipboard@${VERSIONS.reactCopyToClipboard}/build/react-copy-to-clipboard.min.js`,
`https://unpkg.com/styled-components@${VERSIONS.styledComponents}/dist/styled-components.min.js`,
// load kepler.gl last
// `https://unpkg.com/kepler.gl@${VERSIONS.keplergl}/umd/keplergl.min.js`
],
title: 'Kepler.gl'
}),
new InlineChunkHtmlPlugin(HtmlWebpackPlugin, [/main/])
],
node: {
fs: 'empty'
}
});
================================================
FILE: bindings/kepler.gl-jupyter/js/webpack/build.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
const config = require('./config');
const mode = 'production';
module.exports = [
{
...config.extension,
devtool: 'source-map',
mode
},
{
...config.widget,
devtool: 'source-map',
mode
},
config.umd,
config.html
];
================================================
FILE: bindings/kepler.gl-jupyter/js/webpack/config.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
const path = require('path');
const version = require('../package.json').version;
const webpack = require('webpack');
const buildHtml = require('./build-html');
const rules = [
{
test: /\.(js|jsx|ts|tsx)$/,
loader: 'babel-loader',
include: path.join(__dirname, '../lib', 'keplergl'),
exclude: [/node_modules/]
},
// fix for arrow-related errors
{
test: /\.mjs$/,
// include: /node_modules[\\/]apache-arrow/,
include: /node_modules/,
type: 'javascript/auto'
},
// for compiling @probe.gl, website build started to fail (March, 2024)
{
test: /\.(js|ts)$/,
loader: 'babel-loader',
include: [
/node_modules[\\/]@probe.gl/,
/node_modules[\\/]@loaders.gl/,
/node_modules[\\/]@math.gl/
]
}
];
const plugins = [
new webpack.EnvironmentPlugin(['MapboxAccessTokenJupyter'])
];
module.exports = {
extension: {
// Notebook extension
//
// This bundle only contains the part of the JavaScript that is run on
// load of the notebook. This section generally only performs
// some configuration for requirejs, and provides the legacy
// "load_ipython_extension" function which is required for any notebook
// extension.
//
entry: path.resolve(__dirname, '../lib/extension.js'),
output: {
filename: 'extension.js',
path: path.resolve(__dirname, '../..', 'keplergl', 'static'),
libraryTarget: 'amd'
},
node: {
fs: 'empty'
},
plugins
},
widget: {
// Bundle for the notebook containing the custom widget views and models
//
// This bundle contains the implementation for the custom widget views and
// custom widget.
// It must be an amd module
//
entry: path.resolve(__dirname, '../lib/index.js'),
// watch: true,
watchOptions: {
ignored: ['dist', 'node_modules']
},
output: {
filename: 'index.js',
path: path.resolve(__dirname, '../..', 'keplergl', 'static'),
libraryTarget: 'amd'
},
// adding source map significantly slows down the
// devtool: 'source-map',
module: {
rules
},
externals: ['@jupyter-widgets/base'],
node: {
fs: 'empty'
},
plugins
},
html: buildHtml(rules, plugins),
umd: {
// Embeddable {{ cookiecutter.npm_package_name }} bundle
// This bundle is generally almost identical to the notebook bundle
// containing the custom widget views and models.
// The only difference is in the configuration of the webpack public path
// for the static assets.
// It will be automatically distributed by unpkg to work with the static
// widget embedder.
// The target bundle is always `dist/index.js`, which is the path required
// by the custom widget embedder.
entry: path.resolve(__dirname, '../lib/embed.js'),
output: {
filename: 'index.js',
path: path.resolve(__dirname, '../dist'),
libraryTarget: 'amd',
publicPath: `https://unpkg.com/keplergl-jupyter@${version}/dist/`
},
mode: 'production',
module: {
rules
},
externals: ['@jupyter-widgets/base'],
node: {
fs: 'empty'
},
plugins
}
};
module.exports.rules = rules;
module.exports.plugins = plugins;
================================================
FILE: bindings/kepler.gl-jupyter/js/webpack/dev.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
const config = require('./config');
module.exports = [
// Notebook extension
config.extension,
// Notebook widget
{
...config.widget,
devtool: 'source-map',
watch: true,
watchOptions: {
ignored: ['dist', 'node_modules']
}
},
// Html template
config.html
];
================================================
FILE: bindings/kepler.gl-jupyter/keplergl/__init__.py
================================================
# SPDX-License-Identifier: MIT
# Copyright contributors to the kepler.gl project
from ._version import version_info, __version__
from .keplergl import *
def _jupyter_nbextension_paths():
return [{
'section': 'notebook',
'src': 'static',
'dest': 'keplergl-jupyter',
'require': 'keplergl-jupyter/extension'
}]
================================================
FILE: bindings/kepler.gl-jupyter/keplergl/_version.py
================================================
# SPDX-License-Identifier: MIT
# Copyright contributors to the kepler.gl project
version_info = (0, 3, 7, 'final', 0)
_specifier_ = {'alpha': 'a', 'beta': 'b', 'candidate': 'rc', 'final': ''}
major, minor, patch, release, serial = version_info
__version__ = '%s.%s.%s%s'%(major, minor, patch,
'' if release=='final' else '-' + _specifier_[release]+str(serial))
# The version of the attribute spec that this package
# implements. This is the value used in
# _model_module_version/_view_module_version.
#
# Update this value when attributes are added/removed from
# the widget models, or if the serialized format changes.
#
# The major version needs to match that of the JS package.
# Note: this follows the semver format, which is used to match the JS package version in keplergl-plugin.js
EXTENSION_SPEC_VERSION = '0.3.7'
================================================
FILE: bindings/kepler.gl-jupyter/keplergl/keplergl.py
================================================
# SPDX-License-Identifier: MIT
# Copyright contributors to the kepler.gl project
# Ignore warnings from IPython.core.formatters for _repr_html_ that returns different types in different versions of IPyWidgets
import warnings
warnings.filterwarnings('ignore', category=UserWarning,
module='IPython.core.formatters')
import base64
import sys
import json
import ipywidgets as widgets
from pkg_resources import resource_string
from traitlets import Unicode, Dict, Int, validate, TraitError
import pandas as pd
import geopandas
import pyarrow
import geoarrow.pyarrow as ga
import geoarrow.pandas as _
import shapely.wkt
from ._version import EXTENSION_SPEC_VERSION
documentation = 'https://docs.kepler.gl/docs/keplergl-jupyter'
# global variable use_arrow, which can be set by parameter use_arrow in KeplerGl
g_use_arrow = False
def _arrow_table_to_base64(arrow_table):
'''Convert an arrow table to a base64 string'''
batches = arrow_table.to_batches()
sink = pyarrow.BufferOutputStream()
writer = pyarrow.ipc.new_stream(sink, arrow_table.schema)
for batch in batches:
writer.write_batch(batch)
arrow_buf = sink.getvalue()
# TODO: we could send the bytes directly to the frontend using traitlets.Bytes
base64_string = base64.b64encode(arrow_buf.to_pybytes()).decode()
return base64_string
def _df_to_dict(df):
''' Create an input dict for Kepler.gl using a DataFrame object
Inputs:
- df: a DataFrame object
Returns:
- dictionary: a dictionary variable that can be used in Kepler.gl
'''
df_copy = df.copy()
# Convert all columns that aren't JSON serializable to strings
for col in df_copy.columns:
try:
# just check the first item in the column
json.dumps(df_copy[col].iloc[0] if len(df_copy) > 0 else None)
except (TypeError, OverflowError):
df_copy[col] = df_copy[col].astype(str)
return df_copy.to_dict('split')
def _df_to_arrow(df: pd.DataFrame):
''' Create an arrow base64string for Kepler.gl using a DataFrame object
Inputs:
- df: a DataFrame object
Returns:
- string: a base64 string that can be used in Kepler.gl
'''
arrow_table = pyarrow.Table.from_pandas(df)
base64_string = _arrow_table_to_base64(arrow_table)
return base64_string
def _gdf_to_dict(gdf):
''' Create an input dict for kepler.gl using a GeoDataFrame object
Inputs:
- gdf: a GeoDataFrame object
Returns:
- dictionary: a dictionary variable that can be used in Kepler.gl
'''
# reproject to 4326 if needed
if gdf.crs and not gdf.crs == 4326:
gdf = gdf.to_crs(4326)
# get name of the geometry column
# will cause error if data frame has no geometry column
name = gdf.geometry.name
# convert geodataframe to dataframe
df = pd.DataFrame(gdf)
# convert geometry to wkt
df[name] = df.geometry.apply(lambda x: shapely.wkt.dumps(x))
# df[name] = shapely.wkt.dumps(df.geometry)
return _df_to_dict(df)
def _gdf_to_arrow(gdf):
''' Create an arrow base64string for Kepler.gl using a GeoDataFrame object'''
# reproject to 4326 if needed
if gdf.crs and not gdf.crs == 4326:
gdf = gdf.to_crs(4326)
# get name of the geometry column
# will cause error if data frame has no geometry column
name = gdf.geometry.name
array = ga.as_geoarrow(gdf.geometry, coord_type=ga.CoordType.INTERLEAVED)
table = pyarrow.Table.from_pandas(gdf.drop(columns=[name]))
arrow_table = table.append_column(name, array)
base64_string = _arrow_table_to_base64(arrow_table)
return base64_string
def _normalize_data(data, use_arrow=False):
if isinstance(data, pd.DataFrame):
if use_arrow:
return _gdf_to_arrow(data) if isinstance(data, geopandas.GeoDataFrame) else _df_to_arrow(data)
else:
return _gdf_to_dict(data) if isinstance(data, geopandas.GeoDataFrame) else _df_to_dict(data)
return data
def data_to_json(data, manager):
'''Serialize a Python data object.
Attributes of this dictionary are to be passed to the JavaScript side.
'''
if data is None:
return None
else:
if not isinstance(data, dict):
print(data)
raise TraitError(
f"data type incorrect expecting a dictionary mapping from data id to value, but got {type(data)}")
else:
dataset = {}
# use g_use_arrow to determine if we should use arrow
for key, value in data.items():
normalized = _normalize_data(value, g_use_arrow)
dataset.update({key: normalized})
return dataset
def data_from_json(js, manager):
'''Deserialize a Javascript date.'''
return js
data_serialization = {
'from_json': data_from_json,
'to_json': data_to_json
}
class TraitError(Exception):
pass
class DataException(TraitError):
pass
@widgets.register
class KeplerGl(widgets.DOMWidget):
"""An example widget."""
_view_name = Unicode('KeplerGlView').tag(sync=True)
_model_name = Unicode('KeplerGlModal').tag(sync=True)
_view_module = Unicode('keplergl-jupyter').tag(sync=True)
_model_module = Unicode('keplergl-jupyter').tag(sync=True)
_view_module_version = Unicode(EXTENSION_SPEC_VERSION).tag(sync=True)
_model_module_version = Unicode(EXTENSION_SPEC_VERSION).tag(sync=True)
# Attributes
value = Unicode('Hello World!').tag(sync=True)
data = Dict({}).tag(sync=True, **data_serialization)
config = Dict({}).tag(sync=True)
height = Int(400).tag(sync=True)
def __init__(self, **kwargs):
if 'show_docs' not in kwargs:
kwargs['show_docs'] = True
if kwargs['show_docs']:
print(f"User Guide: {documentation}")
kwargs.pop('show_docs')
# assign use_arrow to global variable
global g_use_arrow
g_use_arrow = kwargs.get('use_arrow', False)
super(KeplerGl, self).__init__(**kwargs)
@validate('data')
def _validate_data(self, proposal):
'''Validate data input (return from data_to_json)
Makes sure data is a dict, and each value should be either a df, a geojson dictionary / string or csv string
layers list.
'''
if not isinstance(proposal.value, dict):
raise DataException(f"[data type error]: Expecting a dictionary mapping from id to value, but got {type(proposal.value)}")
else:
for key, value in proposal.value.items():
if not isinstance(value, pd.DataFrame) and not isinstance(value, str) and not isinstance(value, dict):
raise DataException(f"[data type error]: value of {key} should be a DataFrame, a Geojson Dictionary or String, a csv String, but got {type(value)}")
return proposal.value
def add_data(self, data, name="unnamed", use_arrow=False):
''' Send data to Voyager
Inputs:
- data string, can be a dataframe, csv string or json string
- name string
Example of use:
keplergl.add_data(data_string, name="data_1")
'''
normalized = _normalize_data(data, use_arrow)
copy = self.data.copy()
copy.update({name: normalized})
self.data = copy
def show(self, data=None, config=None, read_only=False, center_map=False):
''' Display current map in Google Colab
Inputs:
- data: a data dictionary {"name": data}, if not provided, will use current map data
- config: map config dictionary, if not provided, will use current map config
- read_only: if read_only is True, hide side panel to disable map customization
- center_map: if center_map is True, the bound of the map will be updated according to the current map data
Example of use:
# this will display map in Google Colab
from keplergl import KeplerGL
map1 = KeplerGL()
map1.show()
'''
keplergl_html = resource_string(
__name__, 'static/keplergl.html').decode('utf-8')
# find open of body
k = keplergl_html.find("")
data_to_add = data_to_json(self.data if data is None else data, None)
config_to_add = self.config if config is None else config
keplergl_data = json.dumps({"config": config_to_add, "data": data_to_add, "options": {
"readOnly": read_only, "centerMap": center_map}})
cmd = f"window.__keplerglDataConfig = {keplergl_data};"
frame_txt = keplergl_html[:k] + "" + keplergl_html[k+6:]
if "google.colab" in sys.modules:
from IPython.display import HTML, Javascript
display(HTML(frame_txt))
display(Javascript(
f"google.colab.output.setIframeHeight('{self.height}');"))
def _repr_html_(self, data=None, config=None, read_only=False, center_map=False):
''' Return current map in an html encoded string
Inputs:
- data: a data dictionary {"name": data}, if not provided, will use current map data
- config: map config dictionary, if not provided, will use current map config
- read_only: if read_only is True, hide side panel to disable map customization
- center_map: if center_map is True, the bound of the map will be updated according to the current map data
Returns:
- a html encoded string
Example of use:
# this will save map with provided data and config
keplergl._repr_html_(data={"data_1": df}, config=config)
# this will save current map
keplergl._repr_html_()
'''
keplergl_html = resource_string(
__name__, 'static/keplergl.html').decode('utf-8')
# find open of body
k = keplergl_html.find("")
data_to_add = data_to_json(self.data if data is None else data, None)
config_to_add = self.config if config is None else config
# for key in data_to_add:
# print(type(data_to_add[key]))
keplergl_data = json.dumps({"config": config_to_add, "data": data_to_add, "options": {
"readOnly": read_only, "centerMap": center_map}})
cmd = f"window.__keplerglDataConfig = {keplergl_data};"
frame_txt = keplergl_html[:k] + "" + keplergl_html[k+6:]
return frame_txt.encode('utf-8')
def save_to_html(self, data=None, config=None, file_name='keplergl_map.html', read_only=False, center_map=False):
''' Save current map to an interactive html
Inputs:
- data: a data dictionary {"name": data}, if not provided, will use current map data
- config: map config dictionary, if not provided, will use current map config
- file_name: the html file name, default is keplergl_map.html
- read_only: if read_only is True, hide side panel to disable map customization
Returns:
- an html file will be saved to your notebook
Example of use:
# this will save map with provided data and config
keplergl.save_to_html(data={"data_1": df}, config=config, file_name='first_map.html')
# this will save current map
keplergl.save_to_html(file_name='first_map.html')
'''
frame_txt = self._repr_html_(
data=data, config=config, read_only=read_only, center_map=center_map)
with open(file_name, 'wb') as f:
f.write(frame_txt)
print(f"Map saved to {file_name}!")
================================================
FILE: bindings/kepler.gl-jupyter/keplergl-jupyter.json
================================================
{
"load_extensions": {
"keplergl-jupyter/extension": true
}
}
================================================
FILE: bindings/kepler.gl-jupyter/notebooks/DataFrame.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"df = pd.DataFrame(\n",
" {'City': ['Buenos Aires', 'Brasilia', 'Santiago', 'Bogota', 'Caracas'],\n",
" 'Country': ['Argentina', 'Brazil', 'Chile', 'Colombia', 'Venezuela'],\n",
" 'Latitude': [-34.58, -15.78, -33.45, 4.60, 10.48],\n",
" 'Longitude': [-58.66, -47.91, -70.66, -74.08, -66.86],\n",
" 'Time': ['2019-09-01 08:00','2019-09-01 09:00','2019-09-01 10:00','2019-09-01 11:00', '2019-09-01 12:00']\n",
" })"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"User Guide: https://docs.kepler.gl/docs/keplergl-jupyter\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "b85241da03b2474bb2c5cb6cef155a80",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"KeplerGl(data={'data_1': City Country Latitude Longitude Time\n",
"0 Buenos Aires Ar…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import keplergl\n",
"w1 = keplergl.KeplerGl(height=600, data={'data_1': df})\n",
"w1"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Map saved to keplergl_map.html!\n"
]
}
],
"source": [
"w1.save_to_html(file_name='keplergl_map.html')"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.4"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
================================================
FILE: bindings/kepler.gl-jupyter/notebooks/GeoDataFrame.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import geopandas"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"df = pd.DataFrame(\n",
" {'City': ['Buenos Aires', 'Brasilia', 'Santiago', 'Bogota', 'Caracas'],\n",
" 'Country': ['Argentina', 'Brazil', 'Chile', 'Colombia', 'Venezuela'],\n",
" 'Latitude': [-34.58, -15.78, -33.45, 4.60, 10.48],\n",
" 'Longitude': [-58.66, -47.91, -70.66, -74.08, -66.86]})"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"point_gdf = geopandas.GeoDataFrame(df, geometry=geopandas.points_from_xy(df.Longitude, df.Latitude))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"zipcode_gdf = geopandas.read_file('sf_zip_geo.json')\n",
"display(zipcode_gdf.head(5))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": false
},
"outputs": [],
"source": [
"import keplergl\n",
"w1 = keplergl.KeplerGl(height=500)\n",
"w1"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"w1.add_data(data=zipcode_gdf, name=\"zipcode\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"w1.add_data(data=point_gdf, name='cities')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"w1.save_to_html(file_name='city_map.html', read_only=True)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: bindings/kepler.gl-jupyter/notebooks/GeoJSON.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"with open('geojson-data.json', 'r') as f:\n",
" geojson = f.read()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import keplergl\n",
"map_1 = keplergl.KeplerGl(height=600)\n",
"map_1"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"map_1.add_data(geojson, \"geojson\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"map_1.save_to_html(file_name=\"geojson_map.html\")"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.4"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: bindings/kepler.gl-jupyter/notebooks/Load kepler.gl.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"df = pd.read_csv('hex-data.csv')\n",
"df = df.fillna('')\n",
"print(df)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import json\n",
"with open('sf_zip_geo.json', 'r') as f:\n",
" geojson = f.read()\n",
"\n",
"json_data=json.loads(geojson)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# assign config = hex_config\n",
"%run hex_config.py"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import keplergl\n",
"w1 = keplergl.KeplerGl(height=500, data={\"data_1\": df}, config=config)\n",
"# w1 = keplergl.KeplerGl(height=500)\n",
"w1"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"w1.add_data(df, 'data_1')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"w1.config"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"w1.add_data(json_data, 'geojson')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"w1.save_to_html(file_name='first_map.html', data={\"data_1\": df}, config=config)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.4"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
================================================
FILE: bindings/kepler.gl-jupyter/notebooks/geojson-data.json
================================================
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"fill": true
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
2.331032753,
48.8411359942
],
[
2.3269987106,
48.8425764529
],
[
2.3253250122,
48.8431130838
],
[
2.3240375519,
48.8435367357
],
[
2.3217630386,
48.8443840288
],
[
2.3203468323,
48.8448923977
],
[
2.3189735413,
48.8453160346
],
[
2.3167848587,
48.846558682
],
[
2.3136520386,
48.8456831836
],
[
2.3111844063,
48.8450618529
],
[
2.3070859909,
48.8438897762
],
[
2.2969740629,
48.8408994443
],
[
2.2952359915,
48.8427106112
],
[
2.2949945927,
48.84285183
],
[
2.2928863764,
48.8436249961
],
[
2.2912180424,
48.844327543
],
[
2.2873932123,
48.8458173336
],
[
2.2863632441,
48.8462833253
],
[
2.2854137421,
48.8467704938
],
[
2.2820448875,
48.849008584
],
[
2.2804355621,
48.8498063649
],
[
2.2793841362,
48.8498204848
],
[
2.2790408134,
48.8506535519
],
[
2.2756505013,
48.8526585039
],
[
2.2742128372,
48.8531667889
],
[
2.2726249695,
48.8535197615
],
[
2.2703289986,
48.8542539366
],
[
2.2671747208,
48.8551434035
],
[
2.2649002075,
48.855694018
],
[
2.2637414932,
48.8544233601
],
[
2.2617030144,
48.8551010483
],
[
2.2633981705,
48.8576564152
],
[
2.2649002075,
48.8599434285
],
[
2.2664451599,
48.8626538275
],
[
2.2666811943,
48.8631902432
],
[
2.267947197,
48.8647006461
],
[
2.2694063187,
48.8667897264
],
[
2.2713589668,
48.8690480934
],
[
2.2736120224,
48.871009967
],
[
2.2753071785,
48.8723507717
],
[
2.2773456573,
48.8737197667
],
[
2.2782897949,
48.8750040476
],
[
2.2804999352,
48.8774737258
],
[
2.2818946838,
48.8795058267
],
[
2.2835040092,
48.8808605148
],
[
2.2857570648,
48.882229277
],
[
2.2899627686,
48.8848396989
],
[
2.2913146019,
48.8857568418
],
[
2.294511795,
48.8876475141
],
[
2.2955846786,
48.8878732613
],
[
2.2964859009,
48.8878027154
],
[
2.297065258,
48.8876192956
],
[
2.2975587845,
48.8874923124
],
[
2.298116684,
48.8875064216
],
[
2.298438549,
48.8875910772
],
[
2.2989320755,
48.8879296979
],
[
2.2997903824,
48.8882965344
],
[
2.3006701469,
48.8886210414
],
[
2.3015713692,
48.889270049
],
[
2.3037815094,
48.8903423041
],
[
2.3057985306,
48.8900742425
],
[
2.3074293137,
48.8893405928
],
[
2.3093390465,
48.8887762396
],
[
2.311205864,
48.8880566801
],
[
2.314145565,
48.8876051864
],
[
2.3184370995,
48.8917954552
],
[
2.3220419884,
48.8897497449
],
[
2.325668335,
48.887703951
],
[
2.3268485069,
48.8851924481
],
[
2.3274922371,
48.8838378774
],
[
2.328063794,
48.883946667
],
[
2.329651662,
48.88493438
],
[
2.336046047,
48.88318471
],
[
2.339479275,
48.882422738
],
[
2.342912503,
48.882987163
],
[
2.345744913,
48.883551581
],
[
2.34951366,
48.884013132
],
[
2.35071529,
48.882827858
],
[
2.351959835,
48.881501444
],
[
2.352954691,
48.880503646
],
[
2.354234348,
48.8790743
],
[
2.355393062,
48.877752921
],
[
2.35625137,
48.876623947
],
[
2.3603439331,
48.8759495959
],
[
2.3634767532,
48.875413317
],
[
2.3630905151,
48.8741996118
],
[
2.3636484146,
48.8733528233
],
[
2.3643350601,
48.8725060204
],
[
2.3652791977,
48.8711511061
],
[
2.3658370972,
48.8704171788
],
[
2.3668670654,
48.8691468946
],
[
2.3678970337,
48.8694432972
],
[
2.3685836792,
48.8686105428
],
[
2.368991375,
48.8680459556
],
[
2.3677682877,
48.8677636597
],
[
2.3687553406,
48.8666626902
],
[
2.3702573776,
48.8647994559
],
[
2.371544838,
48.8632184755
],
[
2.3724031448,
48.8618350766
],
[
2.3724031448,
48.8604516395
],
[
2.3719739914,
48.8594634467
],
[
2.371544838,
48.8586164088
],
[
2.3711585999,
48.8575434736
],
[
2.3706436157,
48.8566681672
],
[
2.3701715469,
48.8555951902
],
[
2.3698282242,
48.8546916128
],
[
2.3700428009,
48.8529126471
],
[
2.3684120178,
48.8526302657
],
[
2.3662662506,
48.8520654983
],
[
2.3646354675,
48.8515007245
],
[
2.3644798994,
48.8514583662
],
[
2.3643136024,
48.8514195377
],
[
2.3640614748,
48.8513312911
],
[
2.3639059067,
48.8512854028
],
[
2.3637878895,
48.8512395145
],
[
2.3636591434,
48.8511759767
],
[
2.3634928465,
48.8511159687
],
[
2.363294363,
48.8510594905
],
[
2.3630422354,
48.8509888927
],
[
2.3628437519,
48.8509394742
],
[
2.3625648022,
48.8507806287
],
[
2.3624360561,
48.8507100305
],
[
2.3620980978,
48.8506641416
],
[
2.3619157076,
48.8506394322
],
[
2.3615992069,
48.8506217826
],
[
2.361395359,
48.8505829535
],
[
2.3611968756,
48.8505441243
],
[
2.3611646891,
48.8504982353
],
[
2.361100316,
48.8504452864
],
[
2.3609608412,
48.8503888075
],
[
2.3608535528,
48.8503287985
],
[
2.3607730865,
48.8502970291
],
[
2.3605155945,
48.8502299602
],
[
2.360419035,
48.8501805409
],
[
2.3603439331,
48.8501523013
],
[
2.3601508141,
48.8500287529
],
[
2.3589706421,
48.8495804459
],
[
2.3583698273,
48.8491850853
],
[
2.365322113,
48.8442710572
],
[
2.3629188538,
48.8400909296
],
[
2.3513317108,
48.8363624133
],
[
2.3368692398,
48.8393000554
],
[
2.3351955414,
48.8398367214
],
[
2.3342084885,
48.8402039106
],
[
2.3331356049,
48.8405146071
],
[
2.331032753,
48.8411359942
]
]
]
}
}
]
}
================================================
FILE: bindings/kepler.gl-jupyter/notebooks/hex-data.csv
================================================
hex_id,value,is_true,float_value,empty,time
89283082c2fffff,64,true,64.1,,11/1/17 11:00
8928308288fffff,73,true,73.1,,11/1/17 11:00
89283082c07ffff,65,true,65.1,,11/1/17 11:00
89283082817ffff,74,true,74.1,,11/1/17 11:00
89283082c3bffff,66,true,66.1,,11/1/17 11:00
89283082883ffff,76,true,76.1,,11/1/17 11:00
89283082c03ffff,60,true,60.1,,11/1/17 11:00
89283082807ffff,68,true,68.1,,11/1/17 10:00
8928308289bffff,49,true,49.1,,11/1/17 11:00
89283082c0fffff,41,true,41.1,,11/1/17 11:00
89283082c87ffff,50,true,50.1,,11/1/17 11:00
89283082d4fffff,45,true,45.1,,11/1/17 11:00
89283082c77ffff,41,true,41.1,,11/1/17 11:00
89283082c2bffff,53,true,53.1,,11/1/17 11:00
89283082803ffff,41,true,41.1,,11/1/17 11:00
89283082813ffff,43,true,43.1,,11/1/17 11:00
89283082d5bffff,45,true,45.1,,11/1/17 11:00
89283082897ffff,40,true,40.1,,11/1/17 11:00
89283082c67ffff,42,true,42.1,,11/1/17 11:00
89283082d47ffff,51,true,51.1,,11/1/17 11:00
89283082dc3ffff,52,true,52.1,,11/1/17 11:00
89283082c33ffff,43,true,43.1,,11/1/17 11:00
89283082c23ffff,40,true,40.1,,11/1/17 11:00
89283082887ffff,36,true,36.1,,11/1/17 11:00
89283082d4bffff,36,true,36.1,,11/1/17 11:00
892830828bbffff,48,true,48.1,,11/1/17 11:00
892830828b7ffff,28,true,28.1,,11/1/17 11:00
89283082c17ffff,34,true,34.1,,11/1/17 11:00
89283082c6fffff,21,true,21.1,,11/1/17 12:00
8928308288bffff,25,true,25.1,,11/1/17 11:00
892830828abffff,26,true,26.1,,11/1/17 11:00
89283082c27ffff,27,true,27.1,,11/1/17 11:00
89283082c8fffff,33,true,33.1,,11/1/17 11:00
89283082cafffff,29,true,29.1,,11/1/17 11:00
89283082c13ffff,27,true,27.1,,11/1/17 11:00
89283082cabffff,22,true,22.1,,11/1/17 11:00
89283082c63ffff,26,true,26.1,,11/1/17 11:00
89283082d43ffff,30,true,30.1,,11/1/17 11:00
89283082d53ffff,19,true,19.1,,11/1/17 11:00
892830828a3ffff,28,false,28.1,,11/1/17 11:00
89283082d1bffff,20,false,20.1,,11/1/17 11:00
89283095367ffff,17,false,17.1,,11/1/17 11:00
8928309536bffff,26,false,26.1,,11/1/17 11:00
89283082c37ffff,16,false,16.1,,11/1/17 11:00
89283082c73ffff,17,false,17.1,,11/1/17 11:00
89283082c8bffff,15,false,15.1,,11/1/17 11:00
89283082ca7ffff,27,false,27.1,,11/1/17 11:00
89283082cb3ffff,32,false,32.1,,11/1/17 11:00
89283082c0bffff,26,false,26.1,,11/1/17 11:00
89283082ca3ffff,19,false,19.1,,11/1/17 11:00
89283082dcfffff,18,false,18.1,,11/1/17 11:00
89283082c1bffff,20,false,20.1,,11/1/17 15:00
89283082ddbffff,18,false,18.1,,11/1/17 11:00
8928309534fffff,16,false,16.1,,11/1/17 11:00
89283082d03ffff,15,false,15.1,,11/1/17 11:00
89283082cbbffff,21,false,21.1,,11/1/17 11:00
89283082cd7ffff,9,true,9.1,,11/1/17 11:00
8928309534bffff,9,true,9.1,,11/1/17 11:00
892830828c7ffff,13,true,13.1,,11/1/17 11:00
89283082cc7ffff,12,true,12.1,,11/1/17 11:00
89283082d0bffff,19,true,19.1,,11/1/17 11:00
89283082dcbffff,19,true,19.1,,11/1/17 11:00
89283082dd3ffff,15,true,15.1,,11/1/17 11:00
89283082dd7ffff,15,true,15.1,,11/1/17 11:00
892830828d7ffff,13,true,13.1,,11/1/17 11:00
89283082d17ffff,5,true,5.1,,11/1/17 11:00
8928309536fffff,8,true,8.1,,11/1/17 11:00
89283095373ffff,6,true,6.1,,11/1/17 11:00
89283082cb7ffff,15,true,15.1,,11/1/17 11:00
89283082d83ffff,9,true,9.1,,11/1/17 11:00
89283082d07ffff,4,true,4.1,,11/1/17 11:00
89283082d0fffff,3,true,3.1,,11/1/17 11:00
89283082d13ffff,6,true,6.1,,11/1/17 11:00
89283082d9bffff,5,true,5.1,,11/1/17 11:00
89283082c83ffff,11,true,11.1,,11/1/17 11:00
89283082d8bffff,4,true,4.1,,11/1/17 11:00
89283082dc7ffff,5,true,5.1,,11/1/17 11:00
89283095377ffff,5,true,5.1,,11/1/17 11:00
89283082c97ffff,4,true,4.1,,11/1/17 11:00
89283082d7bffff,2,true,2.1,,11/1/17 11:00
89283082d8fffff,1,true,1.1,,11/1/17 11:00
89283095347ffff,3,true,3.1,,11/1/17 11:00
89283095363ffff,2,true,2.1,,11/1/17 11:00
8928309537bffff,4,true,4.1,,11/1/17 11:00
89283082d93ffff,6,true,6.1,,11/1/17 11:00
89283082d73ffff,1,true,1.1,,11/1/17 13:00
8928309530bffff,1,true,1.1,,11/1/17 11:00
8928309532bffff,1,true,1.1,,11/1/17 11:00
================================================
FILE: bindings/kepler.gl-jupyter/notebooks/hex_config.py
================================================
# SPDX-License-Identifier: MIT
# Copyright contributors to the kepler.gl project
config = {u'version': u'v1', u'config': {u'visState': {u'layers': [{u'type': u'hexagonId', u'visualChannels': {u'sizeField': {u'type': u'integer', u'name': u'value'}, u'coverageField': None, u'colorScale': u'quantize', u'coverageScale': u'linear', u'colorField': {u'type': u'integer', u'name': u'value'}, u'sizeScale': u'linear'}, u'config': {u'dataId': u'data_1', u'color': [250, 116, 0], u'textLabel': {u'color': [255, 255, 255], u'field': None, u'size': 50, u'anchor': u'middle', u'offset': [0, 0]}, u'label': u'H3 Hexagon', u'isVisible': True, u'visConfig': {u'coverageRange': [0, 1], u'opacity': 0.8, u'elevationScale': 5, u'hi-precision': False, u'coverage': 1, u'enable3d': True, u'sizeRange': [0, 500], u'colorRange': {u'category': u'Uber', u'type': u'sequential', u'colors': [u'#194266', u'#355C7D', u'#63617F', u'#916681', u'#C06C84', u'#D28389', u'#E59A8F', u'#F8B195'], u'reversed': False, u'name': u'Sunrise 8'}}, u'columns': {u'hex_id': u'hex_id'}}, u'id': u'jdys7lp'}], u'interactionConfig': {u'brush': {u'enabled': False, u'size': 0.5}, u'tooltip': {u'fieldsToShow': {u'data_1': [u'hex_id', u'value']}, u'enabled': True}}, u'splitMaps': [], u'layerBlending': u'normal', u'filters': []}, u'mapState': {u'bearing': 2.6192893401015205, u'dragRotate': True, u'zoom': 12.32053899007826, u'longitude': -122.42590232651203, u'isSplit': False, u'pitch': 37.374216241015446, u'latitude': 37.76209132041332}, u'mapStyle': {u'mapStyles': {}, u'topLayerGroups': {}, u'styleType': u'dark', u'visibleLayerGroups': {u'building': True, u'land': True, u'3d building': False, u'label': True, u'water': True, u'border': False, u'road': True}}}}
================================================
FILE: bindings/kepler.gl-jupyter/notebooks/sf_zip_geo.json
================================================
{"type": "FeatureCollection","features": [
{"type": "Feature", "properties": {"OBJECTID":1,"ZIP_CODE":94107,"ID":94107},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.401159718585049, 37.782024266952142 ], [ -122.400374366843309, 37.782644515545172 ], [ -122.400019020063766, 37.782925153640136 ], [ -122.399891477967842, 37.783025880124256 ], [ -122.398930331092998, 37.783784933304034 ], [ -122.397811613142864, 37.784666586003652 ], [ -122.396705177550587, 37.785542130425938 ], [ -122.395895701657864, 37.784896929203114 ], [ -122.395160622349934, 37.78431101230386 ], [ -122.394398389309941, 37.783701667981575 ], [ -122.39343711789931, 37.784459123881106 ], [ -122.39286959393705, 37.78478280203197 ], [ -122.39285700396303, 37.784773072758867 ], [ -122.392216553530702, 37.784278123341721 ], [ -122.392215026316663, 37.784279352365694 ], [ -122.392118766536498, 37.784205306785267 ], [ -122.392032919786118, 37.784168354830349 ], [ -122.391600764141245, 37.783823989838545 ], [ -122.391599105853345, 37.783822668268179 ], [ -122.390856721023212, 37.784410569188324 ], [ -122.389846392025618, 37.783609176617361 ], [ -122.389843136047602, 37.783611740842574 ], [ -122.388306939892615, 37.782385221520776 ], [ -122.388304301898813, 37.782356717503951 ], [ -122.388231340039766, 37.782146697467269 ], [ -122.388106738902522, 37.781931906493995 ], [ -122.388094863959623, 37.781887241816527 ], [ -122.387765464889313, 37.78194244138043 ], [ -122.387754811744713, 37.781795652877442 ], [ -122.385560654233757, 37.781935833609538 ], [ -122.385544999019174, 37.781932650370386 ], [ -122.38553439339303, 37.781923892586839 ], [ -122.385511671392734, 37.781778670688965 ], [ -122.384922372713746, 37.781810068903333 ], [ -122.384901998602373, 37.781825502544642 ], [ -122.384858074907243, 37.781799422577222 ], [ -122.384893494062709, 37.781763146995921 ], [ -122.38491634743859, 37.781777202531266 ], [ -122.38550727073536, 37.781741658296774 ], [ -122.385491676395333, 37.781604563077408 ], [ -122.385493075388183, 37.781591492690396 ], [ -122.38550321006835, 37.781581716485675 ], [ -122.385518655734231, 37.781576662678262 ], [ -122.38762837564704, 37.781450881969413 ], [ -122.387583140105036, 37.780964719298666 ], [ -122.387467577483136, 37.780979617487112 ], [ -122.387479366190874, 37.781103038700273 ], [ -122.387462086323822, 37.781104002067416 ], [ -122.387450297298699, 37.780980580858106 ], [ -122.387337984465276, 37.780987185935416 ], [ -122.387348026094102, 37.781109948402708 ], [ -122.387330746223768, 37.781110911750616 ], [ -122.387320704623349, 37.780988149281868 ], [ -122.387206644553231, 37.780994095205941 ], [ -122.387216703416328, 37.781117544403045 ], [ -122.387199423542512, 37.781118507731705 ], [ -122.387189364714985, 37.780995058807726 ], [ -122.387068420460224, 37.78100248851576 ], [ -122.387080191758074, 37.781125223313062 ], [ -122.387062911534741, 37.78112618662724 ], [ -122.387051140611234, 37.78100345182272 ], [ -122.386937097943829, 37.781010084204837 ], [ -122.386948869025886, 37.781132819015049 ], [ -122.386931588799087, 37.78113378231 ], [ -122.386919818091386, 37.781011047492527 ], [ -122.386812677010425, 37.7810168822962 ], [ -122.386824465334769, 37.781140303837503 ], [ -122.386807185104601, 37.781141267114201 ], [ -122.386795397161777, 37.781017845840225 ], [ -122.386676165495402, 37.781024560738594 ], [ -122.386687953248156, 37.781147982298883 ], [ -122.386670672668515, 37.781148945561135 ], [ -122.386658885297223, 37.781025524268173 ], [ -122.386543112789369, 37.781032183675542 ], [ -122.386554900668202, 37.781155605243434 ], [ -122.386537620431014, 37.781156568480647 ], [ -122.386525832933643, 37.781033147180089 ], [ -122.386411790166775, 37.781039778779515 ], [ -122.386423577828609, 37.781163200360375 ], [ -122.386406297587911, 37.781164163578339 ], [ -122.386394510307582, 37.7810407422648 ], [ -122.386282162758775, 37.781045973167615 ], [ -122.386293984730017, 37.781170767655468 ], [ -122.386276704139945, 37.78117173085996 ], [ -122.386264917419695, 37.781048309528096 ], [ -122.386147415421732, 37.781054996216575 ], [ -122.386159201954754, 37.781178417834589 ], [ -122.386141922053085, 37.781179381008279 ], [ -122.386130135209612, 37.78105595966862 ], [ -122.386019552249252, 37.781062535536719 ], [ -122.386031321484509, 37.781185270717479 ], [ -122.386014040887659, 37.781186233883489 ], [ -122.386002272033735, 37.781063498970049 ], [ -122.385879580345062, 37.78107026841095 ], [ -122.385891367127385, 37.781193690044354 ], [ -122.385874086872718, 37.781194653184308 ], [ -122.385862300471871, 37.781071231818238 ], [ -122.385755176650932, 37.781077752105325 ], [ -122.385766945797698, 37.781200487306606 ], [ -122.385749665539848, 37.78120145042832 ], [ -122.385737896774387, 37.781078715494381 ], [ -122.385622107018349, 37.781084687547477 ], [ -122.385633892683231, 37.781208109217374 ], [ -122.385616612767805, 37.781209072314041 ], [ -122.385604844221021, 37.781086337366979 ], [ -122.385487342103474, 37.781093023397624 ], [ -122.385499110464124, 37.781215758630843 ], [ -122.38548182985329, 37.781216721718849 ], [ -122.385470061873946, 37.781093986752957 ], [ -122.385352559732169, 37.781100672649266 ], [ -122.38536432752538, 37.781223407901315 ], [ -122.385347047602892, 37.781224370958491 ], [ -122.385335279499117, 37.781101635984861 ], [ -122.385219507099919, 37.781108294087041 ], [ -122.385231275020445, 37.781231029346657 ], [ -122.385213994748526, 37.781231992389863 ], [ -122.385202226517421, 37.781109257408659 ], [ -122.385086454440369, 37.781115915374649 ], [ -122.385098222142247, 37.781238650647374 ], [ -122.385080941520883, 37.781239613676604 ], [ -122.385069174200339, 37.781116878671227 ], [ -122.38495511409829, 37.781122822411653 ], [ -122.384966899006869, 37.781246244141819 ], [ -122.384949618382038, 37.781247207151821 ], [ -122.384937851277286, 37.781124472133506 ], [ -122.384823791153082, 37.781130415746894 ], [ -122.384835575844662, 37.781253837490027 ], [ -122.384818295216348, 37.781254800480774 ], [ -122.384792264836477, 37.780979154238715 ], [ -122.384809545055035, 37.780978191257269 ], [ -122.384831743135436, 37.781102819695278 ], [ -122.384925045670656, 37.781097207947639 ], [ -122.384923587517477, 37.780971560938383 ], [ -122.384940867732567, 37.780970597937682 ], [ -122.384963066031062, 37.781095226351141 ], [ -122.385056368546813, 37.781089614499592 ], [ -122.385054910171618, 37.780963967491779 ], [ -122.385072190383269, 37.780963004471836 ], [ -122.385094388899816, 37.781087632860746 ], [ -122.385189421508272, 37.781081993240349 ], [ -122.385187962562227, 37.780956346239556 ], [ -122.385205242424405, 37.780955383205644 ], [ -122.38522744150788, 37.781080011564157 ], [ -122.385322474096498, 37.781074371836517 ], [ -122.385321014925523, 37.780948724837195 ], [ -122.385338295130154, 37.780947761778229 ], [ -122.385360493742681, 37.78107239012293 ], [ -122.385457256077231, 37.781066722624757 ], [ -122.385455797024363, 37.780941075621371 ], [ -122.38547307722547, 37.78094011254268 ], [ -122.385495276407823, 37.781064740856642 ], [ -122.385592038722095, 37.781059073247853 ], [ -122.385590579095435, 37.780933426251508 ], [ -122.385607859293003, 37.780932463153057 ], [ -122.385630058353271, 37.781057091447337 ], [ -122.38572509122794, 37.781051451389651 ], [ -122.385723631030388, 37.780925804400319 ], [ -122.385740911570423, 37.780924841276843 ], [ -122.385763111197619, 37.781049469540704 ], [ -122.385849512311808, 37.781044654171389 ], [ -122.385848051896943, 37.78091900690886 ], [ -122.385865332440758, 37.780918044041726 ], [ -122.385887514843574, 37.781041985837916 ], [ -122.385989466046908, 37.781036234899503 ], [ -122.385988006094351, 37.780910587902042 ], [ -122.386005286281474, 37.780909624745334 ], [ -122.386027486347686, 37.781034252959756 ], [ -122.38611734695634, 37.781029382050761 ], [ -122.386115886434652, 37.78090373478566 ], [ -122.386133166625513, 37.780902771884811 ], [ -122.386155349124707, 37.781026713636507 ], [ -122.386250399355106, 37.78102175959976 ], [ -122.386248938262554, 37.780896112341686 ], [ -122.386266218795839, 37.780895149415798 ], [ -122.386288401860739, 37.781019091137082 ], [ -122.386381721962337, 37.781014164675518 ], [ -122.386380260647812, 37.780888517418902 ], [ -122.386397541177601, 37.780887554473743 ], [ -122.386419741895395, 37.781012182614816 ], [ -122.386513044542724, 37.781006569605005 ], [ -122.386511583006197, 37.780880922349844 ], [ -122.386528863532533, 37.780879959385452 ], [ -122.386551064468406, 37.781004587501954 ], [ -122.386646096514042, 37.780998946712984 ], [ -122.386644635444497, 37.780873299448245 ], [ -122.386661915621403, 37.780872336469891 ], [ -122.386684116778227, 37.780996964561524 ], [ -122.386782608677009, 37.780991268294322 ], [ -122.386781146684797, 37.780865621042153 ], [ -122.386798427204084, 37.780864658038261 ], [ -122.386820628587657, 37.780989286104372 ], [ -122.386907012122748, 37.780983783515829 ], [ -122.386905549920243, 37.780858136265046 ], [ -122.386922830436163, 37.780857173242921 ], [ -122.386945032026247, 37.780981801285769 ], [ -122.387038334595715, 37.780976187860247 ], [ -122.387036872171194, 37.780850540610921 ], [ -122.387054152683675, 37.780849577569541 ], [ -122.387076354491839, 37.780974205587825 ], [ -122.387174846330339, 37.780968508992949 ], [ -122.387173384021025, 37.7808428617396 ], [ -122.387190664183962, 37.780841898683754 ], [ -122.387212865872911, 37.78096652668205 ], [ -122.387306168748907, 37.78096091303906 ], [ -122.387304706217577, 37.780835265787175 ], [ -122.387321986377088, 37.780834302712059 ], [ -122.387344188284104, 37.780958930685784 ], [ -122.387435761378228, 37.780953344631229 ], [ -122.387434316073197, 37.780828383824961 ], [ -122.387451578437933, 37.780826734292219 ], [ -122.387473781252041, 37.780951362230645 ], [ -122.387582651602727, 37.780945499137275 ], [ -122.38754001837809, 37.780493630652451 ], [ -122.38744131821305, 37.780491090765793 ], [ -122.387419058221624, 37.780500374265543 ], [ -122.387330736209734, 37.780497667864211 ], [ -122.387308476209526, 37.780506951617653 ], [ -122.387208063026961, 37.780505125406954 ], [ -122.387184073602839, 37.780514436820333 ], [ -122.387081931006932, 37.780512638185321 ], [ -122.387059670971126, 37.780521921891747 ], [ -122.386964429936867, 37.780519325963184 ], [ -122.386942169884378, 37.780528609647433 ], [ -122.386852118103619, 37.780525930572708 ], [ -122.386829875474817, 37.780535900680007 ], [ -122.386736346744712, 37.780532590439464 ], [ -122.386712374345294, 37.780542588206671 ], [ -122.386618863049748, 37.780539964317235 ], [ -122.386594873201545, 37.780549275890777 ], [ -122.386499632141522, 37.780546679312224 ], [ -122.386475659366695, 37.780556677311395 ], [ -122.386383878154234, 37.780554025277233 ], [ -122.386359888272054, 37.780563336802956 ], [ -122.386266376955888, 37.780560712359396 ], [ -122.386242404491071, 37.780570710305611 ], [ -122.386143703562112, 37.780568168794694 ], [ -122.386119713984229, 37.780577479991436 ], [ -122.386022743164474, 37.78057491124985 ], [ -122.386000500402702, 37.780584880926071 ], [ -122.385901799477139, 37.780582339761835 ], [ -122.385877827288269, 37.780592337079185 ], [ -122.385784298190572, 37.780589026363579 ], [ -122.38576205573851, 37.780598995989244 ], [ -122.385668544412525, 37.780596371620753 ], [ -122.385646283822041, 37.780605654791167 ], [ -122.385554502585677, 37.780603002386016 ], [ -122.385532242331863, 37.780612285803919 ], [ -122.385433541724893, 37.780609743967645 ], [ -122.385411298534606, 37.78061971381274 ], [ -122.385310868512505, 37.780617199530866 ], [ -122.385288625649494, 37.780627169347277 ], [ -122.385191654786624, 37.780624599647666 ], [ -122.38516766472523, 37.780633910656128 ], [ -122.385079342290652, 37.780631202574007 ], [ -122.385057082314987, 37.780640485896626 ], [ -122.384960111442751, 37.78063791600659 ], [ -122.384936138770243, 37.780647913412501 ], [ -122.384835917442729, 37.780653636341071 ], [ -122.384842007573795, 37.78075723388941 ], [ -122.384817825799914, 37.78075899421075 ], [ -122.38480325384981, 37.78052574104445 ], [ -122.384827435209161, 37.780523981006105 ], [ -122.384843799331136, 37.780623294238858 ], [ -122.384923281326039, 37.780618589884874 ], [ -122.384925926962097, 37.780518286009212 ], [ -122.384957841591557, 37.780616663880899 ], [ -122.385044241908545, 37.780611849106826 ], [ -122.385045157967028, 37.780511572605498 ], [ -122.385078784737303, 37.780609236348262 ], [ -122.385154824277294, 37.780605273878329 ], [ -122.385157469939188, 37.780504969717121 ], [ -122.38518938452367, 37.780603347531915 ], [ -122.385275768076681, 37.780597846132551 ], [ -122.385276683130513, 37.780497569640254 ], [ -122.385310328316436, 37.780595919750695 ], [ -122.385398458680143, 37.78059107677575 ], [ -122.385399356494702, 37.780490114106904 ], [ -122.385433018927529, 37.78058915090709 ], [ -122.385519402086118, 37.780583648785594 ], [ -122.385520317170744, 37.78048337283478 ], [ -122.385553962326881, 37.780581722881479 ], [ -122.385633443879414, 37.780577017779677 ], [ -122.385634358810009, 37.780476741827854 ], [ -122.385666274013943, 37.780575119514069 ], [ -122.385749215060514, 37.780570359001402 ], [ -122.385750112750941, 37.780469396598548 ], [ -122.385783775282164, 37.780568432755352 ], [ -122.385864986912736, 37.780563700098369 ], [ -122.385865884092837, 37.780462737425502 ], [ -122.38589954712829, 37.780561773818384 ], [ -122.385987659981154, 37.780556243958578 ], [ -122.385988556648442, 37.780455281290152 ], [ -122.386022220190043, 37.78055431764264 ], [ -122.386106890951012, 37.780549529481313 ], [ -122.386107787802118, 37.780448566806321 ], [ -122.386141451153719, 37.780547603130415 ], [ -122.386229563971753, 37.780542073089819 ], [ -122.386232190406915, 37.780441082739081 ], [ -122.386264124167781, 37.780540146702961 ], [ -122.386347065143937, 37.780535386044313 ], [ -122.386349691419113, 37.78043439569084 ], [ -122.386381625333826, 37.780533459623001 ], [ -122.386462836549086, 37.780528726834362 ], [ -122.386465444877402, 37.780427049764754 ], [ -122.386497396725886, 37.780526800104532 ], [ -122.386582067431817, 37.780522011876563 ], [ -122.386584675942643, 37.78042033479867 ], [ -122.386616627602407, 37.780520085111789 ], [ -122.386699551102055, 37.78051463803542 ], [ -122.386702159451801, 37.78041296095477 ], [ -122.386734111266165, 37.780512711236199 ], [ -122.386817052181556, 37.780507950246935 ], [ -122.386817930281353, 37.780406301126988 ], [ -122.386851612353468, 37.780506023962438 ], [ -122.386929363990731, 37.7805013456708 ], [ -122.386930242282716, 37.780399696544364 ], [ -122.386963924156646, 37.780499419353383 ], [ -122.387046865035501, 37.780494657927875 ], [ -122.387047743173568, 37.78039300907502 ], [ -122.387081425188285, 37.780492731301436 ], [ -122.387171267622861, 37.780487172869918 ], [ -122.387173875339855, 37.780385496327504 ], [ -122.387205827768923, 37.780485246207022 ], [ -122.387295687629134, 37.780480374124949 ], [ -122.387296547982558, 37.780378038825731 ], [ -122.387330247768816, 37.780478447425573 ], [ -122.387406269602806, 37.780473796784797 ], [ -122.38740712980379, 37.780371461484656 ], [ -122.38744082973659, 37.78047187005302 ], [ -122.387527230063114, 37.780467053179258 ], [ -122.38749949992625, 37.780056836734332 ], [ -122.387400782538194, 37.780053609825671 ], [ -122.387378540131436, 37.780063580311925 ], [ -122.387290201196578, 37.780060187435744 ], [ -122.387267941315415, 37.780069470907662 ], [ -122.387167511635454, 37.780066958487033 ], [ -122.387143539437361, 37.780076956068172 ], [ -122.387041380009435, 37.780074471228168 ], [ -122.387019120092901, 37.780083754653084 ], [ -122.386922167327057, 37.780081873095298 ], [ -122.386901619695664, 37.780090442368873 ], [ -122.386811551008179, 37.78008707681861 ], [ -122.386787578762636, 37.780097074601919 ], [ -122.386695780329632, 37.780093736646045 ], [ -122.386671790289242, 37.780103048241536 ], [ -122.386578279887487, 37.780100424039603 ], [ -122.386554289830215, 37.78010973561117 ], [ -122.386459049681108, 37.780107138994076 ], [ -122.386435059945711, 37.780116450261254 ], [ -122.386343278946669, 37.780113798749966 ], [ -122.386319288841676, 37.780123109724549 ], [ -122.386225778441045, 37.780120485792217 ], [ -122.386201788319156, 37.780129796742877 ], [ -122.38610135893272, 37.780127283134078 ], [ -122.386079098889809, 37.780136566656026 ], [ -122.385982128640109, 37.780133997606264 ], [ -122.38595813883623, 37.780143308776367 ], [ -122.385859438837869, 37.78014076729638 ], [ -122.385837196191162, 37.780150737217127 ], [ -122.385743667990269, 37.780147426188911 ], [ -122.385719678159148, 37.780156737585067 ], [ -122.385627896776001, 37.780154084973319 ], [ -122.385603907274145, 37.780163396340377 ], [ -122.385513855977493, 37.78016071596884 ], [ -122.385489865760334, 37.780170027049152 ], [ -122.385392895494292, 37.780167457789418 ], [ -122.385368905944745, 37.780176768559457 ], [ -122.385270205929046, 37.780174226860836 ], [ -122.385246216015972, 37.78018353761145 ], [ -122.385150975133058, 37.78018094022346 ], [ -122.385126985555786, 37.780190251218855 ], [ -122.385038663996198, 37.78018754310051 ], [ -122.385014674056748, 37.780196854078561 ], [ -122.384919433510831, 37.780194256498035 ], [ -122.38489544320835, 37.780203567457356 ], [ -122.384795222823172, 37.780209290346271 ], [ -122.384801312515108, 37.780312887910483 ], [ -122.384777113810173, 37.780313961773459 ], [ -122.384762559495741, 37.780081395028191 ], [ -122.384786741057312, 37.780079634992532 ], [ -122.384803105027004, 37.780178948238863 ], [ -122.384882586203048, 37.780174243917422 ], [ -122.384885231532309, 37.780073940040232 ], [ -122.384917146262893, 37.780172317925249 ], [ -122.385001816666616, 37.780167530831704 ], [ -122.385004462173583, 37.780067226671626 ], [ -122.385036376713245, 37.780165604530019 ], [ -122.38511414553922, 37.780161614154224 ], [ -122.385116790908242, 37.780061310540667 ], [ -122.385148705594133, 37.780159688368748 ], [ -122.385233375608649, 37.780154900565314 ], [ -122.385236021162356, 37.780054596943422 ], [ -122.385267935657353, 37.780152974744887 ], [ -122.385356065837257, 37.780148131521123 ], [ -122.385358710872126, 37.780047827627314 ], [ -122.385390625872631, 37.780146205390146 ], [ -122.385477025953321, 37.780141390018422 ], [ -122.385479653051561, 37.780040399682747 ], [ -122.385511585982442, 37.780139463852002 ], [ -122.385591067071402, 37.78013475905297 ], [ -122.385593711788431, 37.78003445515364 ], [ -122.38562562709447, 37.78013283285312 ], [ -122.385706855349099, 37.780128787029341 ], [ -122.385709482473402, 37.780027796408206 ], [ -122.385741415359448, 37.780126860520987 ], [ -122.385824355914565, 37.780122100504215 ], [ -122.385825252791648, 37.780021137554606 ], [ -122.38585891591876, 37.780120173961421 ], [ -122.385945315592835, 37.780115358252047 ], [ -122.385947942745361, 37.780014367894388 ], [ -122.38597987560469, 37.780113432222926 ], [ -122.386066275948011, 37.78010861613928 ], [ -122.38606717251001, 37.780007653736739 ], [ -122.38610083595357, 37.78010669007471 ], [ -122.386188965678286, 37.780101846233919 ], [ -122.386191574380462, 37.780000169711762 ], [ -122.386223525670573, 37.780099919858799 ], [ -122.386306466157762, 37.780095159228338 ], [ -122.386309092126623, 37.77999416887333 ], [ -122.386341026143853, 37.780093232818778 ], [ -122.386422253963318, 37.780089186233084 ], [ -122.386424863030612, 37.77998750941989 ], [ -122.386456813943639, 37.780087259789596 ], [ -122.386541484497073, 37.780082471584841 ], [ -122.386544092702067, 37.77998079450537 ], [ -122.386576044464221, 37.780080544831833 ], [ -122.386658984914163, 37.780075784227932 ], [ -122.386661592958049, 37.779974107145748 ], [ -122.386693544875143, 37.780073857440478 ], [ -122.386776485303088, 37.780069096479352 ], [ -122.386777363799169, 37.779967447346195 ], [ -122.386809315183925, 37.780067197895306 ], [ -122.386888813892412, 37.780063178385696 ], [ -122.386889674448653, 37.77996084281277 ], [ -122.38692337384856, 37.780061251805442 ], [ -122.387006314247685, 37.780056490682639 ], [ -122.387007174648929, 37.779954155383322 ], [ -122.38704087419768, 37.780054564067953 ], [ -122.387130733547679, 37.78004969211122 ], [ -122.387133323862429, 37.779947329117419 ], [ -122.38716529349125, 37.780047765460061 ], [ -122.387255152824864, 37.780042893408485 ], [ -122.387256012876136, 37.779940557832525 ], [ -122.387289712762055, 37.78004096672084 ], [ -122.387365734157797, 37.780036316380411 ], [ -122.387366594049666, 37.779933980528931 ], [ -122.387400294082084, 37.78003438938579 ], [ -122.387486693563403, 37.780029572821469 ], [ -122.387461810378028, 37.779663260524117 ], [ -122.387378661112308, 37.779659784635669 ], [ -122.387356418813553, 37.779669754843859 ], [ -122.387276728664503, 37.779666223506673 ], [ -122.387252739526915, 37.779675535209975 ], [ -122.387173049376599, 37.779672003802716 ], [ -122.387150789943092, 37.779681287247612 ], [ -122.387067640671745, 37.779677811139862 ], [ -122.387043668592767, 37.779687808975972 ], [ -122.386969150543408, 37.779683507921064 ], [ -122.386945178103403, 37.779693505742671 ], [ -122.386868930320873, 37.779689232309579 ], [ -122.386844958564382, 37.779699230374298 ], [ -122.386765268401049, 37.779695698416859 ], [ -122.386741279182857, 37.779705009741512 ], [ -122.386659859644624, 37.77970150593859 ], [ -122.386635887496141, 37.77971150341719 ], [ -122.386556180245535, 37.77970728514304 ], [ -122.386533937822136, 37.779717255195997 ], [ -122.386452518273302, 37.779713750975354 ], [ -122.386428528664126, 37.77972306224185 ], [ -122.38635402805015, 37.779719447242712 ], [ -122.386331768168034, 37.779728731087609 ], [ -122.386245159413448, 37.779725309752138 ], [ -122.386222916935935, 37.779735279471808 ], [ -122.386151858355305, 37.779730922551266 ], [ -122.386127868702886, 37.77974023375657 ], [ -122.386048178882604, 37.779736701583559 ], [ -122.386025936036276, 37.779746671546171 ], [ -122.385946246559868, 37.779743139298724 ], [ -122.385922256538748, 37.779752450742315 ], [ -122.385842567054112, 37.779748918150233 ], [ -122.385818577011165, 37.779758229298103 ], [ -122.385742346663463, 37.779754641855682 ], [ -122.385718357291026, 37.779763952697529 ], [ -122.385635207994184, 37.779760475579685 ], [ -122.385611235349785, 37.779770473129936 ], [ -122.385528086050684, 37.779766995936541 ], [ -122.385504096654358, 37.779776307009364 ], [ -122.38542267708938, 37.779772802077623 ], [ -122.385400434501221, 37.779782772191204 ], [ -122.385319014927063, 37.779779266913316 ], [ -122.385296754890703, 37.779788550288139 ], [ -122.385225696313427, 37.779784192809487 ], [ -122.385201723952207, 37.779794190270913 ], [ -122.385120304035951, 37.779790685135936 ], [ -122.38509804431726, 37.779799968467685 ], [ -122.385020084218212, 37.779796407941809 ], [ -122.38499609406378, 37.779805719196837 ], [ -122.384916404566042, 37.779802185978852 ], [ -122.384894161901101, 37.779812155996879 ], [ -122.38480257260197, 37.779817053634027 ], [ -122.384809835241697, 37.779898657585051 ], [ -122.384782194261888, 37.779900472932383 ], [ -122.384761383067243, 37.779694102231538 ], [ -122.384789023963819, 37.779692286614427 ], [ -122.384808725038937, 37.779786739726958 ], [ -122.384879557453601, 37.779782173395887 ], [ -122.384880595342565, 37.779686702548538 ], [ -122.384914117331078, 37.779780247404453 ], [ -122.384983237080689, 37.779776395391224 ], [ -122.384984274829336, 37.77968092426827 ], [ -122.385017796952795, 37.779774469369393 ], [ -122.385085186616962, 37.779770645233363 ], [ -122.38508622457347, 37.779675173829325 ], [ -122.385119746476775, 37.779768718907071 ], [ -122.385188848787607, 37.77976418060323 ], [ -122.385189886610789, 37.779668709198148 ], [ -122.385223408641721, 37.779762254246563 ], [ -122.385283897452879, 37.779759226795328 ], [ -122.385284934821826, 37.779663755944007 ], [ -122.385318457309211, 37.779757300685375 ], [ -122.385385847281285, 37.779753476097383 ], [ -122.385386866740049, 37.779657318531406 ], [ -122.3854203897058, 37.77975086351293 ], [ -122.385491239136826, 37.779746983539091 ], [ -122.385492276232114, 37.779651512411178 ], [ -122.385525798982087, 37.779745057368359 ], [ -122.385598378143868, 37.779741149940357 ], [ -122.385599415094418, 37.779645678536831 ], [ -122.385632937976666, 37.779739223463643 ], [ -122.385705499691042, 37.779734629250548 ], [ -122.385706536510781, 37.779639158120546 ], [ -122.385740059531955, 37.779732703291586 ], [ -122.385805719718547, 37.779728905856508 ], [ -122.385806756416358, 37.779633435000086 ], [ -122.385840279547224, 37.779726979593605 ], [ -122.385909399199221, 37.7797231270374 ], [ -122.385910435756728, 37.779627655905408 ], [ -122.385943959022555, 37.779721200744085 ], [ -122.386013061231836, 37.779716661682606 ], [ -122.386014097656016, 37.779621190549562 ], [ -122.386047621049443, 37.779714735358894 ], [ -122.38611501060636, 37.779710910634236 ], [ -122.386116047238417, 37.779615439220123 ], [ -122.386149570411703, 37.779708984006099 ], [ -122.386208311974158, 37.779705297309562 ], [ -122.386211077885747, 37.779609798774842 ], [ -122.386242871788397, 37.779703371203219 ], [ -122.386317180591391, 37.779699435108718 ], [ -122.38631821662446, 37.77960396397274 ], [ -122.386351740393124, 37.779697508695882 ], [ -122.386415670790853, 37.779693738872112 ], [ -122.386416706351284, 37.779598267740703 ], [ -122.386450230587357, 37.779691812430414 ], [ -122.386519350181956, 37.779687959791211 ], [ -122.386520385602097, 37.779592488384218 ], [ -122.386553892529193, 37.77968534660009 ], [ -122.386623012105417, 37.779681493625532 ], [ -122.386624047399195, 37.779586022492111 ], [ -122.386657571897828, 37.779679567397658 ], [ -122.386728421189233, 37.779675686405767 ], [ -122.386729456700351, 37.779580215540342 ], [ -122.386762980969223, 37.779673759872402 ], [ -122.386832100523861, 37.779669906775261 ], [ -122.386833135894662, 37.779574435634252 ], [ -122.386866660298466, 37.779667980211499 ], [ -122.386932302936756, 37.779663495979172 ], [ -122.386933338178679, 37.779568024837168 ], [ -122.386966862705819, 37.779661569386036 ], [ -122.387030793048368, 37.779657799503305 ], [ -122.38704566565184, 37.779562106599087 ], [ -122.387054991513921, 37.779656725452249 ], [ -122.387136202059708, 37.779651991644378 ], [ -122.387139193519673, 37.77956541658935 ], [ -122.387170761825075, 37.779650065266061 ], [ -122.387239881329535, 37.779646211655297 ], [ -122.387241125495137, 37.779558977842669 ], [ -122.387274441082525, 37.779644284971994 ], [ -122.387341830851355, 37.779640459266005 ], [ -122.387344804633926, 37.779553198035785 ], [ -122.387376373154481, 37.7796378461085 ], [ -122.387448951768221, 37.779633937546841 ], [ -122.387428243590108, 37.779295714050406 ], [ -122.387339905566151, 37.779292321211003 ], [ -122.38731766337223, 37.779302291412563 ], [ -122.387236244241279, 37.77929878773282 ], [ -122.387212254525394, 37.779308099439604 ], [ -122.387132565463105, 37.779304567993648 ], [ -122.387108575718415, 37.779313879130164 ], [ -122.387028886654846, 37.779310347614164 ], [ -122.387004914343294, 37.779320345448582 ], [ -122.386932126735232, 37.779316016678415 ], [ -122.386908154408829, 37.779326014493151 ], [ -122.386828447902374, 37.779321796397241 ], [ -122.386804475567118, 37.779331794465456 ], [ -122.386726516216612, 37.779328234787421 ], [ -122.3867025267663, 37.779337546110341 ], [ -122.386624566736728, 37.779333986925117 ], [ -122.386600577610722, 37.779343297947158 ], [ -122.386520887847865, 37.7793397660989 ], [ -122.386496916150335, 37.779349763818921 ], [ -122.386417208949837, 37.779345545456096 ], [ -122.386393237236504, 37.77935554315502 ], [ -122.386318719558147, 37.779351241688801 ], [ -122.386296477216476, 37.779361211972173 ], [ -122.386211598617734, 37.779357762936172 ], [ -122.386187609086349, 37.779367073879669 ], [ -122.386113108495195, 37.779363458733613 ], [ -122.386089119302554, 37.779372769926113 ], [ -122.386011159604379, 37.779369210055243 ], [ -122.385987187482783, 37.779379207677103 ], [ -122.385909210351812, 37.779374961294259 ], [ -122.385885237875669, 37.779384959175481 ], [ -122.385802088988314, 37.779381481900515 ], [ -122.385778099750866, 37.779390793029705 ], [ -122.385698409983121, 37.779387260900187 ], [ -122.385676150450635, 37.779396544067176 ], [ -122.385598190747288, 37.779392983923266 ], [ -122.385574218216505, 37.779402981466639 ], [ -122.3854945117032, 37.779398762469064 ], [ -122.3854705391566, 37.779408759991362 ], [ -122.38538912034204, 37.779405255030689 ], [ -122.385366860087544, 37.779414538699463 ], [ -122.385285441271535, 37.779411033667223 ], [ -122.385261469031803, 37.779421030866885 ], [ -122.385190410808178, 37.779416673366669 ], [ -122.38516642079081, 37.779425984382435 ], [ -122.385088461426918, 37.77942242389598 ], [ -122.38506448916398, 37.779432421330149 ], [ -122.384984782302112, 37.779428201993547 ], [ -122.384960810030293, 37.779438199681202 ], [ -122.384881120582591, 37.779434666444651 ], [ -122.38485713086655, 37.779443977391921 ], [ -122.384765559446308, 37.779449561719943 ], [ -122.384771214222269, 37.779535998445006 ], [ -122.384747015071127, 37.779537072038458 ], [ -122.38473308847739, 37.779329217537743 ], [ -122.384757287215081, 37.779328143952647 ], [ -122.384773494195869, 37.779421279213679 ], [ -122.384846073080865, 37.779417372248531 ], [ -122.384848858140316, 37.779322559636441 ], [ -122.384880632782526, 37.779415445992221 ], [ -122.384949752194402, 37.77941159399834 ], [ -122.384952537135234, 37.779316781932884 ], [ -122.384984294475274, 37.779408981541515 ], [ -122.385051684148522, 37.779405157144254 ], [ -122.385056216100068, 37.779311003588973 ], [ -122.385086243853095, 37.779403231376833 ], [ -122.385155363235981, 37.779399378987847 ], [ -122.385158147906921, 37.779304566642743 ], [ -122.38518992292822, 37.779397452915447 ], [ -122.385248663600038, 37.779393766707848 ], [ -122.385253195301217, 37.779299613144822 ], [ -122.385283223287274, 37.779391840608099 ], [ -122.385354072735922, 37.779387960985474 ], [ -122.385358586870339, 37.779293120699045 ], [ -122.385388632410709, 37.779386034580241 ], [ -122.385459481495417, 37.779382154625232 ], [ -122.385462265784483, 37.779287342547207 ], [ -122.385494023751633, 37.779379542293618 ], [ -122.385561413364954, 37.77937571733046 ], [ -122.385565944668585, 37.779281563755077 ], [ -122.385595973035649, 37.779373791139029 ], [ -122.385663362299539, 37.779369966397688 ], [ -122.385667876044934, 37.779275126373676 ], [ -122.385697921964919, 37.779368040176379 ], [ -122.385765311917211, 37.779364215640285 ], [ -122.385769825525102, 37.779269375337698 ], [ -122.385799871570299, 37.779362289114509 ], [ -122.385874162638899, 37.779357667403531 ], [ -122.38587696382136, 37.779263541485342 ], [ -122.385908722286104, 37.779355740845865 ], [ -122.385976111863471, 37.779351915920223 ], [ -122.385978912570593, 37.779257790005062 ], [ -122.386010671519301, 37.779349989881837 ], [ -122.386078060733283, 37.77934616462889 ], [ -122.386080844570401, 37.779251352255542 ], [ -122.386112620376821, 37.779344238286029 ], [ -122.386174820757347, 37.779340496265526 ], [ -122.386179333847906, 37.779245656221427 ], [ -122.386209380395755, 37.779338569894314 ], [ -122.386283671761092, 37.779333947919731 ], [ -122.386288202139696, 37.779239794041324 ], [ -122.386318231386639, 37.779332021242034 ], [ -122.386380431746588, 37.779328279113052 ], [ -122.386384962016137, 37.779234125779993 ], [ -122.386414991380946, 37.77932635295614 ], [ -122.38648584000218, 37.779322472115325 ], [ -122.386488640754166, 37.779228346176467 ], [ -122.386520399624118, 37.779320545652922 ], [ -122.386589518862621, 37.779316692697755 ], [ -122.386592302045827, 37.779221880311852 ], [ -122.386624078479215, 37.779314766204962 ], [ -122.386691468335471, 37.779310941139499 ], [ -122.386694251035379, 37.779216128482069 ], [ -122.386726027939744, 37.77930901434226 ], [ -122.386793400000514, 37.779304502779596 ], [ -122.38679620001615, 37.779210376838677 ], [ -122.386827959599159, 37.779302575952464 ], [ -122.386897078804992, 37.779298722816996 ], [ -122.386901608410881, 37.779204569189005 ], [ -122.386931638412193, 37.779296796508632 ], [ -122.386992108980877, 37.779293081467337 ], [ -122.386996638465945, 37.779198927835616 ], [ -122.387026668576013, 37.779291154856551 ], [ -122.387095787760913, 37.779287301604562 ], [ -122.38710029967234, 37.779192461524332 ], [ -122.387130347350677, 37.779285374963401 ], [ -122.387199466531811, 37.779281521925199 ], [ -122.387204309717603, 37.779199724010219 ], [ -122.387234026109212, 37.779279594979052 ], [ -122.387304857552181, 37.779275027470717 ], [ -122.387309700628478, 37.779193229825893 ], [ -122.387339417137795, 37.779273101042833 ], [ -122.387415455175415, 37.779269136564935 ], [ -122.387394991136247, 37.778940523542531 ], [ -122.387315302113649, 37.778936992225411 ], [ -122.387291312863496, 37.778946303668732 ], [ -122.387218525259328, 37.778941975080627 ], [ -122.38719628281504, 37.778951945540015 ], [ -122.38712349555685, 37.77894761688772 ], [ -122.387099505926273, 37.778956928022971 ], [ -122.387025006394012, 37.778953313441747 ], [ -122.387002746472433, 37.778962597145551 ], [ -122.386929976655324, 37.778958954818265 ], [ -122.386905987003843, 37.778968266188713 ], [ -122.386836658833175, 37.778963881995679 ], [ -122.386812687306417, 37.778973880055133 ], [ -122.386736440270226, 37.778969606535817 ], [ -122.386712468022296, 37.778979604036806 ], [ -122.386637951048542, 37.77897530276654 ], [ -122.386613979138446, 37.778985300516517 ], [ -122.386549822682738, 37.778980146669305 ], [ -122.386527580483204, 37.778990116996944 ], [ -122.386449603383866, 37.778985870976705 ], [ -122.386425631783965, 37.778995868408273 ], [ -122.386356303615884, 37.778991483932835 ], [ -122.386332313881979, 37.779000795186512 ], [ -122.386256084279836, 37.778997207801154 ], [ -122.386233824940902, 37.779006491348653 ], [ -122.386164496774228, 37.779002106760423 ], [ -122.386140524798748, 37.779012104688697 ], [ -122.386067737197138, 37.779007775390234 ], [ -122.386043765192852, 37.779017772749661 ], [ -122.385962346433857, 37.779014268190103 ], [ -122.385938356643209, 37.779023579363574 ], [ -122.385865569388116, 37.779019249934791 ], [ -122.385841597013936, 37.779029247533202 ], [ -122.385768809758915, 37.779024918044691 ], [ -122.385744837376848, 37.779034915898023 ], [ -122.385675509212518, 37.779030531022293 ], [ -122.385651520065593, 37.779039841851741 ], [ -122.385578749547165, 37.77903619870164 ], [ -122.385554760393234, 37.779045509785973 ], [ -122.385481989874023, 37.779041866576151 ], [ -122.385458000713072, 37.779051177915363 ], [ -122.385385212767062, 37.779046848201126 ], [ -122.385361223578457, 37.779056158971507 ], [ -122.385286723685297, 37.779052543297539 ], [ -122.385262734143524, 37.779061854327978 ], [ -122.385195135701593, 37.77905744150933 ], [ -122.385171163224882, 37.779067438971381 ], [ -122.385094916187072, 37.779063164390635 ], [ -122.385070944393846, 37.779073162095791 ], [ -122.385001616233609, 37.779068776823863 ], [ -122.38497935636353, 37.77907805986537 ], [ -122.384906586186588, 37.779074416294911 ], [ -122.384884326309916, 37.779083699593059 ], [ -122.384796197708141, 37.779088542459625 ], [ -122.384801451464668, 37.77915919068996 ], [ -122.384780712232896, 37.779160209251955 ], [ -122.384765734942761, 37.778979153747279 ], [ -122.384786456703722, 37.778977448743071 ], [ -122.384804149136215, 37.779060946405302 ], [ -122.384871538841949, 37.779057121830682 ], [ -122.384874585188271, 37.778972606432866 ], [ -122.384906098382288, 37.779055195841352 ], [ -122.384966568862538, 37.779051482113282 ], [ -122.384969632515677, 37.778967652883104 ], [ -122.385001128397789, 37.779049556096091 ], [ -122.385058156860921, 37.779046584353601 ], [ -122.385061202980566, 37.778962068401654 ], [ -122.385092716384577, 37.779044658035005 ], [ -122.385158376003019, 37.779040861234485 ], [ -122.38516315173905, 37.77895631817001 ], [ -122.385192918111116, 37.779038248990936 ], [ -122.385249946543951, 37.779035276606521 ], [ -122.385253009876607, 37.778951447368748 ], [ -122.385284506064338, 37.779033350506261 ], [ -122.385350165317007, 37.779029553604488 ], [ -122.385353228882295, 37.778945724358508 ], [ -122.385382995459778, 37.779027655131593 ], [ -122.385445195618914, 37.779023913770359 ], [ -122.385448258723784, 37.778940084252753 ], [ -122.385479755121978, 37.779021987338304 ], [ -122.385541972691954, 37.779018932096108 ], [ -122.385545018273902, 37.778934416680386 ], [ -122.385576532197149, 37.779017005910269 ], [ -122.385638732330676, 37.779013264172356 ], [ -122.385641777795314, 37.77892874847948 ], [ -122.385673291830699, 37.779011337958153 ], [ -122.38573203252615, 37.779007651778535 ], [ -122.385735094960694, 37.77892382225879 ], [ -122.385766592014193, 37.779005725262394 ], [ -122.385828792128677, 37.779001983424223 ], [ -122.385831854467739, 37.778918154451013 ], [ -122.385863351625531, 37.779000057428874 ], [ -122.385925569154423, 37.778997001709705 ], [ -122.385930344007448, 37.778912458338894 ], [ -122.385960128639468, 37.778995075411409 ], [ -122.386030959889439, 37.778990508668088 ], [ -122.386034022338819, 37.778906679409381 ], [ -122.386065519368728, 37.778988582338918 ], [ -122.386127736893627, 37.778985527062204 ], [ -122.386132511508848, 37.778900983408484 ], [ -122.386162278927955, 37.778982913985502 ], [ -122.386221036657432, 37.7789799137378 ], [ -122.386224081811065, 37.778895398298431 ], [ -122.386255596133822, 37.778977987627471 ], [ -122.386319526256145, 37.778974217575232 ], [ -122.386322588033238, 37.778890388314295 ], [ -122.38635408572037, 37.778972291161459 ], [ -122.386412826344156, 37.778968604368089 ], [ -122.386417618076294, 37.778884747421706 ], [ -122.386447385803351, 37.778966677926974 ], [ -122.386514775006972, 37.77896285296778 ], [ -122.386517836902243, 37.778879023421496 ], [ -122.386549334453889, 37.778960926222204 ], [ -122.386602903347566, 37.778958008816609 ], [ -122.386605964804218, 37.778874179548069 ], [ -122.386637462796912, 37.778956082319787 ], [ -122.386699662825961, 37.778952340022151 ], [ -122.386702724173148, 37.778868510751018 ], [ -122.386734222270135, 37.778950413496958 ], [ -122.386799881728336, 37.778946616056871 ], [ -122.386804673015121, 37.778862758819848 ], [ -122.386834441160303, 37.778944689227728 ], [ -122.386894928894066, 37.778941660955091 ], [ -122.38689797293344, 37.778857145503274 ], [ -122.386929488335198, 37.77893973464726 ], [ -122.386989958613299, 37.77893601960681 ], [ -122.386993002191389, 37.778851503883409 ], [ -122.387024518042367, 37.778934092996543 ], [ -122.387086718033501, 37.778930350494704 ], [ -122.387091509002346, 37.778846493520362 ], [ -122.387121277457396, 37.778928423856051 ], [ -122.387183477445888, 37.778924681577777 ], [ -122.387186764992791, 37.77884977579707 ], [ -122.387218036857675, 37.778922754636191 ], [ -122.387280254273051, 37.778919698476713 ], [ -122.387283524285621, 37.778844106523373 ], [ -122.387314813687013, 37.77891777178133 ], [ -122.387382202448663, 37.778913946057301 ], [ -122.387364166474967, 37.778612763090031 ], [ -122.387286207520319, 37.778609204336291 ], [ -122.387262218365407, 37.778618515499687 ], [ -122.387185989110648, 37.778614928715285 ], [ -122.387161999948319, 37.778624240132871 ], [ -122.387092672083611, 37.778619856090089 ], [ -122.387070429718904, 37.778629826526299 ], [ -122.386994183021031, 37.778625553173391 ], [ -122.386971941319302, 37.778635523030793 ], [ -122.386900883746804, 37.778631166560793 ], [ -122.386876911637231, 37.778641164370391 ], [ -122.38679893557611, 37.778636918569845 ], [ -122.386774963796881, 37.778646916353182 ], [ -122.386707365642749, 37.778642504401184 ], [ -122.386683376072511, 37.77865181600145 ], [ -122.386614065647606, 37.778648118121843 ], [ -122.386590076741811, 37.778657429142889 ], [ -122.386510387715276, 37.778653897287107 ], [ -122.386486398801594, 37.778663208561632 ], [ -122.386417070940411, 37.778658824121642 ], [ -122.386393098756784, 37.778668821832838 ], [ -122.38631686949239, 37.77866523448656 ], [ -122.386292880557747, 37.778674545996267 ], [ -122.38622009293212, 37.778670216797138 ], [ -122.386197851113138, 37.778680186508431 ], [ -122.386125063833461, 37.778675857245105 ], [ -122.38610282131512, 37.778685827224102 ], [ -122.386028304671399, 37.778681525568288 ], [ -122.38600433277405, 37.778691523194873 ], [ -122.385931545494543, 37.77868719381209 ], [ -122.385909285516078, 37.778696477309893 ], [ -122.385834786309914, 37.778692862251056 ], [ -122.385810796946046, 37.778702173118987 ], [ -122.385741486517588, 37.778698474726497 ], [ -122.385717497147184, 37.778707785850045 ], [ -122.385642980157812, 37.778703483956278 ], [ -122.385619007862559, 37.778713481784578 ], [ -122.385549680005639, 37.778709096834618 ], [ -122.385525708373962, 37.778719094083733 ], [ -122.385451191384348, 37.778714792068747 ], [ -122.385428949109837, 37.778724761915029 ], [ -122.385354432120124, 37.778720459838901 ], [ -122.385330442694098, 37.778729770883643 ], [ -122.385257672841163, 37.778726127529652 ], [ -122.385235413119702, 37.778735411169237 ], [ -122.385147302363819, 37.778740940194126 ], [ -122.385154355852308, 37.778814307082541 ], [ -122.385130156934849, 37.778815380480168 ], [ -122.385113449499144, 37.778634352661491 ], [ -122.385137630588289, 37.778632592828004 ], [ -122.385155236200447, 37.778712657669637 ], [ -122.385222625586081, 37.778708833443275 ], [ -122.385225758626859, 37.778627749705855 ], [ -122.38525718494833, 37.778706907076334 ], [ -122.38531938483824, 37.778703165506691 ], [ -122.385322517780125, 37.778622082041188 ], [ -122.385352214498553, 37.778701267322347 ], [ -122.385416144082598, 37.778697497765265 ], [ -122.385419276918626, 37.778616414297126 ], [ -122.385450703441506, 37.77869557161619 ], [ -122.38551290331219, 37.778691829944421 ], [ -122.385517765757882, 37.778610719084014 ], [ -122.38554746266594, 37.778689903767003 ], [ -122.385606220534413, 37.778686903820002 ], [ -122.385611082870923, 37.77860579268107 ], [ -122.385640779890451, 37.778684977889775 ], [ -122.385704709445832, 37.778681208176224 ], [ -122.385707841966195, 37.778600124700183 ], [ -122.385739268789678, 37.778679281942566 ], [ -122.385798008866331, 37.778675595460832 ], [ -122.385801141637501, 37.77859451225126 ], [ -122.385832568205146, 37.778673669199819 ], [ -122.385896498100962, 37.77866989992588 ], [ -122.385899630058546, 37.778588816175542 ], [ -122.385931057427598, 37.778667973361443 ], [ -122.385991527195401, 37.778664259112972 ], [ -122.385994659747908, 37.778583175623524 ], [ -122.386026086530904, 37.778662333069811 ], [ -122.386090016393183, 37.778658563141803 ], [ -122.386093148146045, 37.778577479660726 ], [ -122.386124575716508, 37.778656636795191 ], [ -122.386185062898718, 37.778653608892128 ], [ -122.386202015472293, 37.778571617834082 ], [ -122.386209244307707, 37.778651848558759 ], [ -122.386280092656236, 37.778647968384718 ], [ -122.386284954247373, 37.778566856942867 ], [ -122.386314651962735, 37.778646041707809 ], [ -122.386380311166334, 37.778642244226567 ], [ -122.386385172654656, 37.778561133055092 ], [ -122.386414870481516, 37.778640318069463 ], [ -122.386473610832795, 37.778636630970986 ], [ -122.386476742511945, 37.778555547473879 ], [ -122.386508170135954, 37.778634704511973 ], [ -122.386577288736902, 37.778630851563484 ], [ -122.386580420309613, 37.778549768338095 ], [ -122.386611848034704, 37.778628925074045 ], [ -122.386670588381151, 37.778625238426613 ], [ -122.386673719491867, 37.778544154655052 ], [ -122.386705147666916, 37.778623311635243 ], [ -122.386762158289017, 37.778619652349228 ], [ -122.386765307091096, 37.778539255288756 ], [ -122.386796717583763, 37.778617726080171 ], [ -122.386864106438878, 37.778613900371958 ], [ -122.386867237344845, 37.778532816869664 ], [ -122.386898665721333, 37.778611973798455 ], [ -122.386959152842579, 37.77860894577281 ], [ -122.386962284329485, 37.778527861982276 ], [ -122.38699369467254, 37.778606332452348 ], [ -122.387057641885832, 37.778603248718746 ], [ -122.387060772580114, 37.778522165211164 ], [ -122.387092183716675, 37.778600635643997 ], [ -122.38715094145212, 37.778597634927166 ], [ -122.387154334023649, 37.778526848079068 ], [ -122.387183771011991, 37.778595735958248 ], [ -122.38724942978078, 37.778591937998534 ], [ -122.387254551963991, 37.778521123457843 ], [ -122.387283989043027, 37.778590011312069 ], [ -122.387351378207768, 37.778586185868939 ], [ -122.387340432224974, 37.778359741993853 ], [ -122.385336224880277, 37.778480397809368 ], [ -122.385292215885698, 37.77845088576418 ], [ -122.385332752982109, 37.778411780987071 ], [ -122.385371486072913, 37.77843794377425 ], [ -122.387505436887736, 37.778315896876499 ], [ -122.387507690304943, 37.778336462786434 ], [ -122.387691125877438, 37.77833695908997 ], [ -122.387623881872372, 37.778210305157842 ], [ -122.390410335866818, 37.777142437885963 ], [ -122.390374260520773, 37.777113759158638 ], [ -122.390348522259259, 37.777093298197975 ], [ -122.389857561580598, 37.776499598895249 ], [ -122.389810930692391, 37.776503093591124 ], [ -122.389821814335647, 37.776590819837281 ], [ -122.38767762612953, 37.776716506820485 ], [ -122.387616143310936, 37.776748393866363 ], [ -122.387584974466847, 37.776747519757691 ], [ -122.387567625478937, 37.776745737093393 ], [ -122.387552006163176, 37.776743927007061 ], [ -122.387536369402838, 37.776741430474004 ], [ -122.387505026105131, 37.776733691622944 ], [ -122.387489337013818, 37.776729135749626 ], [ -122.387475360143554, 37.776723865736592 ], [ -122.387461365830632, 37.776717909277224 ], [ -122.387447354082425, 37.776711266646082 ], [ -122.387419295684069, 37.77669660766567 ], [ -122.387406978711525, 37.776688564173618 ], [ -122.387394643958672, 37.776679834515676 ], [ -122.387373399569938, 37.776660946088832 ], [ -122.387362760285328, 37.776650815560998 ], [ -122.38735385031967, 37.776640657346583 ], [ -122.387344922566982, 37.776629812692306 ], [ -122.387335978065309, 37.776618281581548 ], [ -122.387328762881694, 37.776606722784834 ], [ -122.387323277015341, 37.77659513630249 ], [ -122.387316044392662, 37.776582891060237 ], [ -122.387312271446064, 37.776570590705511 ], [ -122.387306768480713, 37.776558317497482 ], [ -122.387304707400645, 37.776545302738185 ], [ -122.387302663771393, 37.776532974698164 ], [ -122.387298541607819, 37.776506944904682 ], [ -122.387299939508821, 37.776493875044565 ], [ -122.387299608083069, 37.776480832320061 ], [ -122.387311076202096, 37.776319268586136 ], [ -122.387103587414643, 37.776325337046984 ], [ -122.387082386717438, 37.776103864569507 ], [ -122.385027425864848, 37.776335891081246 ], [ -122.385011788936296, 37.776333394493314 ], [ -122.384999507467228, 37.776326723359297 ], [ -122.384988868215274, 37.776316592896777 ], [ -122.385025875302759, 37.776274797468226 ], [ -122.384827030762366, 37.775394163410851 ], [ -122.384880527469605, 37.775388501004997 ], [ -122.384877317104468, 37.775330181090084 ], [ -122.386995863440688, 37.775082030997162 ], [ -122.386923061819843, 37.774327799469994 ], [ -122.381813822024597, 37.774615486663201 ], [ -122.381456516831207, 37.771917559332238 ], [ -122.384671101595274, 37.773340605158566 ], [ -122.384690336061794, 37.773348538332996 ], [ -122.384706059111224, 37.773354467747083 ], [ -122.38472349432422, 37.773359682786399 ], [ -122.384740912113955, 37.773364211103086 ], [ -122.384758312493929, 37.773368053246259 ], [ -122.384775695456668, 37.773371208941398 ], [ -122.384793061001673, 37.77337367818847 ], [ -122.384812120957065, 37.773374747168276 ], [ -122.384829452003999, 37.773375843238945 ], [ -122.384848494879705, 37.773376225487283 ], [ -122.38486577332894, 37.77337526249628 ], [ -122.386759568868584, 37.773272861257844 ], [ -122.386575835242937, 37.772851405934894 ], [ -122.38657206225551, 37.772839105279289 ], [ -122.386575190127743, 37.772826007459408 ], [ -122.386581812023351, 37.772814227444925 ], [ -122.386593692364443, 37.772805109622055 ], [ -122.386717419519911, 37.772771540111776 ], [ -122.386708370613761, 37.772755890279406 ], [ -122.386704597609267, 37.772743589627844 ], [ -122.386699094688865, 37.772731316663254 ], [ -122.386691548686684, 37.772706715359256 ], [ -122.38668746217553, 37.772682058686371 ], [ -122.386685401318488, 37.772669044181889 ], [ -122.386683357538772, 37.772656715579039 ], [ -122.386682694959006, 37.772630630932561 ], [ -122.386684111009814, 37.772618246955815 ], [ -122.386683779716421, 37.772605204495207 ], [ -122.386685195434609, 37.772592821073083 ], [ -122.386688340360166, 37.772580409425913 ], [ -122.386661929793348, 37.772494305123679 ], [ -122.386659886368264, 37.772481976514491 ], [ -122.386661302081109, 37.772469592817821 ], [ -122.38666965348915, 37.772457784842032 ], [ -122.386681551212874, 37.772449354004202 ], [ -122.386714186256512, 37.772439903990914 ], [ -122.386679336788333, 37.772362175448528 ], [ -122.386644902453284, 37.772368906802633 ], [ -122.386631976023693, 37.772336837636807 ], [ -122.386620901217455, 37.772309545906367 ], [ -122.386592865526183, 37.772227587668034 ], [ -122.386585249868389, 37.772200240573625 ], [ -122.386577616780784, 37.772172207033208 ], [ -122.386570001134302, 37.772144859937534 ], [ -122.386558193761417, 37.772088737774723 ], [ -122.386541497954923, 37.771976381892166 ], [ -122.386539053911875, 37.771948265304715 ], [ -122.386438565499603, 37.771943006477983 ], [ -122.386459543589496, 37.771678968587629 ], [ -122.386414488196351, 37.771676255706971 ], [ -122.386416883827636, 37.771634327179655 ], [ -122.386370064064607, 37.77163026961771 ], [ -122.386370799901215, 37.771591114275026 ], [ -122.386346586274058, 37.771591501747267 ], [ -122.386349295737674, 37.771561929239198 ], [ -122.386373509355195, 37.77156154176641 ], [ -122.386383018231356, 37.77145906765827 ], [ -122.386277185313745, 37.771447713434846 ], [ -122.386286481744634, 37.771404987761201 ], [ -122.386248187810011, 37.771395986654248 ], [ -122.386213474980906, 37.771391735029944 ], [ -122.386175916991888, 37.77134357828146 ], [ -122.386158586399219, 37.771342482408336 ], [ -122.386142916299207, 37.771338612516935 ], [ -122.386128940538697, 37.771333342339254 ], [ -122.386116624249169, 37.771325298710295 ], [ -122.38610598590013, 37.771315168059481 ], [ -122.386097059315517, 37.771304323294956 ], [ -122.386091556948031, 37.771292050293354 ], [ -122.386142815223778, 37.771266508342599 ], [ -122.38608534348306, 37.771183647247369 ], [ -122.386039082134474, 37.771201555805888 ], [ -122.386023428808656, 37.771198372355109 ], [ -122.386011095814837, 37.771189642258307 ], [ -122.386041843996964, 37.771174042639558 ], [ -122.38589549059256, 37.770997835524099 ], [ -122.385920430782591, 37.770821635056869 ], [ -122.385847920885212, 37.770691630725352 ], [ -122.385837299399952, 37.770682186505887 ], [ -122.385823306356514, 37.770676229845748 ], [ -122.385795755972097, 37.770681477661917 ], [ -122.3857856231634, 37.770691253905198 ], [ -122.385782477468226, 37.770703665268918 ], [ -122.385798079922523, 37.771250048587049 ], [ -122.385622255652152, 37.772162083932052 ], [ -122.385554576344688, 37.772154239361129 ], [ -122.385681891861481, 37.771444190077446 ], [ -122.385515420224039, 37.771429684819722 ], [ -122.38546780756441, 37.771530707856108 ], [ -122.385335917119292, 37.771651620630855 ], [ -122.385287036807085, 37.771634547559174 ], [ -122.385642517132254, 37.770847369439849 ], [ -122.385683664105002, 37.770764304300435 ], [ -122.385720236601344, 37.770637361956886 ], [ -122.385724274638122, 37.77059197382043 ], [ -122.385559320924514, 37.770637189122013 ], [ -122.383154992189901, 37.769708715839762 ], [ -122.383375582677616, 37.76933298733065 ], [ -122.385570199525418, 37.770179656618097 ], [ -122.385492733315886, 37.769990673321502 ], [ -122.38547497668678, 37.769836444052352 ], [ -122.38501929687861, 37.768856908704215 ], [ -122.384893636964136, 37.768882266758567 ], [ -122.384787561607197, 37.76865665734794 ], [ -122.38500549801104, 37.768585873156887 ], [ -122.385007528170945, 37.768529529274218 ], [ -122.385037840293677, 37.768496768478933 ], [ -122.385006697245259, 37.768428594043755 ], [ -122.38508052413836, 37.768406124957501 ], [ -122.385042550658142, 37.768341493386622 ], [ -122.38510771303342, 37.768318476117585 ], [ -122.385167686616882, 37.76829554179551 ], [ -122.385149073018809, 37.768175662662372 ], [ -122.385147029970554, 37.768163334292169 ], [ -122.385144812710706, 37.768144141461285 ], [ -122.38470084491486, 37.768171155877575 ], [ -122.384624005099198, 37.768074869544797 ], [ -122.383881223535184, 37.768121766230543 ], [ -122.383842264982363, 37.767745376829602 ], [ -122.382456893000523, 37.767832748125578 ], [ -122.382439473722869, 37.767691561099248 ], [ -122.384901003015941, 37.7675361686969 ], [ -122.384848518174209, 37.767018283287165 ], [ -122.384847918040649, 37.767012360130963 ], [ -122.382854528282635, 37.767138299649837 ], [ -122.382800567665527, 37.766784124750316 ], [ -122.385859942984411, 37.766599245791156 ], [ -122.385894343938588, 37.766523155929399 ], [ -122.385924379700455, 37.76641142564803 ], [ -122.385933483994975, 37.766361149056699 ], [ -122.385914237836445, 37.766284543788501 ], [ -122.385992644580284, 37.766169979928648 ], [ -122.386291877422522, 37.765689977677845 ], [ -122.386372587962043, 37.765598038596792 ], [ -122.386520103480208, 37.765411635088689 ], [ -122.386541125110512, 37.765285627921941 ], [ -122.386469993174757, 37.765277839225583 ], [ -122.386436744413672, 37.76505861928149 ], [ -122.386447302231559, 37.764929345689509 ], [ -122.386483096429387, 37.76490817106005 ], [ -122.386501478211272, 37.764814482226171 ], [ -122.386491269379732, 37.764616868735338 ], [ -122.38644793023208, 37.764613442288407 ], [ -122.386451155646682, 37.764399819097633 ], [ -122.386482284438713, 37.7643993208899 ], [ -122.386481482527714, 37.764367744084808 ], [ -122.386603169586195, 37.764322532741204 ], [ -122.386601548243974, 37.76425869323451 ], [ -122.386585931922852, 37.764256883010674 ], [ -122.386571940029569, 37.764250926432666 ], [ -122.38656131971895, 37.764241482262236 ], [ -122.38655581779787, 37.764229209267128 ], [ -122.38655550400469, 37.764216853507875 ], [ -122.386720358990686, 37.764100218114386 ], [ -122.386739211018067, 37.764025063281011 ], [ -122.386733691302794, 37.764012103852934 ], [ -122.38672476584992, 37.764001259116526 ], [ -122.386714128120815, 37.763991128513133 ], [ -122.38670010140504, 37.763983799331974 ], [ -122.386686126988522, 37.763978529213567 ], [ -122.386670492591179, 37.763976032291019 ], [ -122.386649740182264, 37.763976364463595 ], [ -122.386634036749314, 37.763971122014347 ], [ -122.386621721632579, 37.763963078702353 ], [ -122.386611066835059, 37.763952261637705 ], [ -122.386603852994298, 37.763940702770881 ], [ -122.386600062668251, 37.763927715381541 ], [ -122.386601461140231, 37.763914645215138 ], [ -122.386604606072254, 37.763902234094914 ], [ -122.386738907102767, 37.763808749639459 ], [ -122.386828889531799, 37.763741383598706 ], [ -122.386840716091143, 37.763730206671987 ], [ -122.386855983933643, 37.763718287929905 ], [ -122.386869539846316, 37.763707083316298 ], [ -122.386884824769794, 37.763695851022327 ], [ -122.386900145253236, 37.763685991607943 ], [ -122.38691721218359, 37.763676790958648 ], [ -122.386934296546428, 37.763668276753165 ], [ -122.386951398349183, 37.763660449266119 ], [ -122.386970246931185, 37.763653279988162 ], [ -122.386989112953756, 37.763646797428088 ], [ -122.387007996064526, 37.763641001316863 ], [ -122.387026897301666, 37.763635891637833 ], [ -122.387047562432002, 37.763632127441824 ], [ -122.387066515625051, 37.76362907682639 ], [ -122.387271786163467, 37.763605188503739 ], [ -122.387241692331358, 37.763510215504958 ], [ -122.386905339639924, 37.763549936808673 ], [ -122.386894896912324, 37.763479371256736 ], [ -122.386775626938885, 37.763415354890846 ], [ -122.386725141086345, 37.763471101073094 ], [ -122.386629276523749, 37.763443106355105 ], [ -122.386635775530237, 37.763426520918784 ], [ -122.386503316054672, 37.763388124513462 ], [ -122.386596764100844, 37.763184731253212 ], [ -122.386314395824243, 37.763102036396099 ], [ -122.386214308919619, 37.763316522997265 ], [ -122.385510514730285, 37.763329843761532 ], [ -122.385502904472929, 37.763234510683318 ], [ -122.385278141497096, 37.763240166132988 ], [ -122.385288368966343, 37.763370480347639 ], [ -122.38518118352205, 37.763373568175126 ], [ -122.385104258477085, 37.762319301701545 ], [ -122.384682038971576, 37.762111108737756 ], [ -122.384291646501694, 37.762134518628663 ], [ -122.384461265879253, 37.764047083641032 ], [ -122.384304084745608, 37.764057150214732 ], [ -122.384132119672074, 37.762256559028991 ], [ -122.383427389000644, 37.762300785113965 ], [ -122.383450606038608, 37.762465914870035 ], [ -122.383630300057192, 37.762456862777178 ], [ -122.3836690703355, 37.762553071423532 ], [ -122.383744969614881, 37.762544304446941 ], [ -122.383904907669475, 37.764143878058199 ], [ -122.383832343655854, 37.764147784454543 ], [ -122.383810360659879, 37.764236036587789 ], [ -122.383580701961776, 37.764253441592125 ], [ -122.383538646212543, 37.764164152408867 ], [ -122.383462623420698, 37.764168114122675 ], [ -122.383459954192517, 37.764131073630139 ], [ -122.383299279201026, 37.764139821513076 ], [ -122.383109557752064, 37.762320284660944 ], [ -122.382290828789408, 37.762371818989514 ], [ -122.38251353675102, 37.764606298459128 ], [ -122.382344144468703, 37.764612437347246 ], [ -122.382121545934865, 37.762382076243206 ], [ -122.38174844490716, 37.762405201559091 ], [ -122.381695087947634, 37.764738170521944 ], [ -122.381631135065035, 37.764740565182315 ], [ -122.381630936164214, 37.764801000118787 ], [ -122.381492672008349, 37.764806640579245 ], [ -122.381450941763589, 37.76493503772344 ], [ -122.381172352882004, 37.76493330344676 ], [ -122.381123981911756, 37.764799477425129 ], [ -122.380983831900423, 37.764798967139676 ], [ -122.381029346103958, 37.762223710202747 ], [ -122.38330764917707, 37.762081573209855 ], [ -122.382185556454559, 37.760879873475361 ], [ -122.382168402620636, 37.760885641207267 ], [ -122.382152908506868, 37.760888635257665 ], [ -122.382137362223574, 37.760889570238476 ], [ -122.382121780810863, 37.760889132328003 ], [ -122.38210441862546, 37.760886662951151 ], [ -122.382090445117498, 37.760881392285128 ], [ -122.382076454213362, 37.760875434895482 ], [ -122.382064140442054, 37.760867390822959 ], [ -122.382053521188098, 37.760857946240883 ], [ -122.382044596105573, 37.76084710115525 ], [ -122.382023253267107, 37.760824093302155 ], [ -122.382014294110562, 37.760811875582888 ], [ -122.382005317206719, 37.760798970871889 ], [ -122.381998069607818, 37.76078603882209 ], [ -122.381986997879679, 37.76075874660679 ], [ -122.381983174441103, 37.760744386430567 ], [ -122.381981079958692, 37.760729998921875 ], [ -122.381980366958516, 37.760701854577775 ], [ -122.381981731049137, 37.76068741129496 ], [ -122.381984824092612, 37.760672940679711 ], [ -122.38198793521687, 37.760659156500736 ], [ -122.381992775285752, 37.760645344714604 ], [ -122.381695267558513, 37.760647347915544 ], [ -122.381838070964363, 37.762118779804872 ], [ -122.381335375976406, 37.762148093200558 ], [ -122.381148296266858, 37.760157516712624 ], [ -122.380611046370689, 37.760188065470565 ], [ -122.380912187127535, 37.763336013717719 ], [ -122.380701275367471, 37.763342126118935 ], [ -122.380400282533174, 37.760199669192616 ], [ -122.379507164112297, 37.760250310896886 ], [ -122.379808005517475, 37.763456637815253 ], [ -122.379779318273378, 37.763485250755494 ], [ -122.379565016753276, 37.763494162073435 ], [ -122.379533176547326, 37.763466514378344 ], [ -122.379201704975202, 37.759937914686475 ], [ -122.381256986630419, 37.759667520373661 ], [ -122.381256577752055, 37.759583059710486 ], [ -122.381469121143184, 37.759573486743299 ], [ -122.381446760180623, 37.75930533388199 ], [ -122.381389798546991, 37.759310363785765 ], [ -122.381303248927566, 37.759308311423226 ], [ -122.381202252005025, 37.758325846274602 ], [ -122.381200105587652, 37.758309399127988 ], [ -122.381197941449869, 37.758292265813587 ], [ -122.381197089710227, 37.758258629870305 ], [ -122.381199679398975, 37.758224251997007 ], [ -122.381200991455458, 37.758207749648136 ], [ -122.38120401536365, 37.75819053325035 ], [ -122.381207056652954, 37.758174003300283 ], [ -122.381221367866601, 37.758124330651064 ], [ -122.381234402126012, 37.75809253323947 ], [ -122.381242648836448, 37.758076607200529 ], [ -122.381262669528837, 37.75804744489573 ], [ -122.381289433303067, 37.758011307974613 ], [ -122.381302797797105, 37.757992553063836 ], [ -122.381314432708805, 37.757973825759706 ], [ -122.381327797196747, 37.757955071120548 ], [ -122.381337703552219, 37.757936371131194 ], [ -122.381360938912749, 37.75789754361324 ], [ -122.381380716140868, 37.757858771292213 ], [ -122.381390587715856, 37.757838698951588 ], [ -122.381398729699725, 37.757818653670306 ], [ -122.381408600911726, 37.757798581058942 ], [ -122.381416742893265, 37.757778536050878 ], [ -122.381423155645805, 37.757758518646433 ], [ -122.381431297626008, 37.7577384739118 ], [ -122.381444088336707, 37.757697065930351 ], [ -122.381450501074838, 37.757677048524144 ], [ -122.381464499104396, 37.757615019779642 ], [ -122.381469148185403, 37.757593657075738 ], [ -122.381475021977749, 37.757552359783979 ], [ -122.381477941486636, 37.757531024690024 ], [ -122.381480843608969, 37.757509003148037 ], [ -122.381427480867771, 37.75751946944429 ], [ -122.381405721286413, 37.757343328372727 ], [ -122.381468641764485, 37.757300433411309 ], [ -122.381446638421224, 37.75711468207534 ], [ -122.381323864533158, 37.757116641937891 ], [ -122.381323169199888, 37.757089184020202 ], [ -122.381364426846005, 37.75707891127486 ], [ -122.381321992818584, 37.756564544822638 ], [ -122.381321662531036, 37.756551502035926 ], [ -122.38132307883005, 37.756539118369027 ], [ -122.381326206602509, 37.756526020931318 ], [ -122.381331099013835, 37.756514268226432 ], [ -122.381339449129754, 37.756502460600949 ], [ -122.381347834701543, 37.756492025859821 ], [ -122.381357966510507, 37.756482250242897 ], [ -122.381369844881263, 37.756473132920476 ], [ -122.381383504601786, 37.756466047611781 ], [ -122.381397181710526, 37.756459649024094 ], [ -122.381399266420004, 37.75640536415446 ], [ -122.381383669266881, 37.756404239961626 ], [ -122.381368019603769, 37.756401055879024 ], [ -122.381354081758502, 37.756397158017677 ], [ -122.381338379955181, 37.756391914861666 ], [ -122.381324389963666, 37.756385957652711 ], [ -122.38129976407464, 37.756369869336808 ], [ -122.381289145560629, 37.756360424678547 ], [ -122.381280238512659, 37.756350265974667 ], [ -122.381265813968113, 37.756327147557755 ], [ -122.381260331236177, 37.756315560741236 ], [ -122.381258271437829, 37.756302546110341 ], [ -122.381256229700497, 37.756290217367201 ], [ -122.381255916815178, 37.756277861302344 ], [ -122.381240855709805, 37.755888041607285 ], [ -122.381237067430561, 37.75587505429101 ], [ -122.381229855216972, 37.755863495353786 ], [ -122.381219219049328, 37.755853363971241 ], [ -122.381205211793798, 37.755846720574091 ], [ -122.381189545219783, 37.75584285001387 ], [ -122.381023178934683, 37.755831084166076 ], [ -122.381005052890941, 37.755798410637965 ], [ -122.380939344081298, 37.755799459348452 ], [ -122.380938179657051, 37.755753467322073 ], [ -122.381031311951133, 37.755742366765169 ], [ -122.381010248974547, 37.755730341878809 ], [ -122.38098743910173, 37.755717658143908 ], [ -122.380924145958886, 37.755677464760758 ], [ -122.380881915817497, 37.755649296531168 ], [ -122.380862530269653, 37.755635184397235 ], [ -122.380841397836633, 37.755620413687737 ], [ -122.380821994593731, 37.755605615653565 ], [ -122.380802573973469, 37.755590130893374 ], [ -122.38078488252836, 37.755574618260482 ], [ -122.380758354080839, 37.755551693216646 ], [ -122.380751124581494, 37.755539447252119 ], [ -122.380745589509232, 37.755525801070959 ], [ -122.38074007147074, 37.755512841343261 ], [ -122.380736283298162, 37.75549985401004 ], [ -122.38073074823852, 37.755486208102681 ], [ -122.380728671510397, 37.755472506457778 ], [ -122.380724865279745, 37.755458832961516 ], [ -122.380718635462969, 37.755417728569704 ], [ -122.380718270538722, 37.755403313156876 ], [ -122.380719652161702, 37.755389556598288 ], [ -122.380719304614729, 37.755375827633614 ], [ -122.380722067512963, 37.755348314521783 ], [ -122.380728289091294, 37.755320746216135 ], [ -122.380731417602021, 37.755307648505891 ], [ -122.380736257562816, 37.755293837033165 ], [ -122.38074597221329, 37.755267586159846 ], [ -122.380759145196464, 37.755241280371166 ], [ -122.380767425749198, 37.755226726990642 ], [ -122.380777557807846, 37.755216951415953 ], [ -122.380789436047536, 37.755207834150042 ], [ -122.3808030608416, 37.755199376285184 ], [ -122.380814973485883, 37.755191631918663 ], [ -122.380828633023739, 37.75518454667273 ], [ -122.380844056826504, 37.755178806720394 ], [ -122.380857751116352, 37.755173094367549 ], [ -122.380873209326097, 37.755168727313375 ], [ -122.380888684919853, 37.755165046980004 ], [ -122.380905907041537, 37.755162024947012 ], [ -122.380921434762783, 37.75516040367944 ], [ -122.380952524623297, 37.755158534314724 ], [ -122.380976698502963, 37.755156774772679 ], [ -122.380999125498533, 37.755154356655588 ], [ -122.381021534766717, 37.755151252091551 ], [ -122.381043927344422, 37.755147461063977 ], [ -122.381066302193489, 37.755142983589487 ], [ -122.38108865965917, 37.755137819662529 ], [ -122.38111099939502, 37.755131969288627 ], [ -122.38113332243789, 37.755125432451251 ], [ -122.381153915967687, 37.755118923215505 ], [ -122.381176203900949, 37.755111013753655 ], [ -122.38119676265265, 37.755103131339425 ], [ -122.381225828164943, 37.755089619604064 ], [ -122.381246943141264, 37.755103703797808 ], [ -122.381242963358787, 37.755083165829973 ], [ -122.38126015068255, 37.755078770848776 ], [ -122.381277355393678, 37.755075062587856 ], [ -122.381292865706087, 37.755072754823154 ], [ -122.38131010484075, 37.755070419733926 ], [ -122.381327362035009, 37.75506877053013 ], [ -122.381361945276268, 37.755068218467898 ], [ -122.381396598051168, 37.755070412188203 ], [ -122.381413958860932, 37.755072881946376 ], [ -122.381448715950555, 37.755079194614936 ], [ -122.381480084590436, 37.755088307721437 ], [ -122.381497532329476, 37.755094209708098 ], [ -122.381511539483228, 37.755100853620512 ], [ -122.381527276134307, 37.755107469370813 ], [ -122.381548321633034, 37.755118807717949 ], [ -122.381562363566104, 37.755126824520609 ], [ -122.381579829044853, 37.755133412663042 ], [ -122.381595565024199, 37.755140028689837 ], [ -122.381612996090695, 37.755145244200165 ], [ -122.381630391696547, 37.755149086822691 ], [ -122.381647770609987, 37.755152242983492 ], [ -122.381665131447221, 37.755154712704652 ], [ -122.381684187368847, 37.755155781907895 ], [ -122.38170149639484, 37.755156192273823 ], [ -122.382833235564902, 37.755035795269471 ], [ -122.383668861276263, 37.754971624407645 ], [ -122.383685978819074, 37.754964483555838 ], [ -122.38372028351472, 37.754952947636127 ], [ -122.383737470668777, 37.75494855256818 ], [ -122.383756404038564, 37.75494481631263 ], [ -122.383773626345388, 37.754941794129564 ], [ -122.383792594868737, 37.754939430758334 ], [ -122.383811580457817, 37.754937754111957 ], [ -122.38384268824322, 37.754936570147059 ], [ -122.383861726388119, 37.754936952556008 ], [ -122.383880781586896, 37.754938021140639 ], [ -122.383896396575224, 37.754939831714687 ], [ -122.384073136269635, 37.754951427650568 ], [ -122.384099862744918, 37.754913917176538 ], [ -122.384076095308828, 37.754658835300546 ], [ -122.383998950777894, 37.754618177983438 ], [ -122.383899356302948, 37.754647239093948 ], [ -122.383797997440993, 37.754674954869053 ], [ -122.383696604385719, 37.754701297650087 ], [ -122.383569360630759, 37.75473148712782 ], [ -122.383548680403266, 37.754734564546567 ], [ -122.3835279827709, 37.754736955513799 ], [ -122.383505538587656, 37.754738687938882 ], [ -122.38348480614728, 37.754739706002738 ], [ -122.383441577306456, 37.754740396857535 ], [ -122.383400008003704, 37.754738313997002 ], [ -122.38337920595491, 37.754736586250608 ], [ -122.383356657006146, 37.754734199690795 ], [ -122.383335820163737, 37.754731099315492 ], [ -122.383314965907985, 37.754727311939398 ], [ -122.383295841160447, 37.754723497196949 ], [ -122.383254063070865, 37.754713177184357 ], [ -122.383234885782983, 37.75470730309371 ], [ -122.383213961945074, 37.754700770182538 ], [ -122.383194767270453, 37.754694209911989 ], [ -122.383175537439726, 37.754686276198775 ], [ -122.383158037470992, 37.754678315390812 ], [ -122.383138807994129, 37.754670381666052 ], [ -122.383103737780345, 37.754651713981168 ], [ -122.383086185277548, 37.75464169354953 ], [ -122.383068615380594, 37.754630986667287 ], [ -122.383052774639708, 37.754620252154247 ], [ -122.383036916504807, 37.754608831191064 ], [ -122.383015731729387, 37.754592001250259 ], [ -122.38299259130558, 37.754566275663684 ], [ -122.382971180378888, 37.754540521890775 ], [ -122.382949752076243, 37.754514081940449 ], [ -122.382930053282664, 37.754487614354218 ], [ -122.382908625009904, 37.754461174396191 ], [ -122.382888908501968, 37.754434020360335 ], [ -122.382870920808742, 37.754406838701115 ], [ -122.382842850708954, 37.754363390808408 ], [ -122.382816907001839, 37.754323234339928 ], [ -122.382797016608123, 37.754289216082142 ], [ -122.382791480900465, 37.754275569725095 ], [ -122.382785928504248, 37.754261237457797 ], [ -122.38278210489284, 37.754246877022375 ], [ -122.382781722177867, 37.754231775164968 ], [ -122.382784449823419, 37.754202889097733 ], [ -122.382789271581657, 37.754188390821014 ], [ -122.382795840220822, 37.754174551362205 ], [ -122.382804155740061, 37.754161370721022 ], [ -122.382814217447034, 37.754148848908173 ], [ -122.382826043083483, 37.754137672365715 ], [ -122.382839615252593, 37.75412715464509 ], [ -122.382853204821586, 37.754117323645531 ], [ -122.382868575702929, 37.754109523814002 ], [ -122.382885693124038, 37.754102383077345 ], [ -122.382904591526582, 37.754097274061955 ], [ -122.382896892098685, 37.754066494402807 ], [ -122.382890922160428, 37.754035687111681 ], [ -122.382884969278336, 37.754005566273698 ], [ -122.382876487005475, 37.753943896449059 ], [ -122.382873975008934, 37.75391303391072 ], [ -122.382869733880582, 37.753882198997694 ], [ -122.382868951022118, 37.753851308833418 ], [ -122.382866421635015, 37.753819759846344 ], [ -122.382865638778583, 37.753788869681728 ], [ -122.38286753098933, 37.753727034381221 ], [ -122.382869667430043, 37.75367480879347 ], [ -122.382867485984363, 37.753656988767865 ], [ -122.382865286797127, 37.753638482299571 ], [ -122.382861376571569, 37.753620689893637 ], [ -122.382850096841622, 37.753585160622798 ], [ -122.382842745420064, 37.753568109920103 ], [ -122.382833665214591, 37.753551086561764 ], [ -122.382822855548582, 37.753534091107603 ], [ -122.382812063283737, 37.753517782100509 ], [ -122.382801288419827, 37.753502159540567 ], [ -122.382788801838672, 37.753487251326646 ], [ -122.382774586124242, 37.75347237018628 ], [ -122.382742765715449, 37.753445409495008 ], [ -122.382726873440859, 37.753432615860532 ], [ -122.382709269084074, 37.753420535751609 ], [ -122.382691682135089, 37.753409142362763 ], [ -122.382672383117907, 37.753398463047603 ], [ -122.382653119587403, 37.753389156614546 ], [ -122.382611168393765, 37.753371971889877 ], [ -122.382590227592559, 37.7533647524183 ], [ -122.382569321590282, 37.753358906113988 ], [ -122.382546703510585, 37.753353773605845 ], [ -122.382524103512239, 37.753349327255975 ], [ -122.382501520571083, 37.75334556763007 ], [ -122.382478972425403, 37.753343181170841 ], [ -122.382456441314361, 37.753341480611873 ], [ -122.382433945688362, 37.753341153208574 ], [ -122.382402821501856, 37.753341650348268 ], [ -122.38237864858533, 37.753343409903252 ], [ -122.382356222188207, 37.753345828558139 ], [ -122.382297501266095, 37.753349513077993 ], [ -122.38226810654271, 37.753349982559506 ], [ -122.382240423203967, 37.753349737974666 ], [ -122.382210993352999, 37.753348834550927 ], [ -122.382181546112378, 37.753347244671602 ], [ -122.382152081137065, 37.753344968342162 ], [ -122.382124328241176, 37.753341977937026 ], [ -122.382094811792641, 37.753337642237426 ], [ -122.38206700673382, 37.753332592473967 ], [ -122.382039184289724, 37.753326856255676 ], [ -122.38201134446112, 37.753320433582523 ], [ -122.38200001736864, 37.75331754288009 ], [ -122.381983487255724, 37.753313324729064 ], [ -122.381957341428489, 37.753305501265011 ], [ -122.3819294494578, 37.75329701950217 ], [ -122.38187705455077, 37.753277254112369 ], [ -122.381850839550978, 37.753266685100435 ], [ -122.3818017982653, 37.753242746046119 ], [ -122.381777242861062, 37.753229403614625 ], [ -122.381754416238635, 37.753216033574361 ], [ -122.381731572936843, 37.753201977344837 ], [ -122.381708677132991, 37.753185861496782 ], [ -122.381985040410456, 37.753169774197133 ], [ -122.382560765120331, 37.753136419940226 ], [ -122.382560989570067, 37.75313671714089 ], [ -122.382951309683904, 37.753114103639163 ], [ -122.383438933023925, 37.753085850281579 ], [ -122.383914427464433, 37.753058600498669 ], [ -122.384879974685347, 37.753002645165687 ], [ -122.385845520438053, 37.752946681373402 ], [ -122.385845731512404, 37.752946669205699 ], [ -122.386811064397406, 37.752890709951139 ], [ -122.386811676199414, 37.752890674609837 ], [ -122.387755875750031, 37.752835749697695 ], [ -122.387756291326852, 37.752835725460692 ], [ -122.387756280477618, 37.752835611637821 ], [ -122.387633974640565, 37.751559603455405 ], [ -122.387585270262662, 37.750263378063039 ], [ -122.388507729357968, 37.750205975353602 ], [ -122.389478017653872, 37.750145107673561 ], [ -122.390433038183829, 37.750118341633915 ], [ -122.391418367221192, 37.750140606282606 ], [ -122.391693805117924, 37.750111668488358 ], [ -122.391705979739527, 37.750110389401705 ], [ -122.391714686151033, 37.750109474739723 ], [ -122.391929934247997, 37.750086859865874 ], [ -122.392350740047519, 37.750026024134087 ], [ -122.392354048972692, 37.750025545503377 ], [ -122.392381992909165, 37.750021506018193 ], [ -122.393314555211816, 37.749918012051069 ], [ -122.393322792145199, 37.749917097944952 ], [ -122.393340265733656, 37.749915158351328 ], [ -122.395231400136637, 37.749808114846253 ], [ -122.395307862010839, 37.749803786070743 ], [ -122.396273544250747, 37.74974560058007 ], [ -122.397285415820363, 37.749684622841229 ], [ -122.40206163398004, 37.749396678541473 ], [ -122.402063015501824, 37.749396333205695 ], [ -122.402215286387033, 37.749358244852793 ], [ -122.402746245055127, 37.749375020002113 ], [ -122.402866303074774, 37.749478453789486 ], [ -122.402866309087059, 37.749478458911533 ], [ -122.402968925612569, 37.749550036933734 ], [ -122.403054692816028, 37.74954427306843 ], [ -122.403203674195439, 37.749534260068266 ], [ -122.403260968692152, 37.749530409553117 ], [ -122.403568849778438, 37.749475672986911 ], [ -122.403592456970202, 37.749471475909672 ], [ -122.403667613571599, 37.749458113882532 ], [ -122.403783562755194, 37.749432891426196 ], [ -122.403735650894049, 37.749583872707518 ], [ -122.403514246938869, 37.750281563827826 ], [ -122.403378511001179, 37.750679445903444 ], [ -122.403214572776321, 37.751164169122518 ], [ -122.403175027775376, 37.751281093014263 ], [ -122.403072643662085, 37.751794247946641 ], [ -122.403060331379024, 37.751915861053995 ], [ -122.403006670294943, 37.752445905732571 ], [ -122.402978169178084, 37.75275045704997 ], [ -122.40301031565609, 37.753201877425177 ], [ -122.403011715723153, 37.753221541143297 ], [ -122.403127143734139, 37.75447773377249 ], [ -122.403244936870763, 37.755759623462495 ], [ -122.403245024221292, 37.755760575231484 ], [ -122.403305530792395, 37.756165877853867 ], [ -122.403395700993769, 37.756471262485057 ], [ -122.403543859417937, 37.75680412126377 ], [ -122.403689260967766, 37.757015002579273 ], [ -122.403774084903432, 37.757138026202746 ], [ -122.403774405770974, 37.757138490742172 ], [ -122.404168659910013, 37.75752977302043 ], [ -122.404441730762329, 37.757748221369937 ], [ -122.40472107938929, 37.757950649275713 ], [ -122.404835145723425, 37.7580339263735 ], [ -122.405048169961901, 37.758189448369819 ], [ -122.405545221503274, 37.758536929330724 ], [ -122.405903135660481, 37.758934413706449 ], [ -122.406103779268008, 37.759196479511928 ], [ -122.406247868764623, 37.759429354319998 ], [ -122.406261953936678, 37.75945211819198 ], [ -122.406389357641601, 37.759804405761585 ], [ -122.406492391998796, 37.760255279712112 ], [ -122.406492697683589, 37.760686469836571 ], [ -122.406479479731502, 37.760730932047331 ], [ -122.4062826701159, 37.761392945250627 ], [ -122.406147061407296, 37.7616371808829 ], [ -122.406021608630979, 37.761863123291867 ], [ -122.405925510731336, 37.762011914887523 ], [ -122.405653838302513, 37.762432552128487 ], [ -122.405384490436404, 37.76297005284507 ], [ -122.40532469627189, 37.76313750682079 ], [ -122.405258413683796, 37.763323129887908 ], [ -122.405203088479681, 37.763478066930332 ], [ -122.405104592203571, 37.763852244172895 ], [ -122.405059622300016, 37.764310557738277 ], [ -122.405089602982216, 37.764628538373131 ], [ -122.404841911264157, 37.764643492872132 ], [ -122.404496977488066, 37.764664317561468 ], [ -122.403527034519726, 37.764722870371436 ], [ -122.402563396844656, 37.764781034314389 ], [ -122.401598999326723, 37.764839236400867 ], [ -122.401604204317508, 37.764894634517518 ], [ -122.401720515816834, 37.766132520250999 ], [ -122.40075504647362, 37.766190486570189 ], [ -122.399760960198876, 37.766250252443854 ], [ -122.39980174760619, 37.766587745781216 ], [ -122.399677637243116, 37.766695444602661 ], [ -122.4004285874814, 37.76730030349627 ], [ -122.400680751363893, 37.767503407870436 ], [ -122.400877239583821, 37.76748837440357 ], [ -122.401842503677628, 37.76743077711658 ], [ -122.401962350744, 37.768706209224241 ], [ -122.402926809989424, 37.76864812762463 ], [ -122.403037758616776, 37.769828657390953 ], [ -122.403406518421917, 37.769807099957397 ], [ -122.403615112128733, 37.769893190404822 ], [ -122.403877699904385, 37.770062866265505 ], [ -122.403531054507056, 37.770336670466769 ], [ -122.401656665936628, 37.77181711392474 ], [ -122.399647849152032, 37.773403860176856 ], [ -122.399516440682405, 37.773507653276255 ], [ -122.399433130909728, 37.773573455617395 ], [ -122.400212340411557, 37.77419510487973 ], [ -122.400592319049849, 37.774498244536282 ], [ -122.400981567656032, 37.774808775969753 ], [ -122.402524096584528, 37.776039321403807 ], [ -122.40337073826143, 37.776714700215486 ], [ -122.403505778866929, 37.776822422431877 ], [ -122.403673439982725, 37.776956165214415 ], [ -122.404070256642925, 37.777272702482797 ], [ -122.404605505853894, 37.777699659794813 ], [ -122.405068508898097, 37.778068981419388 ], [ -122.405615266425855, 37.778505104539292 ], [ -122.404431250807633, 37.779440334605447 ], [ -122.403387209275081, 37.78026497235011 ], [ -122.401159718585049, 37.782024266952142 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":2,"ZIP_CODE":94105,"ID":94105},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.39249932896719, 37.793768814133983 ], [ -122.391890260341384, 37.794278544568918 ], [ -122.391788865572423, 37.794170982455135 ], [ -122.39173429034625, 37.79420276052317 ], [ -122.391666728649753, 37.794132425256194 ], [ -122.391723034266192, 37.79410061945832 ], [ -122.391673228351905, 37.794047854124599 ], [ -122.391982015107928, 37.793871906128679 ], [ -122.391589022782, 37.793527982873798 ], [ -122.391723231555744, 37.793429001692992 ], [ -122.390805927608938, 37.792657675413892 ], [ -122.388808599369057, 37.790978116182679 ], [ -122.388930714411984, 37.790880018842998 ], [ -122.388611692601799, 37.790313089306778 ], [ -122.388048971491713, 37.790507516256234 ], [ -122.388012417064502, 37.790431188672287 ], [ -122.388369268465311, 37.790308044637399 ], [ -122.388285919009036, 37.790161047422416 ], [ -122.388320274159014, 37.790150883121463 ], [ -122.388243932142601, 37.790007207265845 ], [ -122.388219415789919, 37.789995925591761 ], [ -122.388076857804336, 37.790038725053051 ], [ -122.38779803320179, 37.790149885537438 ], [ -122.385731305877229, 37.790973806479329 ], [ -122.385715648397209, 37.790970622998962 ], [ -122.385703294724394, 37.790961206457723 ], [ -122.385509561738004, 37.790556391724344 ], [ -122.385507518014222, 37.790544063409705 ], [ -122.385514141658973, 37.790532283492631 ], [ -122.385686917933171, 37.79045260764569 ], [ -122.387606646474296, 37.789787359176458 ], [ -122.387348795424046, 37.789311467853956 ], [ -122.38734757309517, 37.78931176210844 ], [ -122.385363735345749, 37.789788908162748 ], [ -122.385346470166525, 37.789790557672781 ], [ -122.385330865935444, 37.789789433734306 ], [ -122.3853151742195, 37.789784877582385 ], [ -122.385301142770246, 37.789777548268411 ], [ -122.385290501190326, 37.789767417313975 ], [ -122.385283285054584, 37.789755858694043 ], [ -122.385108047186435, 37.789329458915937 ], [ -122.385106003217075, 37.789317130597112 ], [ -122.385109132387825, 37.789304032849302 ], [ -122.385115773404124, 37.789292939120834 ], [ -122.385127656568173, 37.78928382174719 ], [ -122.385141339390941, 37.789277422487608 ], [ -122.385148542800621, 37.789220309385662 ], [ -122.387188020139192, 37.788773590697055 ], [ -122.387049561519532, 37.788228488916552 ], [ -122.385265755459955, 37.788520039162925 ], [ -122.385250134063114, 37.78851822849537 ], [ -122.385234425193858, 37.78851298588809 ], [ -122.385222089078539, 37.788504256015905 ], [ -122.385214890495845, 37.788493383558084 ], [ -122.385126670096767, 37.788154179856562 ], [ -122.385126356426341, 37.788141823596902 ], [ -122.385129502623784, 37.788129412294914 ], [ -122.385137873116122, 37.788118290909864 ], [ -122.385149773868434, 37.788109860244717 ], [ -122.385165203482913, 37.788104119771369 ], [ -122.38712311120571, 37.787785749180493 ], [ -122.387152415559953, 37.787781160094404 ], [ -122.38716964498991, 37.787778137163613 ], [ -122.38718858690207, 37.78777440037284 ], [ -122.387205798545097, 37.787770691273494 ], [ -122.387224740799539, 37.787766954471365 ], [ -122.387241935339802, 37.787762558917869 ], [ -122.387260859452994, 37.787758135677656 ], [ -122.387278054335084, 37.787753740113331 ], [ -122.387312408509445, 37.787743576101576 ], [ -122.387329567801103, 37.787737807654125 ], [ -122.387346745228243, 37.787732725636424 ], [ -122.387363887068403, 37.787726270740649 ], [ -122.38738104704403, 37.787720502274603 ], [ -122.38740694457185, 37.787241442038656 ], [ -122.387019444956891, 37.787247644385083 ], [ -122.384558944804354, 37.787400993480382 ], [ -122.384543323667074, 37.787399182993411 ], [ -122.384527632511421, 37.787394627009306 ], [ -122.384515296650974, 37.787385896512234 ], [ -122.384504655873897, 37.787375765751548 ], [ -122.384499135159118, 37.787362806267062 ], [ -122.384342210870813, 37.785748083262355 ], [ -122.384341897348037, 37.785735727269817 ], [ -122.384346773449252, 37.785723288336335 ], [ -122.38435689108006, 37.785712825798925 ], [ -122.384370521056837, 37.785704367292539 ], [ -122.384385968349036, 37.785699313626168 ], [ -122.387217967726542, 37.785525599931667 ], [ -122.387242186237785, 37.785525212275893 ], [ -122.387269846695702, 37.785524082797316 ], [ -122.387295742393547, 37.78552160811531 ], [ -122.387323367958444, 37.785519105736952 ], [ -122.387349245861117, 37.785515944605116 ], [ -122.387375089561743, 37.785511410569285 ], [ -122.387402662781668, 37.785506848841521 ], [ -122.387454279688384, 37.785495034977437 ], [ -122.387478323373855, 37.785487782842686 ], [ -122.387504079475306, 37.785479816566138 ], [ -122.387528105357717, 37.785471877983142 ], [ -122.387553826899222, 37.785462538802953 ], [ -122.387580894103834, 37.785438070169313 ], [ -122.387630346985745, 37.78486455148672 ], [ -122.385458308223278, 37.78499338709468 ], [ -122.385413881876744, 37.784606785946664 ], [ -122.387221366105805, 37.784501641660896 ], [ -122.387418079949683, 37.784479264504995 ], [ -122.38743876829875, 37.784476186423468 ], [ -122.387483534893533, 37.784467229088612 ], [ -122.387528231689217, 37.784455525961853 ], [ -122.387550562288524, 37.78444898795393 ], [ -122.387571145938807, 37.78444179118685 ], [ -122.387593442333781, 37.784433880546885 ], [ -122.387613991073025, 37.784425310610295 ], [ -122.38765505365474, 37.784406798388098 ], [ -122.387673819852623, 37.78439619708557 ], [ -122.387677823231684, 37.784349435820396 ], [ -122.387709046749492, 37.783875783688671 ], [ -122.386286930602978, 37.783958976243902 ], [ -122.386236533710786, 37.783405597391891 ], [ -122.387525601081578, 37.78333071590594 ], [ -122.387695596747974, 37.783278550154108 ], [ -122.387751878035047, 37.783246059476667 ], [ -122.387776877347846, 37.78286796141245 ], [ -122.3875502225155, 37.782801544578085 ], [ -122.387525883466154, 37.782797127453357 ], [ -122.387484228568439, 37.78279230054234 ], [ -122.387463418560699, 37.782790573250665 ], [ -122.387440913647538, 37.782790246810194 ], [ -122.387420138539767, 37.78278989267335 ], [ -122.387388984601131, 37.782789704683182 ], [ -122.387368261829351, 37.782791409869013 ], [ -122.387347521611616, 37.782792428607252 ], [ -122.384758972173714, 37.782940280456494 ], [ -122.384743316428853, 37.782937096842417 ], [ -122.384732711445736, 37.782928338977264 ], [ -122.384679972094801, 37.782554918115103 ], [ -122.384681388329753, 37.782542534464426 ], [ -122.384691505480149, 37.782532071892298 ], [ -122.384705187096728, 37.782525672675533 ], [ -122.387509249137921, 37.78234690330077 ], [ -122.387528224534123, 37.782344539065186 ], [ -122.387554136561661, 37.78234275076899 ], [ -122.38762294594062, 37.782322839482177 ], [ -122.387787765874378, 37.782275144853472 ], [ -122.387765464889313, 37.78194244138043 ], [ -122.388106738902522, 37.781931906493995 ], [ -122.388231340039766, 37.782146697467269 ], [ -122.388304301898813, 37.782356717503951 ], [ -122.388306939892615, 37.782385221520776 ], [ -122.389843136047602, 37.783611740842574 ], [ -122.389846392025618, 37.783609176617361 ], [ -122.390856721023212, 37.784410569188324 ], [ -122.391599105853345, 37.783822668268179 ], [ -122.391600764141245, 37.783823989838545 ], [ -122.392032919786118, 37.784168354830349 ], [ -122.392118766536498, 37.784205306785267 ], [ -122.392215026316663, 37.784279352365694 ], [ -122.392216553530702, 37.784278123341721 ], [ -122.39285700396303, 37.784773072758867 ], [ -122.39286959393705, 37.78478280203197 ], [ -122.39343711789931, 37.784459123881106 ], [ -122.394398389309941, 37.783701667981575 ], [ -122.395160622349934, 37.78431101230386 ], [ -122.395895701657864, 37.784896929203114 ], [ -122.396705177550587, 37.785542130425938 ], [ -122.397811613142864, 37.784666586003652 ], [ -122.399369533643153, 37.785899247741973 ], [ -122.400468483886854, 37.785030285141588 ], [ -122.400994549885382, 37.785441790992316 ], [ -122.400998469557948, 37.785444857061968 ], [ -122.401480059865179, 37.785821567351917 ], [ -122.401489835489045, 37.785829214187501 ], [ -122.402025419766176, 37.786248152290575 ], [ -122.402575227394536, 37.786678208153539 ], [ -122.403028193190352, 37.787024418822838 ], [ -122.403028734856406, 37.78702485040828 ], [ -122.403342641535644, 37.787274627660381 ], [ -122.403430800369534, 37.787641848645734 ], [ -122.403239953883428, 37.787802352067843 ], [ -122.40290309900054, 37.788085647297414 ], [ -122.402903089488873, 37.788085654318181 ], [ -122.402404665507532, 37.788463925757384 ], [ -122.402065730098272, 37.788721152097366 ], [ -122.401375490979433, 37.789264321921429 ], [ -122.400067228055164, 37.790303858609981 ], [ -122.399919790020746, 37.790414442896498 ], [ -122.399480001759599, 37.790744297277485 ], [ -122.399222136170906, 37.790956214990921 ], [ -122.39914859901539, 37.791016648609592 ], [ -122.399148598683425, 37.79101664916432 ], [ -122.398264448861653, 37.791716058450703 ], [ -122.39826444614279, 37.791716060417308 ], [ -122.397840810091907, 37.792047595331439 ], [ -122.39738344591872, 37.792405521295422 ], [ -122.396504486670068, 37.793097082520163 ], [ -122.396376076969489, 37.793198086984006 ], [ -122.396302004629632, 37.793256350149633 ], [ -122.396302004290646, 37.793256350429786 ], [ -122.395983670970253, 37.793501461560965 ], [ -122.395622922555773, 37.793779228585429 ], [ -122.39533276386878, 37.794011429145591 ], [ -122.395317307728533, 37.794023797689903 ], [ -122.394971722038662, 37.794300351169447 ], [ -122.394747579547172, 37.794479718347191 ], [ -122.394745733667804, 37.794478246556643 ], [ -122.394745701490038, 37.794478274267938 ], [ -122.394150899798674, 37.794987788593353 ], [ -122.39270797067924, 37.793614415765255 ], [ -122.392702063215523, 37.793608792659974 ], [ -122.39249932896719, 37.793768814133983 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":3,"ZIP_CODE":94129,"ID":94129},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.470990721149789, 37.787534455433345 ], [ -122.472290534181823, 37.787395917162272 ], [ -122.472401902490546, 37.787384046501884 ], [ -122.47254342327507, 37.787368961705944 ], [ -122.472782224474642, 37.787331534391747 ], [ -122.473316434470121, 37.787247805418339 ], [ -122.474432824368861, 37.787072820298278 ], [ -122.474584006514732, 37.787049123020516 ], [ -122.47616220885665, 37.786978730627588 ], [ -122.478707989065171, 37.78691405835 ], [ -122.481375583614479, 37.787198893328011 ], [ -122.483910676418589, 37.787705653817092 ], [ -122.483911841345289, 37.78771598691722 ], [ -122.484019551359538, 37.788671434543716 ], [ -122.484071292407094, 37.789571562974182 ], [ -122.484214987310182, 37.789767611906584 ], [ -122.484758163249651, 37.789969442365155 ], [ -122.485095392905748, 37.790094746949087 ], [ -122.486221786002261, 37.790513270391187 ], [ -122.486196663014411, 37.790544596769486 ], [ -122.486148110204482, 37.790605847513199 ], [ -122.486108757859654, 37.790687545376898 ], [ -122.486034586054117, 37.790761588869977 ], [ -122.48595999185838, 37.790819844471812 ], [ -122.485896199163861, 37.790893713055688 ], [ -122.485740384038749, 37.791021323419344 ], [ -122.48558351329909, 37.791238913899868 ], [ -122.485411383576832, 37.791468435611826 ], [ -122.485284654257228, 37.791712987869268 ], [ -122.484994993901111, 37.791948608146861 ], [ -122.484752903676167, 37.79221570331633 ], [ -122.484541285320944, 37.792522116372695 ], [ -122.484363647892437, 37.79274005429609 ], [ -122.484183607122475, 37.793062416612024 ], [ -122.484072129345151, 37.793295035940602 ], [ -122.483858237133077, 37.793646123471206 ], [ -122.483593432919847, 37.794035150786577 ], [ -122.48329368676049, 37.794671303481294 ], [ -122.483518531231283, 37.794730014502065 ], [ -122.48308859662535, 37.79561146099627 ], [ -122.482999467368202, 37.795903449272551 ], [ -122.48285101972256, 37.796177893057802 ], [ -122.482765752291186, 37.796484924353678 ], [ -122.482667211606753, 37.796813467545597 ], [ -122.482504820847737, 37.797149264997877 ], [ -122.482349642968302, 37.797495928150028 ], [ -122.482180347467406, 37.797832527598885 ], [ -122.482169137762298, 37.797996159399602 ], [ -122.482136359830861, 37.798129936813986 ], [ -122.482085493238017, 37.798234488898757 ], [ -122.482121580114068, 37.798289507917929 ], [ -122.482129545147487, 37.798328517967903 ], [ -122.482111649834962, 37.798371396374968 ], [ -122.482102148276397, 37.798404519393337 ], [ -122.482087585279373, 37.798442534909526 ], [ -122.482079722552115, 37.798472196426395 ], [ -122.482040900643639, 37.798509246213612 ], [ -122.481958513784505, 37.798535353148957 ], [ -122.481870239865685, 37.798535463289312 ], [ -122.481831454802517, 37.798573885582073 ], [ -122.48191348856912, 37.79872908258961 ], [ -122.481933747767386, 37.798774753652147 ], [ -122.481894064444091, 37.798779540742402 ], [ -122.481782518807989, 37.79868595916038 ], [ -122.481759479485277, 37.798795537302446 ], [ -122.481735532663109, 37.798806240772073 ], [ -122.481729674725472, 37.79884616987701 ], [ -122.481697076819628, 37.79885701872184 ], [ -122.481553967429107, 37.798748172710248 ], [ -122.481544740366218, 37.798791592096414 ], [ -122.481675391067768, 37.798887599511232 ], [ -122.481685177680191, 37.798930012650303 ], [ -122.481641997341171, 37.798933485499177 ], [ -122.481619981772425, 37.798951710306021 ], [ -122.481601609693158, 37.798976741512377 ], [ -122.481583384160913, 37.799007264136819 ], [ -122.481561643359143, 37.799035785621555 ], [ -122.481552599461594, 37.799086069282282 ], [ -122.48153672724159, 37.799139901359283 ], [ -122.481507471077649, 37.799211126714575 ], [ -122.481470873600131, 37.799266680501994 ], [ -122.481417267273812, 37.799333507835762 ], [ -122.481380082795965, 37.799367095921824 ], [ -122.481394839952742, 37.799401184738606 ], [ -122.48138749011072, 37.799450066445814 ], [ -122.481313103352264, 37.799516556146521 ], [ -122.481199920275785, 37.799556228466017 ], [ -122.481106226731853, 37.799612741364335 ], [ -122.481068868952889, 37.799704704484391 ], [ -122.481063386681015, 37.799823601791012 ], [ -122.481042139949025, 37.799870656721012 ], [ -122.48098682060791, 37.799938199625082 ], [ -122.480980184705871, 37.800013851703859 ], [ -122.480977156432658, 37.800224730569639 ], [ -122.480974804661557, 37.800331213761126 ], [ -122.480860274222692, 37.800385329797535 ], [ -122.480757965088657, 37.800443360304584 ], [ -122.48067857879505, 37.800582040732152 ], [ -122.48065611449222, 37.800648344612128 ], [ -122.480592381330325, 37.800724956178229 ], [ -122.480537665874181, 37.800815150409605 ], [ -122.480468568377589, 37.800950224199951 ], [ -122.480375485908439, 37.801094628286094 ], [ -122.480295978813317, 37.801293743123836 ], [ -122.480202328037436, 37.801416867810858 ], [ -122.480181840275407, 37.801557305763211 ], [ -122.480071801739967, 37.801844835145566 ], [ -122.480027318791514, 37.802059156846411 ], [ -122.480044134726015, 37.802235365083838 ], [ -122.480004943470632, 37.80238847850972 ], [ -122.479965705600534, 37.802604771748101 ], [ -122.479928024203545, 37.802749618690633 ], [ -122.479899085376999, 37.802897752511299 ], [ -122.479813341330441, 37.803057827736559 ], [ -122.479734279947053, 37.803208863153962 ], [ -122.479678141843124, 37.803310755542739 ], [ -122.479612025097651, 37.803427923840943 ], [ -122.479496444899141, 37.803572704736546 ], [ -122.479357004588351, 37.803861413494445 ], [ -122.479173928312875, 37.80433146553451 ], [ -122.479146809127258, 37.804483001950985 ], [ -122.479060667102701, 37.804693214811543 ], [ -122.478953175659996, 37.804881810346664 ], [ -122.478815220557294, 37.805291358623961 ], [ -122.47872883882674, 37.805492647931004 ], [ -122.478723432948883, 37.805679530333919 ], [ -122.47869664200617, 37.805843422292654 ], [ -122.478685946257201, 37.805961720018743 ], [ -122.478628322791295, 37.806008011253461 ], [ -122.478654742843744, 37.806089976088074 ], [ -122.478631304779441, 37.806119899160173 ], [ -122.478660343597923, 37.806170230012903 ], [ -122.478638955177018, 37.806277032642242 ], [ -122.478627125019798, 37.806352771870088 ], [ -122.478625044107972, 37.806469551574978 ], [ -122.47857586751384, 37.806637939992576 ], [ -122.478562516078711, 37.80678649853526 ], [ -122.478544650108333, 37.806960541692234 ], [ -122.478526703332861, 37.807066600081164 ], [ -122.478526389161814, 37.807184723319764 ], [ -122.478521297177736, 37.807253482414033 ], [ -122.478488208711909, 37.807311036148292 ], [ -122.478483958170003, 37.807411370608691 ], [ -122.478496304822514, 37.807549883734964 ], [ -122.478476156109295, 37.807833156107016 ], [ -122.478405186887699, 37.808093245296376 ], [ -122.478343748883177, 37.808126216988313 ], [ -122.478060427750734, 37.808278265895638 ], [ -122.477897062640963, 37.80844925522419 ], [ -122.477885395973601, 37.808531172189731 ], [ -122.477923697644769, 37.808669250052077 ], [ -122.477956528906134, 37.809251736581921 ], [ -122.477922196862778, 37.80978247039468 ], [ -122.477956931601639, 37.810111519960003 ], [ -122.477924513902849, 37.810324264541741 ], [ -122.477975357212003, 37.810543166576302 ], [ -122.477691959274622, 37.810627579828761 ], [ -122.477738440983671, 37.81094269802653 ], [ -122.477669662799912, 37.810960332923507 ], [ -122.477465352217308, 37.810997758254302 ], [ -122.4773147668257, 37.811025342092201 ], [ -122.476951827952391, 37.810983355163785 ], [ -122.476621797907725, 37.810876948869407 ], [ -122.47656163509636, 37.810893065263848 ], [ -122.476466638674822, 37.81083628492037 ], [ -122.47639876264958, 37.810757761311969 ], [ -122.476244453139699, 37.810423848047549 ], [ -122.476192907539087, 37.810243414175943 ], [ -122.47615497008627, 37.809858792499412 ], [ -122.47604874198008, 37.809640130705603 ], [ -122.475967371125094, 37.809574880888988 ], [ -122.475790153494444, 37.809485827869665 ], [ -122.475539966877108, 37.809387008587656 ], [ -122.474949730564461, 37.809260233883315 ], [ -122.474802168498073, 37.809179610065499 ], [ -122.474477490769161, 37.809143842083898 ], [ -122.474059299537672, 37.809106891534391 ], [ -122.473248913495638, 37.809099164155811 ], [ -122.472667246163553, 37.80903404071298 ], [ -122.472248345244111, 37.80897031306057 ], [ -122.471807567969009, 37.808865058985567 ], [ -122.471692590128313, 37.808861156356251 ], [ -122.471577117792876, 37.808857237159089 ], [ -122.471241422813662, 37.80879760884919 ], [ -122.470932885927255, 37.808717610499883 ], [ -122.47066006806898, 37.808613665617798 ], [ -122.470600816238615, 37.80859886080146 ], [ -122.470032562336371, 37.809430372877515 ], [ -122.469989867152222, 37.809452374737276 ], [ -122.469923620349192, 37.809434939483481 ], [ -122.469403337873828, 37.809203958897747 ], [ -122.469386781047135, 37.809167151824653 ], [ -122.469446470968407, 37.809067952374448 ], [ -122.469513627885206, 37.809054469737255 ], [ -122.470046113471852, 37.809288679655658 ], [ -122.470536336868321, 37.808582769832967 ], [ -122.47042036446561, 37.808452854807648 ], [ -122.470227327454069, 37.808354443608728 ], [ -122.470098624189163, 37.80826663136105 ], [ -122.470013817898405, 37.808202121652926 ], [ -122.469815463486142, 37.808098991213633 ], [ -122.469586546186093, 37.807953106986339 ], [ -122.469305300471973, 37.807727061403774 ], [ -122.469233592741006, 37.807568936815628 ], [ -122.469112342826094, 37.807370435141976 ], [ -122.46886886007195, 37.807066844008062 ], [ -122.468789265438318, 37.807002933173059 ], [ -122.468641769161479, 37.806924361175163 ], [ -122.468442727148087, 37.806860383444018 ], [ -122.468303117397753, 37.806818075943092 ], [ -122.46814816670377, 37.806980670547468 ], [ -122.46804250856195, 37.806913074050627 ], [ -122.468204198687829, 37.806743499513175 ], [ -122.468154584727131, 37.80670037662253 ], [ -122.467927641872478, 37.806563383834956 ], [ -122.4677672527434, 37.806455496134681 ], [ -122.467355591928154, 37.806141659736177 ], [ -122.467203291926239, 37.806012347645776 ], [ -122.466996296046148, 37.805909356729394 ], [ -122.466671493417238, 37.805802836197401 ], [ -122.466463320033583, 37.805982110961864 ], [ -122.466652133036774, 37.805790797867139 ], [ -122.466274152924925, 37.805653990321176 ], [ -122.466075349709101, 37.80558203392561 ], [ -122.465895016150796, 37.805570618742252 ], [ -122.465648753037854, 37.805488195293123 ], [ -122.46546102999136, 37.805393808021854 ], [ -122.464551731906468, 37.805113664168701 ], [ -122.464230324554308, 37.805004333527904 ], [ -122.463987997870177, 37.804939695859083 ], [ -122.463579617827847, 37.804879883064366 ], [ -122.463271699005631, 37.804887756693624 ], [ -122.462952230341088, 37.804917109899002 ], [ -122.4624302743036, 37.805013698161765 ], [ -122.462214023782167, 37.805018669869817 ], [ -122.462027122615794, 37.804955166469341 ], [ -122.461896643188638, 37.804930554615567 ], [ -122.461601325019004, 37.804956755736356 ], [ -122.461272453201914, 37.805023344559039 ], [ -122.461007547032963, 37.805086808651389 ], [ -122.459772513833471, 37.805253612450713 ], [ -122.45957795006224, 37.805293241948746 ], [ -122.459540191073017, 37.805305543773983 ], [ -122.45950068434351, 37.805317187894794 ], [ -122.459462907558404, 37.805328803259258 ], [ -122.459423363879012, 37.805339074505127 ], [ -122.45938555118417, 37.805349316978521 ], [ -122.459306427886148, 37.805368486538775 ], [ -122.459227232780066, 37.805384910313265 ], [ -122.459185886621981, 37.805392464497949 ], [ -122.459106618316682, 37.805406142481793 ], [ -122.459065217794489, 37.805411637333286 ], [ -122.459025547917307, 37.805417103422087 ], [ -122.458984129270405, 37.80542191181479 ], [ -122.458944422811243, 37.805426005021417 ], [ -122.458902967930442, 37.80542944052501 ], [ -122.458861494934339, 37.805432189583698 ], [ -122.458788912310027, 37.805436828799479 ], [ -122.458735345621889, 37.80544046541047 ], [ -122.458683526998115, 37.80544475969581 ], [ -122.458631726477662, 37.805449740388731 ], [ -122.458578213760234, 37.805455436499734 ], [ -122.458526449095928, 37.805461790012899 ], [ -122.458474703215558, 37.805468829647623 ], [ -122.458371283182728, 37.805485655405761 ], [ -122.458319609004732, 37.805495440705506 ], [ -122.458269665819927, 37.805505197514321 ], [ -122.45821802818655, 37.805516356173719 ], [ -122.458168120492331, 37.805527485811837 ], [ -122.458116519376176, 37.805540017007239 ], [ -122.458066648197928, 37.805552519182882 ], [ -122.457989327072951, 37.805574405126777 ], [ -122.45793619470966, 37.805594515430641 ], [ -122.457883043876322, 37.805613939560359 ], [ -122.457829874920449, 37.805632677510189 ], [ -122.457774957510779, 37.805650757180459 ], [ -122.457721751946011, 37.805668121951648 ], [ -122.457666780196845, 37.805684142829186 ], [ -122.457610078443324, 37.805700191847833 ], [ -122.457500062415335, 37.80572948720183 ], [ -122.457443287865871, 37.805742790973085 ], [ -122.457386495190917, 37.805755408011883 ], [ -122.457329684053221, 37.805767338598564 ], [ -122.457272855492562, 37.805778582715845 ], [ -122.457186701695477, 37.805793746855791 ], [ -122.457077909022615, 37.805803793319789 ], [ -122.456970882463025, 37.805815183288864 ], [ -122.456862180533747, 37.805828661426311 ], [ -122.456755226634087, 37.80584279746536 ], [ -122.456648326952561, 37.805858992150092 ], [ -122.456541463411881, 37.805876559873688 ], [ -122.456434635998889, 37.805895500361686 ], [ -122.45632959276756, 37.805916471347693 ], [ -122.456224568256204, 37.805938128659257 ], [ -122.456119597596228, 37.80596184517497 ], [ -122.456014644961741, 37.805986248302439 ], [ -122.45591147681688, 37.806012681382633 ], [ -122.455806614105612, 37.806040516209428 ], [ -122.455705248815832, 37.806069666405428 ], [ -122.455564429228914, 37.806112518618505 ], [ -122.45530695988451, 37.806195761893825 ], [ -122.454600415883462, 37.806430130022392 ], [ -122.454483234784888, 37.806468999744823 ], [ -122.454353658700001, 37.806478701096999 ], [ -122.454308145719423, 37.806459540393945 ], [ -122.454293829263207, 37.806375996256122 ], [ -122.454085665791084, 37.806359530611644 ], [ -122.454069929877903, 37.806353610767474 ], [ -122.453815604080873, 37.806293271483817 ], [ -122.453295386032664, 37.806259311412973 ], [ -122.452781551105744, 37.806270567825713 ], [ -122.452438711570082, 37.806267316310901 ], [ -122.451653324871984, 37.806353109244483 ], [ -122.450906745259303, 37.80653233722969 ], [ -122.450459653590798, 37.806646175036533 ], [ -122.44991286747026, 37.806721142700994 ], [ -122.449819483247254, 37.806724746830461 ], [ -122.449720673642986, 37.806719513093618 ], [ -122.449631038513971, 37.806734042766898 ], [ -122.449554038474531, 37.806768278664137 ], [ -122.44947869660497, 37.806799740182214 ], [ -122.449399659671798, 37.806822335243758 ], [ -122.449304851007483, 37.806837636909691 ], [ -122.449171524916196, 37.806836407131136 ], [ -122.449109070409847, 37.806831258752986 ], [ -122.449048183710957, 37.806819903592029 ], [ -122.449010891791161, 37.806784123494651 ], [ -122.448891660899136, 37.806726348099637 ], [ -122.448806459828916, 37.806711961234221 ], [ -122.448728288255808, 37.806701578532227 ], [ -122.448565239272398, 37.806755090545202 ], [ -122.448529100304583, 37.806763241657009 ], [ -122.448455091339923, 37.806133486140737 ], [ -122.448455258275729, 37.806133277363898 ], [ -122.448323332142422, 37.805007750605469 ], [ -122.448321161555853, 37.804993824977359 ], [ -122.448279145759457, 37.80472422506687 ], [ -122.44824552349904, 37.804508484024247 ], [ -122.448240728857812, 37.804477717258706 ], [ -122.448240723025904, 37.804477679722268 ], [ -122.448245764546613, 37.8044754914729 ], [ -122.448316879890498, 37.804444627382082 ], [ -122.448814547024654, 37.804228638340902 ], [ -122.448954929708933, 37.80412855834809 ], [ -122.449124213448584, 37.804007874392056 ], [ -122.449253815658196, 37.803861977230383 ], [ -122.449388062152011, 37.803710849923448 ], [ -122.449495662264184, 37.803470319431604 ], [ -122.449583722697156, 37.803153095621241 ], [ -122.449583713807527, 37.803152915295549 ], [ -122.449565462756809, 37.802791419060213 ], [ -122.449536106109235, 37.802697377072583 ], [ -122.449460220896157, 37.80245428555321 ], [ -122.449178591741017, 37.802073857413127 ], [ -122.449043488821943, 37.801965383441527 ], [ -122.448802640091088, 37.801772003872607 ], [ -122.448359651469772, 37.801586782043685 ], [ -122.447921599691895, 37.801532283988202 ], [ -122.447857007904148, 37.801596177616553 ], [ -122.447819731578562, 37.801633051558142 ], [ -122.447819572978844, 37.801633208279924 ], [ -122.447802865090509, 37.801525678628579 ], [ -122.447614227653389, 37.80032479990944 ], [ -122.447613279369918, 37.80032370169468 ], [ -122.447466030932901, 37.799389886853575 ], [ -122.447400275900733, 37.798948048802856 ], [ -122.447341437979304, 37.798552685345861 ], [ -122.447327769221047, 37.798519415660031 ], [ -122.447303043858923, 37.798459232650295 ], [ -122.447209582420982, 37.797849561838987 ], [ -122.44715829626513, 37.797515005478481 ], [ -122.44715829625072, 37.79751500492933 ], [ -122.447014738232738, 37.796578510197754 ], [ -122.447014738218328, 37.796578509648619 ], [ -122.446928896449293, 37.796018515191513 ], [ -122.44687098056005, 37.795640691997477 ], [ -122.446751148304088, 37.794858932799087 ], [ -122.446727777275527, 37.794706465308671 ], [ -122.446727777261131, 37.794706464759514 ], [ -122.446587862952981, 37.793765120337646 ], [ -122.446446456540414, 37.792813716046261 ], [ -122.446446033268856, 37.792810866507708 ], [ -122.446299573716246, 37.791878694429421 ], [ -122.446299547924625, 37.791878529215651 ], [ -122.44720637942703, 37.791763091830468 ], [ -122.447679208068394, 37.79170289872647 ], [ -122.449367313308201, 37.791487980191171 ], [ -122.449385188501296, 37.791484927305568 ], [ -122.450995459060991, 37.791209906278311 ], [ -122.452035629818212, 37.790998907609811 ], [ -122.454248357567437, 37.79059310209788 ], [ -122.455878319348855, 37.790294143976332 ], [ -122.457498733292852, 37.789996912625632 ], [ -122.459011873160264, 37.789719335764374 ], [ -122.459028627866218, 37.789715983297555 ], [ -122.459250455476877, 37.789713291862398 ], [ -122.45947565027717, 37.789710559160014 ], [ -122.459781586189493, 37.789596250165474 ], [ -122.459925547070256, 37.789542753604124 ], [ -122.468653534340191, 37.787783523544832 ], [ -122.470990721149789, 37.787534455433345 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":4,"ZIP_CODE":94121,"ID":94121},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.504456509027335, 37.788067554312491 ], [ -122.504150949920984, 37.788096097763379 ], [ -122.504066815467581, 37.788120877294119 ], [ -122.504049145771674, 37.78810744254686 ], [ -122.503997231067004, 37.788107638193928 ], [ -122.503846231021797, 37.788091662877633 ], [ -122.503713944876083, 37.788063694207068 ], [ -122.503612889329972, 37.788038628655784 ], [ -122.503526395190363, 37.78804009845387 ], [ -122.503485137277139, 37.78805041389267 ], [ -122.503463545305024, 37.78801987747579 ], [ -122.503373498826377, 37.788017973822534 ], [ -122.503335534005146, 37.788022052592311 ], [ -122.503263415949803, 37.788043193399247 ], [ -122.503234378285072, 37.788057421563131 ], [ -122.503243398050046, 37.788071003120102 ], [ -122.503209152201507, 37.78808463302547 ], [ -122.503179577522019, 37.788078954832578 ], [ -122.503144887269229, 37.788076110778647 ], [ -122.503077958752755, 37.78809716302807 ], [ -122.503049013609541, 37.788114823274398 ], [ -122.503006581160705, 37.78814576070333 ], [ -122.502956321560973, 37.788143180813591 ], [ -122.502925535751373, 37.788156752131144 ], [ -122.502902751007483, 37.788146151342978 ], [ -122.502865053026014, 37.788095972678335 ], [ -122.502836115946863, 37.78804976589835 ], [ -122.502789020665148, 37.78803614434397 ], [ -122.502704311593945, 37.788039643712104 ], [ -122.502589076168022, 37.788066323379901 ], [ -122.502515190951499, 37.788086120259166 ], [ -122.502425496104195, 37.788097257971025 ], [ -122.502376106845503, 37.788126939838207 ], [ -122.502316846531585, 37.7881114644726 ], [ -122.502255070395776, 37.788131055545016 ], [ -122.502169528699341, 37.788103665363288 ], [ -122.502105689513968, 37.788110929794158 ], [ -122.50207398762231, 37.788154733004774 ], [ -122.502071249254328, 37.788181562090124 ], [ -122.501989944924048, 37.788182942633284 ], [ -122.501951813392949, 37.78818084312524 ], [ -122.501912664088508, 37.788140990459205 ], [ -122.501912016401619, 37.788116965280736 ], [ -122.501877326179624, 37.788114120853955 ], [ -122.501877973840479, 37.788138145483494 ], [ -122.501858399507697, 37.788182429188559 ], [ -122.501842192404723, 37.788223222019695 ], [ -122.501801304245816, 37.788247265660054 ], [ -122.501766151357245, 37.788227260005755 ], [ -122.501756965310037, 37.788207500503631 ], [ -122.50172600293584, 37.788150340007959 ], [ -122.501700517223497, 37.788167941185236 ], [ -122.50167957356264, 37.788161429621908 ], [ -122.501619212555269, 37.788169321478662 ], [ -122.501569767420492, 37.788196943730178 ], [ -122.501591358665465, 37.788227480492822 ], [ -122.501533078675976, 37.788248385310276 ], [ -122.501514596042369, 37.788204747707923 ], [ -122.50145942465268, 37.788212551659868 ], [ -122.501437657642668, 37.788239704012419 ], [ -122.501335150234794, 37.788224962263008 ], [ -122.501268313574613, 37.788249445888859 ], [ -122.50115878458611, 37.788295256277053 ], [ -122.501091780980232, 37.788313561975109 ], [ -122.501021937979715, 37.788290711431223 ], [ -122.501006184350814, 37.78828411139213 ], [ -122.50097195648992, 37.788298427073251 ], [ -122.500993621505359, 37.788331709648567 ], [ -122.500947376526028, 37.788349663239131 ], [ -122.500879097304491, 37.788320605139283 ], [ -122.500861336013799, 37.788303738053742 ], [ -122.500826830696198, 37.788307757577726 ], [ -122.500806349431429, 37.788318405959657 ], [ -122.500754452719278, 37.788319286610971 ], [ -122.500738328529678, 37.78829895802815 ], [ -122.500712935348687, 37.788319991115557 ], [ -122.500640723790397, 37.788337698187455 ], [ -122.500593831459696, 37.788331626454848 ], [ -122.500550140713713, 37.78831588602435 ], [ -122.500538567416584, 37.788335997845735 ], [ -122.50048939950284, 37.78837391630227 ], [ -122.500458095017024, 37.788368266503305 ], [ -122.500446429574566, 37.788384946179491 ], [ -122.50034045177307, 37.788434129242091 ], [ -122.500272801380206, 37.788428409551436 ], [ -122.500256870701349, 37.788479498553457 ], [ -122.500250772830086, 37.788574372083048 ], [ -122.500192399744307, 37.788591844106463 ], [ -122.500174472488098, 37.788568799078057 ], [ -122.500178293975864, 37.788517915512088 ], [ -122.500130319126384, 37.788535897847389 ], [ -122.500091521884229, 37.788509086399898 ], [ -122.500099172636652, 37.788471872673249 ], [ -122.500066212558522, 37.788468998362944 ], [ -122.50006658231419, 37.788482726609828 ], [ -122.500011040812936, 37.788476801362307 ], [ -122.499966794796208, 37.788440467945314 ], [ -122.499878115891249, 37.788489357153694 ], [ -122.499810631863213, 37.788489815307436 ], [ -122.499785570748472, 37.78852320387022 ], [ -122.499760324750355, 37.788549727891812 ], [ -122.499797151337432, 37.788567645255235 ], [ -122.499803450517931, 37.788608742793357 ], [ -122.49976162645244, 37.788662331112889 ], [ -122.499733393517658, 37.788642207768127 ], [ -122.499727335024716, 37.788610033760072 ], [ -122.49968724080243, 37.78866359271359 ], [ -122.499634371443463, 37.788692645687142 ], [ -122.499577562358439, 37.788703910220832 ], [ -122.499554630056736, 37.788687817377856 ], [ -122.499511356576448, 37.788623310977023 ], [ -122.499481164550005, 37.788530426400044 ], [ -122.499432590648397, 37.788461889419303 ], [ -122.499336411156918, 37.788425062960037 ], [ -122.499266771879846, 37.788409762065221 ], [ -122.499202877060384, 37.788414965914313 ], [ -122.499128103233858, 37.788401812217707 ], [ -122.499099500985864, 37.788367960195586 ], [ -122.499041638784547, 37.788340098176221 ], [ -122.498955421371278, 37.788351861015244 ], [ -122.498920128036829, 37.788390916780045 ], [ -122.498889600061332, 37.788414096736403 ], [ -122.498846352726645, 37.788414829911119 ], [ -122.498829249780883, 37.788358120749585 ], [ -122.498858133988094, 37.78827384858316 ], [ -122.49881028141921, 37.788232082242921 ], [ -122.498779365121052, 37.788240846950437 ], [ -122.498721638945739, 37.788282343161484 ], [ -122.498684745303493, 37.788326233159403 ], [ -122.498610415395817, 37.78832955335983 ], [ -122.498598336042235, 37.788266578082698 ], [ -122.498619439354101, 37.78821471490064 ], [ -122.498602392043921, 37.788160064708592 ], [ -122.498537684539031, 37.788135065438439 ], [ -122.498508608985759, 37.788147919585676 ], [ -122.498480069151427, 37.788180680090115 ], [ -122.498393075984339, 37.788163612611328 ], [ -122.498359007071954, 37.788119551978269 ], [ -122.498367465612489, 37.788047987710556 ], [ -122.498258002596998, 37.788031987711385 ], [ -122.498205083784299, 37.787930560386634 ], [ -122.498141496631646, 37.787882879514228 ], [ -122.498020127555392, 37.787874635204304 ], [ -122.497965657850202, 37.7879085217278 ], [ -122.497937733854386, 37.787835513791961 ], [ -122.497862794972676, 37.787816181447418 ], [ -122.497833152644503, 37.787872309616162 ], [ -122.497858996475657, 37.787932304773527 ], [ -122.497838976582202, 37.787960113577462 ], [ -122.497779058543074, 37.787984477979037 ], [ -122.497727525397508, 37.787934532426668 ], [ -122.4976806523715, 37.787929145955836 ], [ -122.497620549305267, 37.78794664601778 ], [ -122.497594065916346, 37.787927179270163 ], [ -122.49754290189, 37.78789096244769 ], [ -122.49750382929264, 37.787853853467084 ], [ -122.497544349339876, 37.787816083058736 ], [ -122.497526053110533, 37.787779309105126 ], [ -122.497500930399411, 37.787746084497506 ], [ -122.497517139436695, 37.787705292265386 ], [ -122.497507659501551, 37.787674549599402 ], [ -122.497485331532715, 37.787616555022737 ], [ -122.497458570647495, 37.787586791856477 ], [ -122.497406323956653, 37.787574629197884 ], [ -122.49735786900257, 37.787574763042187 ], [ -122.497315176016556, 37.787596088453697 ], [ -122.497275259657627, 37.787591957457558 ], [ -122.497216443565691, 37.787592953772126 ], [ -122.497168648080745, 37.787553245760044 ], [ -122.497138187607533, 37.787514617578381 ], [ -122.497106127216909, 37.787480823939255 ], [ -122.497044990964866, 37.787459883810421 ], [ -122.496999885071403, 37.787455840347057 ], [ -122.496923235404381, 37.787437223130333 ], [ -122.496894579157143, 37.787401311287425 ], [ -122.49685734707576, 37.787368291637833 ], [ -122.496811927818939, 37.787352579117055 ], [ -122.496751769988833, 37.787368019451996 ], [ -122.496728617227618, 37.787343688934776 ], [ -122.496685721170834, 37.787357463425209 ], [ -122.496639544906756, 37.787313607347343 ], [ -122.496583690806744, 37.787296011229486 ], [ -122.496547105206147, 37.787287016686854 ], [ -122.496516354783793, 37.787301958649365 ], [ -122.49646797383916, 37.787304838384266 ], [ -122.496443903661216, 37.787310739875238 ], [ -122.496383616604291, 37.787321374760424 ], [ -122.496337075877918, 37.787328343443079 ], [ -122.496276530804948, 37.787329368567015 ], [ -122.496247565545247, 37.787346340725328 ], [ -122.496197934785357, 37.787367096454552 ], [ -122.496141439524379, 37.787390028597343 ], [ -122.496086747911505, 37.787415677408667 ], [ -122.496068420456311, 37.787442083500181 ], [ -122.496016690354622, 37.787449139908034 ], [ -122.495972174940263, 37.787467062259353 ], [ -122.495951842506244, 37.787478615416269 ], [ -122.495939786703687, 37.787485465489738 ], [ -122.495905650481646, 37.787503211836551 ], [ -122.495879794980965, 37.787507083489736 ], [ -122.495820979283494, 37.78750807910243 ], [ -122.49579201419597, 37.787525051142431 ], [ -122.495771716907484, 37.787542562920031 ], [ -122.495716453167731, 37.787546932051697 ], [ -122.495690597288615, 37.78755080339463 ], [ -122.495618108578682, 37.787558210990248 ], [ -122.495602871400223, 37.787570830192877 ], [ -122.495572047584162, 37.787583026463722 ], [ -122.495539604212951, 37.787599370571847 ], [ -122.495514135330879, 37.787617657121146 ], [ -122.495483182354334, 37.787625048105859 ], [ -122.495437195053938, 37.787652609233902 ], [ -122.495395954684781, 37.787663608544698 ], [ -122.495370190617706, 37.787670911683094 ], [ -122.495333314088882, 37.787715487058371 ], [ -122.495282044474621, 37.787739703822119 ], [ -122.495193913200154, 37.787744628911668 ], [ -122.495147390885393, 37.787752283545302 ], [ -122.495107603658113, 37.787752956804084 ], [ -122.495081894872186, 37.787762319709344 ], [ -122.495049506978233, 37.787780722682484 ], [ -122.494942531016747, 37.787792833838672 ], [ -122.494936422880045, 37.787823153702263 ], [ -122.49487624549289, 37.787837906657984 ], [ -122.494850021018962, 37.787828049271276 ], [ -122.494803406419749, 37.787832271634258 ], [ -122.494754880927445, 37.787894212652994 ], [ -122.494747761584406, 37.787951332156055 ], [ -122.494723178126165, 37.788002566741419 ], [ -122.494687204176572, 37.788080776838861 ], [ -122.494700862218465, 37.788138231843071 ], [ -122.494641953469724, 37.788135794738686 ], [ -122.494554921507401, 37.788052798168373 ], [ -122.494515868416002, 37.788016374906285 ], [ -122.4945350783522, 37.787958364153376 ], [ -122.494513047598829, 37.787911351574522 ], [ -122.494517883781597, 37.787833668269109 ], [ -122.494492854234224, 37.787803875161934 ], [ -122.494463538439888, 37.787807804761236 ], [ -122.494432676774579, 37.787818627891369 ], [ -122.494408993418205, 37.787838943934148 ], [ -122.494413448366132, 37.787875952476604 ], [ -122.494396887310245, 37.787903702167263 ], [ -122.49434981175834, 37.787890763675087 ], [ -122.494353194757167, 37.787823406042577 ], [ -122.494335895597104, 37.78782369865479 ], [ -122.49430957902598, 37.787810409012593 ], [ -122.494266331651687, 37.787811140513561 ], [ -122.49416034840992, 37.787795764612234 ], [ -122.494129594818148, 37.787746152815927 ], [ -122.494106737724252, 37.787732804619111 ], [ -122.494080878906914, 37.78767212220432 ], [ -122.494005791021607, 37.787582742860096 ], [ -122.49397989817011, 37.78758524069908 ], [ -122.493937148914341, 37.787604505606133 ], [ -122.49390314117592, 37.787627056362858 ], [ -122.493853140270886, 37.787634082573049 ], [ -122.493776804515477, 37.787627132573334 ], [ -122.493743568607016, 37.787613959813378 ], [ -122.493738061048077, 37.787613306047696 ], [ -122.493682801772195, 37.787606746485388 ], [ -122.493586205100101, 37.787618680905503 ], [ -122.493496509486093, 37.787629812101237 ], [ -122.493461856653141, 37.787628337503875 ], [ -122.493419162517711, 37.787649661504638 ], [ -122.493384362282285, 37.787642696015901 ], [ -122.493336275791464, 37.787656556752133 ], [ -122.493293636533849, 37.787679939994845 ], [ -122.493241832649318, 37.78768424947036 ], [ -122.493193617141287, 37.7876933054322 ], [ -122.493182042295089, 37.787713416527986 ], [ -122.493127220447846, 37.787734258699906 ], [ -122.493090653466112, 37.787725949238315 ], [ -122.493056424336842, 37.787740262623288 ], [ -122.493004582859115, 37.787743199151691 ], [ -122.492969929990394, 37.787741724684366 ], [ -122.492955061461288, 37.787768072078173 ], [ -122.492913931184304, 37.787783188809769 ], [ -122.492855170492433, 37.787786242224989 ], [ -122.492860417128782, 37.787852767193691 ], [ -122.492830071355925, 37.787882810136729 ], [ -122.492771255320051, 37.787883804228279 ], [ -122.492769800087729, 37.787829576197716 ], [ -122.492735920840914, 37.787856931882516 ], [ -122.49268687433684, 37.78777054473629 ], [ -122.492679439061774, 37.787751441716487 ], [ -122.492627892968244, 37.787765361179233 ], [ -122.492565672509713, 37.787768472646512 ], [ -122.492506929887313, 37.787772212321414 ], [ -122.492446513322577, 37.787778040470201 ], [ -122.492381054094224, 37.787789447708391 ], [ -122.492305602297094, 37.78781544526975 ], [ -122.492216274554934, 37.787840303764064 ], [ -122.492178548608294, 37.787853302497936 ], [ -122.492118555140365, 37.787874918314273 ], [ -122.492079412316457, 37.787899615509929 ], [ -122.492057605141056, 37.787925393277668 ], [ -122.491876207129678, 37.788001938945712 ], [ -122.491812827679937, 37.788026359033061 ], [ -122.491772083659185, 37.788055890066879 ], [ -122.491719745560601, 37.788104846164785 ], [ -122.491654323091851, 37.788117625573307 ], [ -122.491646041850075, 37.7881315002275 ], [ -122.491614039214184, 37.788164317512276 ], [ -122.491501375628616, 37.788222533071625 ], [ -122.491447583651606, 37.788217260993214 ], [ -122.491404851437281, 37.788237211413325 ], [ -122.491281422016286, 37.788281187084038 ], [ -122.491218428658357, 37.788320021552913 ], [ -122.491190014384841, 37.788357585284182 ], [ -122.491137087049111, 37.788384575161345 ], [ -122.491061983912687, 37.788423614320799 ], [ -122.490946338544006, 37.788499734606098 ], [ -122.490859530409139, 37.788554079246722 ], [ -122.490843207112334, 37.788590751992317 ], [ -122.490818381167585, 37.788633062206074 ], [ -122.490696422877051, 37.78873195173508 ], [ -122.490605105739689, 37.78881178134435 ], [ -122.490527498874997, 37.788886572527467 ], [ -122.490413287423564, 37.788951680519325 ], [ -122.490407103746506, 37.78897925443183 ], [ -122.490354139232181, 37.78900487109366 ], [ -122.490306437661019, 37.789033145843504 ], [ -122.490251889996458, 37.789064283086574 ], [ -122.490252239550742, 37.789077325209703 ], [ -122.490220015123754, 37.789101904980171 ], [ -122.490046709329732, 37.789222262378196 ], [ -122.489918657120555, 37.789352156846768 ], [ -122.489828681483118, 37.789482095324693 ], [ -122.489700630133797, 37.789482882790033 ], [ -122.489592566089883, 37.789454489856745 ], [ -122.489300670464104, 37.789412030065776 ], [ -122.489191447548507, 37.789340391834585 ], [ -122.488990889258972, 37.789283342302205 ], [ -122.48848285911852, 37.789442306771541 ], [ -122.488100013149761, 37.789428847345718 ], [ -122.488028309941384, 37.789530320047362 ], [ -122.487863707315668, 37.789588034282978 ], [ -122.487736999824023, 37.789574375465854 ], [ -122.487584402186499, 37.78949866010057 ], [ -122.487564674856429, 37.789472896340307 ], [ -122.487563664349921, 37.78943514280558 ], [ -122.487464302267156, 37.789473215069947 ], [ -122.48744759425297, 37.789430918694578 ], [ -122.487369692668253, 37.789430171560369 ], [ -122.487296628705792, 37.789480848156245 ], [ -122.487120114954962, 37.789610869819036 ], [ -122.487051777894393, 37.789708851205745 ], [ -122.4869376141597, 37.789840568479555 ], [ -122.486809390152729, 37.789964281705743 ], [ -122.486730121786451, 37.790041845235905 ], [ -122.486553036429143, 37.790150586495734 ], [ -122.486429009493079, 37.790237144752382 ], [ -122.486335272657072, 37.790356155991162 ], [ -122.486245109599949, 37.790414674064778 ], [ -122.486236878145661, 37.790495160989501 ], [ -122.486221786002261, 37.790513270391187 ], [ -122.485095392905748, 37.790094746949087 ], [ -122.484316748868366, 37.789805424389257 ], [ -122.484214987310182, 37.789767611906584 ], [ -122.484071292407094, 37.789571562974182 ], [ -122.484019551359538, 37.788671434543716 ], [ -122.483911841345289, 37.78771598691722 ], [ -122.483910676418589, 37.787705653817092 ], [ -122.481375583614479, 37.787198893328011 ], [ -122.479861181106074, 37.787037199203986 ], [ -122.478707989065171, 37.78691405835 ], [ -122.477707716230128, 37.786939475526701 ], [ -122.476637454822679, 37.786966661899442 ], [ -122.476572244768761, 37.786128658440397 ], [ -122.476575166016133, 37.786128513873635 ], [ -122.476575148769683, 37.786128282045887 ], [ -122.476436803741322, 37.784271125057622 ], [ -122.476306551695615, 37.782405954593735 ], [ -122.476169188584777, 37.78047585000003 ], [ -122.476025278884237, 37.778553841183147 ], [ -122.475888270951586, 37.776692974324831 ], [ -122.475750968701433, 37.774828017958995 ], [ -122.475613644972711, 37.772962670675476 ], [ -122.475613625589148, 37.772962410314676 ], [ -122.476694205661246, 37.772912858094969 ], [ -122.477069824745385, 37.772895630732648 ], [ -122.477766947236773, 37.772863655180586 ], [ -122.478836951668541, 37.772814568639937 ], [ -122.47883762078969, 37.772814536530767 ], [ -122.478848715172788, 37.772814028898644 ], [ -122.479904580478745, 37.772765580938412 ], [ -122.480978851643016, 37.772716079930653 ], [ -122.481947659007389, 37.77267180789157 ], [ -122.482048961146063, 37.772667157434498 ], [ -122.483119121668807, 37.772618024364625 ], [ -122.483119139145145, 37.772618264154566 ], [ -122.484194219251819, 37.772569315707138 ], [ -122.484194201052048, 37.772569061919981 ], [ -122.485152053625171, 37.772525429693054 ], [ -122.485261332297384, 37.772520422109807 ], [ -122.485262022888591, 37.772520390701253 ], [ -122.486334053115812, 37.772471462244795 ], [ -122.486678527930636, 37.772455879683093 ], [ -122.487398288926627, 37.772423078182946 ], [ -122.487398306387334, 37.772423316873983 ], [ -122.487399123482518, 37.77242327974907 ], [ -122.488470602075608, 37.772374307055074 ], [ -122.488471323394165, 37.772374169626119 ], [ -122.489539486385709, 37.772325343661755 ], [ -122.49061689309373, 37.772276279654356 ], [ -122.490617013718605, 37.772276274046327 ], [ -122.491688031137627, 37.772227293012065 ], [ -122.492761363210761, 37.772178246338406 ], [ -122.493316307377469, 37.772153213706439 ], [ -122.493832479293559, 37.77212966191987 ], [ -122.493832498174271, 37.772129926957135 ], [ -122.493833180817205, 37.772129896182108 ], [ -122.494902921073546, 37.772080894286702 ], [ -122.494903299427449, 37.772080795311069 ], [ -122.495971990075716, 37.772031913255347 ], [ -122.497046812008847, 37.771982808835908 ], [ -122.497412740335307, 37.771966238858134 ], [ -122.498113882732468, 37.771934487449556 ], [ -122.499183042122894, 37.771885392463027 ], [ -122.500200291234236, 37.771838923903807 ], [ -122.500257545202601, 37.771836308607973 ], [ -122.501327700223527, 37.771787274197017 ], [ -122.502399595949868, 37.771738155153713 ], [ -122.502399732131124, 37.771738148994636 ], [ -122.503472688521128, 37.771689380410749 ], [ -122.503472690942445, 37.771689380369601 ], [ -122.504544396347384, 37.771640577944709 ], [ -122.505611140464779, 37.771591516134151 ], [ -122.50668530503512, 37.771542352938617 ], [ -122.506685577396198, 37.771542340610623 ], [ -122.506991972993774, 37.771528822999358 ], [ -122.507750664399296, 37.771495034126787 ], [ -122.507750665782908, 37.771495034103232 ], [ -122.508780633594597, 37.771447480819759 ], [ -122.508823169175031, 37.771445503888728 ], [ -122.508823330922013, 37.771445496187766 ], [ -122.508867990729883, 37.771443447055226 ], [ -122.509894749698645, 37.771396032095495 ], [ -122.509894781266311, 37.771396329054475 ], [ -122.511053819156686, 37.771347546731022 ], [ -122.511055400217217, 37.771347479926334 ], [ -122.512571364940968, 37.771283657974607 ], [ -122.51313192303401, 37.771260053409627 ], [ -122.51314077587368, 37.771331323581165 ], [ -122.513103639776702, 37.771429475690731 ], [ -122.513116974838326, 37.771538439951165 ], [ -122.5131111559662, 37.771706791559524 ], [ -122.513101727800077, 37.771741976505247 ], [ -122.513108516285712, 37.771800920539754 ], [ -122.513097415135022, 37.771902061732895 ], [ -122.513158379126494, 37.77223615155534 ], [ -122.513150048202618, 37.772247968474822 ], [ -122.513145175599931, 37.772259726057939 ], [ -122.513142070416649, 37.772272827219133 ], [ -122.513140694405962, 37.772285899124284 ], [ -122.513142777404809, 37.77229891140734 ], [ -122.51314831943732, 37.772311864891819 ], [ -122.513155553774638, 37.772323415987366 ], [ -122.513162806726825, 37.772335653782996 ], [ -122.513171807785298, 37.772348547918142 ], [ -122.513179470052052, 37.772375886809904 ], [ -122.513181590285754, 37.772390272493183 ], [ -122.513180232870297, 37.772404030275354 ], [ -122.513177164205956, 37.772418504300951 ], [ -122.513164035088622, 37.772444825057953 ], [ -122.513153956021, 37.772455985088065 ], [ -122.513145624725894, 37.77246780201267 ], [ -122.513139041542303, 37.772480275551658 ], [ -122.513134206485844, 37.772493406254469 ], [ -122.513132830469672, 37.772506478159016 ], [ -122.513133202560653, 37.772520206404018 ], [ -122.513137015097556, 37.772533189699409 ], [ -122.513142557139105, 37.772546142909071 ], [ -122.513149791498321, 37.772557694004483 ], [ -122.513128650263695, 37.772862969521874 ], [ -122.513143974877181, 37.772917647305441 ], [ -122.513134546565453, 37.772952831971672 ], [ -122.513140759176039, 37.773054363934854 ], [ -122.513127629925961, 37.773080684410282 ], [ -122.513121083909837, 37.773094531347873 ], [ -122.513117996938973, 37.773108318663766 ], [ -122.513113180104355, 37.773122136070647 ], [ -122.513110502783931, 37.773151024750284 ], [ -122.513109145348821, 37.773164782804365 ], [ -122.513109926760848, 37.773193612966814 ], [ -122.513112046989562, 37.773207998100119 ], [ -122.513115877809639, 37.773221667551859 ], [ -122.513119727927929, 37.77323602341751 ], [ -122.513123558750877, 37.773249692868944 ], [ -122.513130848990954, 37.773263303241755 ], [ -122.513136372841529, 37.773275570567371 ], [ -122.513136837962776, 37.773292730939929 ], [ -122.513139032281771, 37.773309862056486 ], [ -122.513139962541018, 37.773344183350439 ], [ -122.513137434071865, 37.77337856371112 ], [ -122.513137899208886, 37.773395724632501 ], [ -122.51313663480029, 37.773412914815644 ], [ -122.513133622247153, 37.773429448109219 ], [ -122.513132357829548, 37.773446638017631 ], [ -122.513129363533338, 37.773463857742755 ], [ -122.513124956674076, 37.773492776231812 ], [ -122.513123636099678, 37.773507907142864 ], [ -122.513125756700802, 37.773522292818349 ], [ -122.513127895547086, 37.773537364376381 ], [ -122.513130108829742, 37.773555182186904 ], [ -122.51313457258631, 37.77359218983559 ], [ -122.513137102897502, 37.773685543750098 ], [ -122.51313464849045, 37.773722669817865 ], [ -122.513133402680765, 37.77374054642582 ], [ -122.513130445590789, 37.773759139276294 ], [ -122.513129218723165, 37.773777702029449 ], [ -122.513126261969134, 37.773796294599215 ], [ -122.513121575665878, 37.773814916705028 ], [ -122.513118599957409, 37.773832822854594 ], [ -122.513113913995852, 37.773851444954062 ], [ -122.513110938637425, 37.773869351371971 ], [ -122.513106251972374, 37.773887973208282 ], [ -122.513098199929146, 37.77391008650784 ], [ -122.513115558504083, 37.774550522030069 ], [ -122.513135161617555, 37.77469921031755 ], [ -122.513164585532962, 37.774890995995399 ], [ -122.513170483591551, 37.775108592933201 ], [ -122.513148799533084, 37.77520236034195 ], [ -122.513166877896921, 37.775294761967629 ], [ -122.513138108336719, 37.775382469681844 ], [ -122.513154511511672, 37.775413093012311 ], [ -122.513118656446565, 37.775494741304421 ], [ -122.513116560550898, 37.775991978980805 ], [ -122.513220716743945, 37.77664260637399 ], [ -122.513262136135666, 37.776766199546913 ], [ -122.513273147342474, 37.776853227885702 ], [ -122.513301250635152, 37.776996277263876 ], [ -122.513336088063554, 37.777196211308791 ], [ -122.513350113009579, 37.777330573444466 ], [ -122.513418927986152, 37.77744339753194 ], [ -122.513485622738756, 37.777541836186963 ], [ -122.513511493535475, 37.777602514461641 ], [ -122.513605787519069, 37.777633867571893 ], [ -122.513789576977686, 37.777711077145469 ], [ -122.513970390041706, 37.777742325491253 ], [ -122.514130469394843, 37.777902348781886 ], [ -122.514271487815051, 37.77812519117407 ], [ -122.514413862528215, 37.778270408245596 ], [ -122.514604595643718, 37.77847591891544 ], [ -122.51462964838835, 37.778506394234036 ], [ -122.514661065627067, 37.778643892998048 ], [ -122.514636184118331, 37.778747329407956 ], [ -122.514564452996041, 37.778846072735902 ], [ -122.514578405995934, 37.778977688986053 ], [ -122.51449838155861, 37.779153489214309 ], [ -122.5144938833634, 37.779242842682805 ], [ -122.514567855611702, 37.77941807161681 ], [ -122.514670725915678, 37.779446530659044 ], [ -122.514854558211539, 37.779525111397355 ], [ -122.514948079566921, 37.779719234525949 ], [ -122.514897941861832, 37.779848512679017 ], [ -122.514749765647835, 37.779872333834206 ], [ -122.514641072918508, 37.779820625636908 ], [ -122.514565266573783, 37.77989677577483 ], [ -122.514533951466817, 37.780082044762075 ], [ -122.514511340895595, 37.780269225221183 ], [ -122.514474054726847, 37.780425753002312 ], [ -122.51446673230646, 37.780602371059075 ], [ -122.514648527113849, 37.780860913612862 ], [ -122.51472341591213, 37.781133644263413 ], [ -122.514586047991969, 37.781300809991649 ], [ -122.514468426928062, 37.781302819849991 ], [ -122.514292998946104, 37.781279034300063 ], [ -122.514303621052633, 37.781351647553429 ], [ -122.514284968188448, 37.781429568185636 ], [ -122.514242655950966, 37.781464628517519 ], [ -122.513867881152649, 37.781428452669296 ], [ -122.513760174171992, 37.78147699096975 ], [ -122.513883322187127, 37.781614982927096 ], [ -122.513812238767187, 37.78173775061245 ], [ -122.513697000270085, 37.781891489394212 ], [ -122.513670014693673, 37.78198122658408 ], [ -122.513522169917209, 37.782081269425682 ], [ -122.513466336763443, 37.782192101792845 ], [ -122.513546762127802, 37.782286185176545 ], [ -122.513589561336119, 37.782396706497991 ], [ -122.513504004159799, 37.782432504856651 ], [ -122.51345966482603, 37.782520478406092 ], [ -122.513490615272289, 37.782576949453883 ], [ -122.51349907897729, 37.782633804536587 ], [ -122.513499154475824, 37.782700417272132 ], [ -122.513444212427984, 37.782780331251374 ], [ -122.513311970586869, 37.782817613200059 ], [ -122.513176844047379, 37.782748499450129 ], [ -122.513099674895386, 37.782774539876293 ], [ -122.513082211268937, 37.782896391754747 ], [ -122.512985625061674, 37.783036075867919 ], [ -122.513019551763222, 37.783138507955194 ], [ -122.513026396706579, 37.783199511429288 ], [ -122.512878567398928, 37.783236372275823 ], [ -122.512854035372925, 37.783352850568228 ], [ -122.512805434943459, 37.783475233699562 ], [ -122.512705462306386, 37.783553855572684 ], [ -122.512518627902452, 37.783620225547125 ], [ -122.512466567525493, 37.783742667306889 ], [ -122.512644903191074, 37.783873537806549 ], [ -122.512713964283492, 37.783931418677646 ], [ -122.512652381073622, 37.784021746473734 ], [ -122.512681006779928, 37.784120148680003 ], [ -122.512565948104239, 37.784153016218092 ], [ -122.512295468592697, 37.783942683042248 ], [ -122.512111442218099, 37.7837933668308 ], [ -122.511916645881882, 37.783949148187006 ], [ -122.511936379260646, 37.784102641671865 ], [ -122.512002036912364, 37.7841626409828 ], [ -122.51201098319315, 37.784237343198853 ], [ -122.511976089219957, 37.784290817818842 ], [ -122.511911287292179, 37.784326260764388 ], [ -122.511796674312308, 37.784311734732256 ], [ -122.511643280924901, 37.784334954352396 ], [ -122.511486279442096, 37.784288874386938 ], [ -122.511300968574147, 37.78428379521467 ], [ -122.511334223422679, 37.784425383212891 ], [ -122.511306545033449, 37.784553589399493 ], [ -122.511229614678896, 37.784588552121491 ], [ -122.51102434727656, 37.784485608568794 ], [ -122.510971002039966, 37.784496819600761 ], [ -122.510838401528204, 37.784584923981406 ], [ -122.510747296660981, 37.784671633775218 ], [ -122.510491862112929, 37.784697278857706 ], [ -122.510370776300974, 37.784699343616424 ], [ -122.510236724687886, 37.784733906185757 ], [ -122.510168389422006, 37.784702794445394 ], [ -122.510020323714343, 37.784723420804994 ], [ -122.509994254968106, 37.784727052267002 ], [ -122.509808028924709, 37.784816069670107 ], [ -122.509716922917022, 37.784902778658349 ], [ -122.509665899527562, 37.784999792217178 ], [ -122.509574233553352, 37.78512977535155 ], [ -122.509483405510977, 37.78522678080374 ], [ -122.50935080157798, 37.785314883231258 ], [ -122.509270075574662, 37.785337547981477 ], [ -122.509233168789549, 37.785444621876991 ], [ -122.509117710773396, 37.785590805131108 ], [ -122.508796514633275, 37.785744614237508 ], [ -122.508661532747013, 37.785744853745925 ], [ -122.508565980602214, 37.785795240243836 ], [ -122.508486275275231, 37.785855657828165 ], [ -122.50845217664569, 37.785938647661681 ], [ -122.508258558155333, 37.786074486851589 ], [ -122.50824179847983, 37.786094687819457 ], [ -122.508218230136194, 37.78611912520401 ], [ -122.508132741023516, 37.786157665329803 ], [ -122.508102962554631, 37.786144437693665 ], [ -122.508035220497703, 37.78613529033418 ], [ -122.507963402235234, 37.786167416830274 ], [ -122.507918608664951, 37.786238914034136 ], [ -122.507884921314982, 37.786273138055307 ], [ -122.507810998339579, 37.786355432403496 ], [ -122.507791149628716, 37.786389420730835 ], [ -122.507786702460081, 37.786416966109108 ], [ -122.507753742643061, 37.786414093677742 ], [ -122.507723143657557, 37.786434530234523 ], [ -122.507686905785704, 37.786502447942446 ], [ -122.50771513615085, 37.786586436657288 ], [ -122.507634122264022, 37.786726537606768 ], [ -122.507529970492527, 37.786842996798164 ], [ -122.507416802174745, 37.786882007667536 ], [ -122.507337150418977, 37.786944484013162 ], [ -122.507251469686537, 37.787040025961154 ], [ -122.50719904571541, 37.787149423517022 ], [ -122.507107186903028, 37.787272540712486 ], [ -122.507053654233644, 37.787276885429115 ], [ -122.506971891727119, 37.787453396158277 ], [ -122.506896872053431, 37.78749519083452 ], [ -122.50673936089315, 37.787494438084011 ], [ -122.506717248362293, 37.787444682355584 ], [ -122.506653688773341, 37.787462245895419 ], [ -122.506526049480186, 37.787478152978885 ], [ -122.506492546406875, 37.787519241120947 ], [ -122.506427084531083, 37.787594522862221 ], [ -122.506343785965981, 37.787650192878154 ], [ -122.506284872420196, 37.787711628562818 ], [ -122.506271997783998, 37.787747558158287 ], [ -122.506258863502353, 37.787773877799495 ], [ -122.50624035413243, 37.787793421492793 ], [ -122.506219873800518, 37.787804071365088 ], [ -122.506177628287418, 37.787841873914068 ], [ -122.506131292484596, 37.787856397132735 ], [ -122.506163876746712, 37.787909408764172 ], [ -122.506122372558949, 37.787974668305665 ], [ -122.506121008614969, 37.788052293211784 ], [ -122.506089600492331, 37.788170947004069 ], [ -122.506052098981115, 37.788192187283286 ], [ -122.505852340805589, 37.788229236102978 ], [ -122.505747263058424, 37.788247505451196 ], [ -122.505657587040744, 37.788259332046266 ], [ -122.505605226952582, 37.788243054476361 ], [ -122.505520554840288, 37.788247928168715 ], [ -122.505423328958457, 37.788236533825454 ], [ -122.505330267621474, 37.78825116471306 ], [ -122.505202440987361, 37.788260206114757 ], [ -122.505107748523827, 37.788214431400775 ], [ -122.505021260444238, 37.788152035322256 ], [ -122.50498134335804, 37.788147906935059 ], [ -122.504941407743146, 37.788143092108974 ], [ -122.504896245414301, 37.788136992665024 ], [ -122.504877161086682, 37.788135256957062 ], [ -122.504859843370596, 37.788134864962309 ], [ -122.504835625333357, 37.788135276762382 ], [ -122.504801138826153, 37.7881399833256 ], [ -122.504785514269201, 37.788138188774688 ], [ -122.504771508408268, 37.788132246255898 ], [ -122.504759158308161, 37.788123528620481 ], [ -122.5047502309164, 37.788113379306509 ], [ -122.504739555111996, 37.788102572979582 ], [ -122.504727204674595, 37.788093855346673 ], [ -122.504711432227211, 37.788086569376937 ], [ -122.504695715029484, 37.788081342687157 ], [ -122.504680053426, 37.788078175271465 ], [ -122.50466269900177, 37.788076410116517 ], [ -122.50464541869988, 37.788077390660611 ], [ -122.504626408521617, 37.788078400888217 ], [ -122.504609090805303, 37.788078008307494 ], [ -122.504591755258659, 37.788076929561612 ], [ -122.504576093667978, 37.788073762406697 ], [ -122.504558683651112, 37.788069937685613 ], [ -122.504543003526479, 37.788066083826294 ], [ -122.504525593174549, 37.788062259380773 ], [ -122.504508220574564, 37.788059807771766 ], [ -122.50449088434911, 37.788058729297397 ], [ -122.504468396217547, 37.788059111612547 ], [ -122.504456509027335, 37.788067554312491 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":5,"ZIP_CODE":94118,"ID":94118},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.448885763577039, 37.778388598994987 ], [ -122.449767079183658, 37.778277008331997 ], [ -122.450654812483819, 37.778164598609756 ], [ -122.450826415883952, 37.778142868140662 ], [ -122.451543139139602, 37.778052106408275 ], [ -122.452431111623397, 37.777939652339285 ], [ -122.453384996187339, 37.777826863341367 ], [ -122.45318832797058, 37.776853425180988 ], [ -122.452963825070867, 37.775750129254348 ], [ -122.452810237317621, 37.774995318605924 ], [ -122.453003330637316, 37.774970754669006 ], [ -122.45468264773983, 37.77475548474694 ], [ -122.454683295611602, 37.774755406979118 ], [ -122.455033749574639, 37.77471323536281 ], [ -122.45525254468275, 37.774686906456331 ], [ -122.455898178089939, 37.774604132119862 ], [ -122.456283639851293, 37.774554711848936 ], [ -122.456283671603558, 37.774554866249353 ], [ -122.456283917173579, 37.774554834704738 ], [ -122.457134751103212, 37.774454490912483 ], [ -122.458371099123696, 37.774308895694055 ], [ -122.458795325509186, 37.774254885425997 ], [ -122.459486118442314, 37.77416693399686 ], [ -122.459486145343419, 37.77416729779403 ], [ -122.459486938645284, 37.774167197254911 ], [ -122.460552700773292, 37.774031358657659 ], [ -122.460552661960989, 37.774031133779268 ], [ -122.461619755154771, 37.7738952534419 ], [ -122.461619775372085, 37.773895534117642 ], [ -122.461620188227315, 37.77389548164836 ], [ -122.462535340858068, 37.773778657528119 ], [ -122.462683796526321, 37.773759751788596 ], [ -122.463749210177951, 37.773624065149079 ], [ -122.464811670328331, 37.773488744378348 ], [ -122.465331676538511, 37.773422509669793 ], [ -122.465883163277454, 37.773398204721545 ], [ -122.466373346760548, 37.773376599548058 ], [ -122.466951728424362, 37.773351356945881 ], [ -122.466952500298319, 37.773351323464517 ], [ -122.468023916207073, 37.773303833556405 ], [ -122.468348575135167, 37.773289518371953 ], [ -122.469092496140973, 37.773256712542192 ], [ -122.469517084069324, 37.773237987003441 ], [ -122.470162692059887, 37.773209510586071 ], [ -122.470162712316579, 37.773209791534974 ], [ -122.471240089434815, 37.773162280380667 ], [ -122.47124006836178, 37.773161981865066 ], [ -122.471762122569857, 37.773138947752848 ], [ -122.472219951938214, 37.773117969260745 ], [ -122.472297341321692, 37.773114423074823 ], [ -122.473427836194134, 37.773062613687692 ], [ -122.473737577092777, 37.773048416620476 ], [ -122.474550910293516, 37.773011133644289 ], [ -122.474550931211951, 37.773011425844139 ], [ -122.47455168367884, 37.773011391539193 ], [ -122.475612802305008, 37.772962709520556 ], [ -122.475613644972711, 37.772962670675476 ], [ -122.475750968701433, 37.774828017958995 ], [ -122.475888270951586, 37.776692974324831 ], [ -122.476025278884237, 37.778553841183147 ], [ -122.476169188584777, 37.78047585000003 ], [ -122.476306551695615, 37.782405954593735 ], [ -122.476436803741322, 37.784271125057622 ], [ -122.476575148769683, 37.786128282045887 ], [ -122.476575166016133, 37.786128513873635 ], [ -122.476572244768761, 37.786128658440397 ], [ -122.476637454822679, 37.786966661899442 ], [ -122.47616220885665, 37.786978730627588 ], [ -122.475567725323828, 37.787005248954515 ], [ -122.475136959985235, 37.787024462123846 ], [ -122.474584006514732, 37.787049123020516 ], [ -122.474432824368861, 37.787072820298278 ], [ -122.473333621918172, 37.787245111436654 ], [ -122.473316434470121, 37.787247805418339 ], [ -122.472782224474642, 37.787331534391747 ], [ -122.47254342327507, 37.787368961705944 ], [ -122.472401902490546, 37.787384046501884 ], [ -122.472290534181823, 37.787395917162272 ], [ -122.468653534340191, 37.787783523544832 ], [ -122.466942641213976, 37.788133153852705 ], [ -122.465882841138949, 37.788349715761562 ], [ -122.4648365613821, 37.788563504283978 ], [ -122.463771243725489, 37.788781172337565 ], [ -122.459781586189493, 37.789596250165474 ], [ -122.45947565027717, 37.789710559160014 ], [ -122.459250455476877, 37.789713291862398 ], [ -122.459028627866218, 37.789715983297555 ], [ -122.459011873160264, 37.789719335764374 ], [ -122.457498733292852, 37.789996912625632 ], [ -122.455878319348855, 37.790294143976332 ], [ -122.454248357567437, 37.79059310209788 ], [ -122.452035629818212, 37.790998907609811 ], [ -122.450995459060991, 37.791209906278311 ], [ -122.449385188501296, 37.791484927305568 ], [ -122.449367313308201, 37.791487980191171 ], [ -122.449189583391288, 37.790608108274284 ], [ -122.449011564525605, 37.789726786022129 ], [ -122.448835781299294, 37.788856511426609 ], [ -122.448656220796209, 37.787977164570449 ], [ -122.4469741664482, 37.788186460801001 ], [ -122.446792779960703, 37.787261853518181 ], [ -122.446610465639836, 37.786302298311156 ], [ -122.446738337622591, 37.786243163870765 ], [ -122.446849274413296, 37.786186897081585 ], [ -122.447533801639068, 37.785411415165207 ], [ -122.447605133356163, 37.785275579171099 ], [ -122.447621599012791, 37.785194684567394 ], [ -122.447620107068687, 37.785083635258417 ], [ -122.447578549915917, 37.784998355250835 ], [ -122.447549635601661, 37.784906798974511 ], [ -122.447149436147441, 37.783030677550911 ], [ -122.447173033991248, 37.782710075581413 ], [ -122.447225622636566, 37.782575775503396 ], [ -122.447283893261542, 37.782434393634787 ], [ -122.447301513844337, 37.78239164221629 ], [ -122.447450898997985, 37.782195217632704 ], [ -122.447637300982407, 37.781719177617617 ], [ -122.447655108274333, 37.781537309189886 ], [ -122.447576361567485, 37.781175778551805 ], [ -122.447517982733274, 37.781069510753063 ], [ -122.447351927163439, 37.780152061280916 ], [ -122.447039806751391, 37.778622307248391 ], [ -122.447997721370214, 37.778501033647089 ], [ -122.448879206948348, 37.778389428728616 ], [ -122.448885763577039, 37.778388598994987 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":6,"ZIP_CODE":94123,"ID":94123},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.438402484723895, 37.794806973138577 ], [ -122.440045216960385, 37.794597761146619 ], [ -122.440868123190498, 37.794493055920753 ], [ -122.440870170501768, 37.794492795601883 ], [ -122.441712771485612, 37.794385578392699 ], [ -122.443384198876302, 37.794172877898092 ], [ -122.445035345747925, 37.79396273368863 ], [ -122.446587034424141, 37.793765298555968 ], [ -122.446446456540414, 37.792813716046261 ], [ -122.446587862952981, 37.793765120337646 ], [ -122.446727777261131, 37.794706464759514 ], [ -122.446727777275527, 37.794706465308671 ], [ -122.446751148304088, 37.794858932799087 ], [ -122.44687098056005, 37.795640691997477 ], [ -122.446928896449293, 37.796018515191513 ], [ -122.447014738218328, 37.796578509648619 ], [ -122.447014738232738, 37.796578510197754 ], [ -122.44715829625072, 37.79751500492933 ], [ -122.44715829626513, 37.797515005478481 ], [ -122.447209582420982, 37.797849561838987 ], [ -122.447303043858923, 37.798459232650295 ], [ -122.447327769221047, 37.798519415660031 ], [ -122.447341437979304, 37.798552685345861 ], [ -122.447400275900733, 37.798948048802856 ], [ -122.447466030932901, 37.799389886853575 ], [ -122.447613279369918, 37.80032370169468 ], [ -122.447614227653389, 37.80032479990944 ], [ -122.447802865090509, 37.801525678628579 ], [ -122.447819572978844, 37.801633208279924 ], [ -122.447819731578562, 37.801633051558142 ], [ -122.447857007904148, 37.801596177616553 ], [ -122.447921599691895, 37.801532283988202 ], [ -122.448359651469772, 37.801586782043685 ], [ -122.448802640091088, 37.801772003872607 ], [ -122.449043488821943, 37.801965383441527 ], [ -122.449178591741017, 37.802073857413127 ], [ -122.449460220896157, 37.80245428555321 ], [ -122.449536106109235, 37.802697377072583 ], [ -122.449565462756809, 37.802791419060213 ], [ -122.449583713807527, 37.803152915295549 ], [ -122.449583722697156, 37.803153095621241 ], [ -122.449495662264184, 37.803470319431604 ], [ -122.449388062152011, 37.803710849923448 ], [ -122.449253815658196, 37.803861977230383 ], [ -122.449124213448584, 37.804007874392056 ], [ -122.448954929708933, 37.80412855834809 ], [ -122.448814547024654, 37.804228638340902 ], [ -122.448316879890498, 37.804444627382082 ], [ -122.448245764546613, 37.8044754914729 ], [ -122.448240723025904, 37.804477679722268 ], [ -122.448240728857812, 37.804477717258706 ], [ -122.44824552349904, 37.804508484024247 ], [ -122.448279145759457, 37.80472422506687 ], [ -122.448321161555853, 37.804993824977359 ], [ -122.448323332142422, 37.805007750605469 ], [ -122.448455258275729, 37.806133277363898 ], [ -122.448456716038393, 37.806145711376217 ], [ -122.448529100304583, 37.806763241657009 ], [ -122.448398315024306, 37.806792871575105 ], [ -122.448372486009177, 37.806798105392311 ], [ -122.448348405000459, 37.806803997055574 ], [ -122.44832261235274, 37.806810603719661 ], [ -122.448274523063262, 37.806825132736471 ], [ -122.448250514438882, 37.806833770101044 ], [ -122.448204281209826, 37.806853075532878 ], [ -122.448182039290586, 37.806863057432189 ], [ -122.448159833037835, 37.806874411921982 ], [ -122.448139357121818, 37.80688573782485 ], [ -122.448117186873532, 37.806898464895561 ], [ -122.448103560271292, 37.806906930735266 ], [ -122.447833857922845, 37.807052164926837 ], [ -122.447528276286675, 37.807250818574119 ], [ -122.447180260711605, 37.80747705551984 ], [ -122.446637954280746, 37.807525151443585 ], [ -122.446476742583258, 37.807516824572637 ], [ -122.445255735074412, 37.807626931568663 ], [ -122.444832951299077, 37.807611928844082 ], [ -122.444812115030089, 37.807609525524043 ], [ -122.444789548054757, 37.807607150739592 ], [ -122.443882698723485, 37.807700913966812 ], [ -122.443762319418525, 37.807713359922936 ], [ -122.443684632386478, 37.807721507559208 ], [ -122.442739197031372, 37.807965235732532 ], [ -122.442711389346584, 37.807972404225552 ], [ -122.442625660786931, 37.808004032657479 ], [ -122.442524054141913, 37.808024247618199 ], [ -122.442354908341343, 37.808043514915532 ], [ -122.441767928096084, 37.808104685164672 ], [ -122.44153654297466, 37.808127036445633 ], [ -122.441200035212404, 37.808167598495942 ], [ -122.44095148917647, 37.808195724629321 ], [ -122.44065270005224, 37.808288542686931 ], [ -122.440627067703531, 37.808301325835579 ], [ -122.440575873699515, 37.808329637315019 ], [ -122.440528212527582, 37.808360637280757 ], [ -122.440504418161254, 37.808377510253422 ], [ -122.440482353473598, 37.808394354762264 ], [ -122.440462037446096, 37.808411857223902 ], [ -122.440440008975642, 37.808430074859068 ], [ -122.440419728804599, 37.808448949904253 ], [ -122.440401196955307, 37.808468483183979 ], [ -122.440382683383717, 37.808488702887828 ], [ -122.440369270902693, 37.808505405024498 ], [ -122.440221248842576, 37.808670595014306 ], [ -122.440123020723803, 37.808753931536479 ], [ -122.440031607015868, 37.808833035512706 ], [ -122.439928060968157, 37.808779113775664 ], [ -122.440270312303127, 37.808229595265985 ], [ -122.440282155842453, 37.808219099502388 ], [ -122.440294017657806, 37.80820928989008 ], [ -122.440307609508267, 37.808199452089056 ], [ -122.440319488926107, 37.808190329461823 ], [ -122.440334864961784, 37.808182522213436 ], [ -122.440348510624844, 37.808174743706033 ], [ -122.440379298231178, 37.808160502620083 ], [ -122.440394728431826, 37.80815475493111 ], [ -122.440410176225527, 37.808149693678615 ], [ -122.440427371995767, 37.808145290667582 ], [ -122.440444586383592, 37.808141573526278 ], [ -122.440470613795014, 37.808143892481645 ], [ -122.440632371579539, 37.808106894262245 ], [ -122.440777543613365, 37.808097638147814 ], [ -122.441785658321223, 37.807988336182923 ], [ -122.441808099289275, 37.807985906519384 ], [ -122.441799274649981, 37.807913258896662 ], [ -122.441490202960892, 37.807943755875684 ], [ -122.441489843938655, 37.807930027497129 ], [ -122.441472521937172, 37.807929625920565 ], [ -122.441480832705722, 37.807916441000579 ], [ -122.441399010156047, 37.807832633902123 ], [ -122.441414331805831, 37.807822767220159 ], [ -122.441512177188741, 37.807923479293905 ], [ -122.44162439956051, 37.807912017357232 ], [ -122.441545678197272, 37.807814424464247 ], [ -122.441557557740268, 37.807805301431408 ], [ -122.441658935146762, 37.807908701878773 ], [ -122.441779792066384, 37.807896411186228 ], [ -122.441788084829597, 37.807882540086432 ], [ -122.441704477043643, 37.807796702127824 ], [ -122.441718086585212, 37.807787550596132 ], [ -122.44181950044613, 37.807892323765437 ], [ -122.441935183814792, 37.807880804821842 ], [ -122.441943476554428, 37.807866933985672 ], [ -122.441859851343693, 37.807780409692931 ], [ -122.441873460855945, 37.807771257868716 ], [ -122.441976640855827, 37.807877375557908 ], [ -122.441977107703579, 37.807895222530654 ], [ -122.441816542778795, 37.807911600852826 ], [ -122.441823637077619, 37.807984277513498 ], [ -122.442320834639688, 37.807932139640414 ], [ -122.442377595612399, 37.807918156721222 ], [ -122.442423345751081, 37.807880319904761 ], [ -122.442454552098894, 37.807815940203007 ], [ -122.442446930178193, 37.807789283331502 ], [ -122.442372794146465, 37.807800805256427 ], [ -122.442345413582302, 37.807812930576347 ], [ -122.442346006240967, 37.807835582850217 ], [ -122.442033707111619, 37.807875062158132 ], [ -122.442009243703154, 37.807733999234173 ], [ -122.442027954502791, 37.807721329750571 ], [ -122.442048400903616, 37.807841170516582 ], [ -122.442059070073554, 37.807851982482966 ], [ -122.442207469058346, 37.807833743991878 ], [ -122.442217473805144, 37.807819158213746 ], [ -122.442189585584913, 37.807679524627673 ], [ -122.44220852946296, 37.807675779293724 ], [ -122.442236490235743, 37.807818158319698 ], [ -122.442248872177956, 37.807828255059988 ], [ -122.442314446214397, 37.807820307862364 ], [ -122.442321008509211, 37.807806465496753 ], [ -122.442293084181387, 37.807665459069689 ], [ -122.442311884371406, 37.807656221984004 ], [ -122.442337612108403, 37.807779409372287 ], [ -122.442355041151117, 37.807783929703042 ], [ -122.442395115206907, 37.807727644711157 ], [ -122.442384613878218, 37.807657084644539 ], [ -122.44241012033585, 37.80763949635341 ], [ -122.442685954576561, 37.807595809313327 ], [ -122.442711892175168, 37.807793159839584 ], [ -122.442714242657956, 37.807793886686525 ], [ -122.442762503926971, 37.807808807618663 ], [ -122.442779771325021, 37.807807149719757 ], [ -122.442902339949939, 37.807794142945916 ], [ -122.442998755417392, 37.807774012900218 ], [ -122.44305537242154, 37.807754538469467 ], [ -122.44312779660163, 37.807743731320251 ], [ -122.443201717191158, 37.807723971451296 ], [ -122.443260064122327, 37.807704468417526 ], [ -122.443291085252142, 37.807699150180341 ], [ -122.443284905918816, 37.807661481932094 ], [ -122.443264195467847, 37.807663883640146 ], [ -122.443274020298077, 37.807642433173122 ], [ -122.443270056810988, 37.807623269807593 ], [ -122.44314383017317, 37.807628783225987 ], [ -122.443254016387542, 37.807605679164965 ], [ -122.44326198542305, 37.807579452177009 ], [ -122.443135758859114, 37.807584965586791 ], [ -122.443242483942598, 37.807561918560637 ], [ -122.443256021380762, 37.807550021121365 ], [ -122.443252111820613, 37.807532917601364 ], [ -122.443237999416624, 37.807522848927505 ], [ -122.443246112189684, 37.807502113399792 ], [ -122.443244040453081, 37.807489099968812 ], [ -122.443229963993403, 37.807480404158795 ], [ -122.443238040829058, 37.80745829576658 ], [ -122.443234130578546, 37.807441191982505 ], [ -122.443218162072228, 37.807426347064215 ], [ -122.443264702406339, 37.807418712940589 ], [ -122.443256517776859, 37.807436702740098 ], [ -122.443274647533997, 37.807467993526231 ], [ -122.44326455321054, 37.80747914750733 ], [ -122.443284610988869, 37.807517960537304 ], [ -122.443274498692247, 37.807528428086727 ], [ -122.443278390296598, 37.807544845448142 ], [ -122.443294466994871, 37.807563808946817 ], [ -122.443284389944367, 37.807575649647809 ], [ -122.443286551537625, 37.807592095514579 ], [ -122.443302628241014, 37.807611058737429 ], [ -122.443292551178217, 37.80762289916445 ], [ -122.443296353650368, 37.807635884626045 ], [ -122.443302173270908, 37.807659823956676 ], [ -122.443308298708217, 37.807695432906783 ], [ -122.443434058250361, 37.807672072344801 ], [ -122.443672727711146, 37.807597406163168 ], [ -122.443654441112585, 37.80749401124762 ], [ -122.443659326683914, 37.80748225662078 ], [ -122.443872884696731, 37.807440280106206 ], [ -122.443843293810986, 37.807367974319583 ], [ -122.44370731452436, 37.807397684591926 ], [ -122.443671444290359, 37.807416130974829 ], [ -122.443653888762242, 37.807406805822907 ], [ -122.443615857187666, 37.807408806048031 ], [ -122.443601726794256, 37.807398051259632 ], [ -122.443646374280576, 37.807384267621238 ], [ -122.443657912040536, 37.807362102160489 ], [ -122.443677395248955, 37.807378949282132 ], [ -122.443708397548889, 37.807372944513865 ], [ -122.443719917316642, 37.807350092614648 ], [ -122.443739400535989, 37.807366939726066 ], [ -122.443768690788104, 37.807361649886793 ], [ -122.443780246134452, 37.8073401708521 ], [ -122.443799711046125, 37.807356331526904 ], [ -122.443829001635834, 37.807351041666962 ], [ -122.443838790315425, 37.807328218286891 ], [ -122.443858291875273, 37.807345751805421 ], [ -122.443944431867095, 37.807329910704055 ], [ -122.443955915261199, 37.807305685922557 ], [ -122.44397716482635, 37.807323877338213 ], [ -122.444023687043469, 37.8073155564826 ], [ -122.444033511615373, 37.807294106225484 ], [ -122.444052976916183, 37.807310266852966 ], [ -122.444104672197867, 37.807301173690028 ], [ -122.444114316981555, 37.807272858828142 ], [ -122.444139117510247, 37.80729442532332 ], [ -122.444173580792466, 37.807288363378881 ], [ -122.444194201234893, 37.80728252962394 ], [ -122.444071355206816, 37.80715270277112 ], [ -122.444216516082363, 37.807275294750141 ], [ -122.444262912050363, 37.807262168504906 ], [ -122.444272682607831, 37.807238658656139 ], [ -122.444290381984246, 37.807253474900222 ], [ -122.444329892128806, 37.807241835878372 ], [ -122.444341267517572, 37.807213492465038 ], [ -122.444362535128633, 37.807232370243902 ], [ -122.44440375797123, 37.807220016231902 ], [ -122.444415151652876, 37.807192359237938 ], [ -122.444436401305339, 37.807210550845831 ], [ -122.444546334776021, 37.807177835248929 ], [ -122.444557764011307, 37.807151551111282 ], [ -122.444577265002437, 37.807169084522954 ], [ -122.444645975607855, 37.807148723180354 ], [ -122.444656807573693, 37.807165712792234 ], [ -122.444442095756031, 37.807229685090327 ], [ -122.444483781319875, 37.807301104324431 ], [ -122.444798026960797, 37.807203901149613 ], [ -122.445256739502199, 37.807070664930905 ], [ -122.445225848727588, 37.807014862399406 ], [ -122.445091259282876, 37.807031503517287 ], [ -122.445058382323012, 37.807032045740513 ], [ -122.44505631062799, 37.807019032334502 ], [ -122.445158131368714, 37.807007052095038 ], [ -122.44517833798561, 37.806985429952121 ], [ -122.445116858617496, 37.806951420767781 ], [ -122.445030629048986, 37.806963830570979 ], [ -122.445058875964975, 37.806918727340673 ], [ -122.445006173970214, 37.806889380441703 ], [ -122.444888888156058, 37.806905735960221 ], [ -122.444874654156408, 37.80682493696483 ], [ -122.444919463246819, 37.806817330453363 ], [ -122.445007311205075, 37.806866699909307 ], [ -122.444974402625263, 37.806799942930326 ], [ -122.444993292526533, 37.806794137571423 ], [ -122.445038942963123, 37.806884719639513 ], [ -122.445121510119179, 37.806930742460146 ], [ -122.445046609432765, 37.806780897144854 ], [ -122.445065498977499, 37.806775091780075 ], [ -122.445153141586133, 37.806948762165227 ], [ -122.44523217658535, 37.806992095976476 ], [ -122.44535586222473, 37.80695571941591 ], [ -122.445247620593648, 37.806722643522114 ], [ -122.445266510453877, 37.806716838119371 ], [ -122.445374751789728, 37.806949914001784 ], [ -122.445469219634987, 37.806921573283674 ], [ -122.445352433919155, 37.8066927587953 ], [ -122.445373036116507, 37.806686238401404 ], [ -122.44548810952854, 37.806915767845673 ], [ -122.445561992695104, 37.80689463390474 ], [ -122.445445188748025, 37.806665133074851 ], [ -122.445464060244248, 37.8066586412139 ], [ -122.445580882228484, 37.806888828457545 ], [ -122.44570454953481, 37.806851765098479 ], [ -122.445651671462073, 37.806749628119896 ], [ -122.44565282578796, 37.806727633749716 ], [ -122.445895754405569, 37.806815647477016 ], [ -122.445736019894767, 37.806863607021306 ], [ -122.445754222526631, 37.806897643432812 ], [ -122.446384760166481, 37.806715556411739 ], [ -122.446258463322081, 37.806718327435846 ], [ -122.446193213892712, 37.806738632616792 ], [ -122.446170395914976, 37.806726648309962 ], [ -122.445981443875837, 37.806782644077451 ], [ -122.445970540045622, 37.80676290912637 ], [ -122.445598235532685, 37.806626211997774 ], [ -122.445606509444289, 37.806611653919497 ], [ -122.446001524256076, 37.806756217316881 ], [ -122.446149253941641, 37.806712575605459 ], [ -122.445708764584751, 37.806550221539489 ], [ -122.445717038134546, 37.806535664008109 ], [ -122.446176741453044, 37.806704568267236 ], [ -122.446283248720263, 37.80667328102048 ], [ -122.446005194935296, 37.806500006546784 ], [ -122.446020461726192, 37.80648808024214 ], [ -122.446305581169554, 37.806666731908173 ], [ -122.446420668040176, 37.806632556303882 ], [ -122.446151409366294, 37.806464630848126 ], [ -122.446166694812902, 37.806453390945222 ], [ -122.446443000465095, 37.806626007165498 ], [ -122.446554662537906, 37.806593261684583 ], [ -122.446391023698155, 37.806492266360543 ], [ -122.446406290771549, 37.806480340000242 ], [ -122.446524184932926, 37.806553247425605 ], [ -122.446620237835958, 37.806519385773647 ], [ -122.446642693746213, 37.806583567659246 ], [ -122.44670978090322, 37.806567352265269 ], [ -122.446939773843297, 37.806492135834091 ], [ -122.446948929215651, 37.806511213110113 ], [ -122.446720738906919, 37.806589146719396 ], [ -122.446733553252031, 37.806615717634571 ], [ -122.446996260681743, 37.80653378052115 ], [ -122.44699045975274, 37.806444601492437 ], [ -122.446974562378131, 37.806432503088267 ], [ -122.446987792972394, 37.806408935599343 ], [ -122.446983774594216, 37.806387713332704 ], [ -122.44696966191627, 37.806377645652319 ], [ -122.446979503500458, 37.806356881028954 ], [ -122.446973448766144, 37.806324017983009 ], [ -122.446942374816217, 37.806327277888172 ], [ -122.44695713738291, 37.806296131639499 ], [ -122.446941332573715, 37.806221538794638 ], [ -122.446922047288439, 37.806212242955326 ], [ -122.446935223870369, 37.806186616724325 ], [ -122.446919473110199, 37.806114083171188 ], [ -122.446903683817155, 37.806106103074534 ], [ -122.446913508081977, 37.806084652286692 ], [ -122.446909453048207, 37.80606205716353 ], [ -122.446700318081568, 37.806074437190453 ], [ -122.446888239127603, 37.80604523913599 ], [ -122.446903488381423, 37.806032626547122 ], [ -122.446899451700631, 37.806010717849745 ], [ -122.446881914446337, 37.806002079602202 ], [ -122.446893486335398, 37.805981286694831 ], [ -122.446879430339621, 37.805907352248376 ], [ -122.446670313096035, 37.805920418116813 ], [ -122.446859964791457, 37.805891192083081 ], [ -122.446873519346127, 37.805879980657039 ], [ -122.446859427027746, 37.80580467279912 ], [ -122.446845404479788, 37.805798037263322 ], [ -122.446855228367411, 37.805776586210264 ], [ -122.446849425403357, 37.805753333484326 ], [ -122.446649086514796, 37.805771061515294 ], [ -122.446833420536592, 37.805737116186556 ], [ -122.446845280397781, 37.805727305922368 ], [ -122.446841244096817, 37.805705397216052 ], [ -122.446823724582785, 37.805697445671754 ], [ -122.446835297139998, 37.805676653032066 ], [ -122.446831332492664, 37.805657489784885 ], [ -122.446817327967949, 37.805651540403126 ], [ -122.446825403536536, 37.805629431757723 ], [ -122.446805830072663, 37.805609152989824 ], [ -122.446817348267402, 37.805586300786253 ], [ -122.446809113007006, 37.805536305492353 ], [ -122.446789863569947, 37.805528382500277 ], [ -122.446803112068949, 37.805505501734793 ], [ -122.446787107265692, 37.805489284429996 ], [ -122.446700807332093, 37.805498949734627 ], [ -122.446698645389645, 37.80548250391827 ], [ -122.446795308825045, 37.805471980811141 ], [ -122.446771068810406, 37.805405768207393 ], [ -122.446462225224153, 37.805444515694951 ], [ -122.445989505497494, 37.805505194954378 ], [ -122.446003707846955, 37.805518695189633 ], [ -122.4460087518259, 37.805579044127001 ], [ -122.446547025898894, 37.805509728799308 ], [ -122.446550972467278, 37.805528205624398 ], [ -122.446518204506802, 37.805532866567553 ], [ -122.446489185128556, 37.80554845357441 ], [ -122.446462996481614, 37.80553995860523 ], [ -122.446437419711515, 37.805554801776253 ], [ -122.446402597499727, 37.805547136014376 ], [ -122.446377002372941, 37.805561292745764 ], [ -122.446359483641928, 37.805553341395452 ], [ -122.446335312891549, 37.805555800213412 ], [ -122.446311412770896, 37.805568555772986 ], [ -122.446295642000578, 37.805561262020625 ], [ -122.44627666253902, 37.805563635428271 ], [ -122.446249319434344, 37.805577134798497 ], [ -122.446231800006771, 37.805569182891531 ], [ -122.446148996869667, 37.805580163541499 ], [ -122.446123402382483, 37.805594320480907 ], [ -122.446104135009989, 37.805585710944754 ], [ -122.44608171290129, 37.805588827858948 ], [ -122.44605783038071, 37.805602270079603 ], [ -122.446038580653479, 37.805594346696139 ], [ -122.446017870868147, 37.805596748888597 ], [ -122.445994006657656, 37.805610876973709 ], [ -122.445976469264281, 37.80560223887116 ], [ -122.445950586862267, 37.805605412856671 ], [ -122.445928452266116, 37.805619512663846 ], [ -122.445909185255772, 37.805610903090184 ], [ -122.445885032816534, 37.805614048516972 ], [ -122.445861132260902, 37.80562680426543 ], [ -122.445845361169205, 37.805619510184115 ], [ -122.445814305801534, 37.805623456219109 ], [ -122.44579215352951, 37.805636869562669 ], [ -122.445772886191605, 37.805628260247033 ], [ -122.445750464048956, 37.80563137682369 ], [ -122.445724833141924, 37.805644160817579 ], [ -122.445709062413187, 37.805636866986909 ], [ -122.445683179641605, 37.805640040919442 ], [ -122.445655872372569, 37.805654912741964 ], [ -122.445638335008098, 37.805646274589208 ], [ -122.445605549302542, 37.805650249115246 ], [ -122.445581648680047, 37.80566300453242 ], [ -122.445565859972788, 37.805655024250306 ], [ -122.445531361592955, 37.805659714013281 ], [ -122.445505730631226, 37.805672497684945 ], [ -122.445489959918007, 37.805665203825008 ], [ -122.445462346810999, 37.80566840625292 ], [ -122.445436715841595, 37.805681190184124 ], [ -122.445420945133293, 37.805673896314971 ], [ -122.445391619690682, 37.8056778137015 ], [ -122.445362527733508, 37.805690654981625 ], [ -122.445346757369364, 37.8056833608223 ], [ -122.44531225895534, 37.805688050246587 ], [ -122.445290052615164, 37.805699404198599 ], [ -122.445276030220143, 37.805692768201546 ], [ -122.445243244128591, 37.805696742632556 ], [ -122.445217576794818, 37.805708153657022 ], [ -122.445203554404628, 37.805701517651372 ], [ -122.445170786636353, 37.80570617848889 ], [ -122.445148507984058, 37.805714786690388 ], [ -122.445105232410981, 37.805714813715646 ], [ -122.445083008046993, 37.805725481196227 ], [ -122.44507071598305, 37.80571881663689 ], [ -122.445037947513853, 37.80572347772349 ], [ -122.445017471439073, 37.805734803086857 ], [ -122.445001701099429, 37.805727508881461 ], [ -122.444908551660831, 37.805740032744836 ], [ -122.44488456097811, 37.805749355858453 ], [ -122.444846440036883, 37.805747924599146 ], [ -122.444825945937126, 37.805758563222234 ], [ -122.444811923572402, 37.805751927170057 ], [ -122.44478259772076, 37.805755844410804 ], [ -122.44476037365142, 37.805766512099389 ], [ -122.444713600749751, 37.805765222919185 ], [ -122.444691394641026, 37.805776576752621 ], [ -122.444677372284929, 37.805769940684463 ], [ -122.444653201761611, 37.805772399426502 ], [ -122.444630958989393, 37.805782380395051 ], [ -122.444585917098436, 37.805781062896116 ], [ -122.444563710619391, 37.805792416711171 ], [ -122.444549688278883, 37.80578578090244 ], [ -122.444518632419573, 37.805789726327305 ], [ -122.444494659650545, 37.805799735794025 ], [ -122.444451329400607, 37.805797703293351 ], [ -122.444429141227388, 37.805809743784408 ], [ -122.444413370583575, 37.805802449506146 ], [ -122.444390948345657, 37.805805566373394 ], [ -122.44436699318581, 37.805816262252314 ], [ -122.444352970844008, 37.805809625871085 ], [ -122.444327105931421, 37.805813485938437 ], [ -122.44430666567736, 37.805826184043205 ], [ -122.444289129128734, 37.805817545953296 ], [ -122.444266706866628, 37.805820662247768 ], [ -122.444242769660434, 37.805832044533943 ], [ -122.444228747333952, 37.805825408412545 ], [ -122.444206307444119, 37.80582783853189 ], [ -122.444182406178044, 37.805840593670816 ], [ -122.44416661758342, 37.805832613201659 ], [ -122.44414592563939, 37.805835701223295 ], [ -122.444121953151352, 37.805845710608445 ], [ -122.444025145055349, 37.805850740063669 ], [ -122.444001189835404, 37.805861436142784 ], [ -122.443959572249256, 37.805858688226643 ], [ -122.443935671622995, 37.805871443304085 ], [ -122.443919900675667, 37.805864149240215 ], [ -122.443902651728223, 37.805866493739174 ], [ -122.443880499045548, 37.805879906997674 ], [ -122.443864710121758, 37.805871926219289 ], [ -122.44378192426916, 37.805883591639486 ], [ -122.443756257338379, 37.805895002334175 ], [ -122.443714639749658, 37.805892254606199 ], [ -122.443692432758084, 37.80590360826271 ], [ -122.4436766621739, 37.805896314160641 ], [ -122.443654240222742, 37.805899430882093 ], [ -122.443630320868039, 37.805911499476395 ], [ -122.443614550281069, 37.80590420509148 ], [ -122.44359211035453, 37.805906635368508 ], [ -122.443568208950381, 37.805919390108215 ], [ -122.443552420405013, 37.80591140955697 ], [ -122.443535171434974, 37.805913754002177 ], [ -122.443511270025937, 37.805926509004905 ], [ -122.443495481838426, 37.805918528714912 ], [ -122.443473041543214, 37.805920958425858 ], [ -122.443450852475209, 37.80593299846943 ], [ -122.443435081915695, 37.805925704609677 ], [ -122.443407468616002, 37.805928906281792 ], [ -122.443388776471963, 37.805942262421105 ], [ -122.443369509665189, 37.805933652158522 ], [ -122.443347069022408, 37.805936082125754 ], [ -122.443328395172557, 37.80595012440785 ], [ -122.443309128031871, 37.805941514415672 ], [ -122.443291878362203, 37.805943859111288 ], [ -122.443267959626397, 37.805955927620595 ], [ -122.443252189065603, 37.805948633187285 ], [ -122.443233209414942, 37.805951006379615 ], [ -122.443207595577817, 37.805964475989526 ], [ -122.443174557723637, 37.805958839788218 ], [ -122.443148908639841, 37.80597093678324 ], [ -122.443134868425886, 37.805963614373887 ], [ -122.443058967715231, 37.805973792109128 ], [ -122.443036832460166, 37.805987891372702 ], [ -122.443017547724423, 37.805978594894604 ], [ -122.442981318355606, 37.805983312150161 ], [ -122.442948532359026, 37.805987285937427 ], [ -122.442926379114695, 37.806000698747546 ], [ -122.44290884267825, 37.805992060178127 ], [ -122.442839827294776, 37.806000751431881 ], [ -122.442815943694384, 37.806014192451634 ], [ -122.442798425230706, 37.806006240298515 ], [ -122.442734582834518, 37.806014159544731 ], [ -122.442707256867862, 37.806028343976273 ], [ -122.44268971976544, 37.806019705660304 ], [ -122.442636241331058, 37.806026767128834 ], [ -122.442610646012994, 37.806040923030253 ], [ -122.442591378939156, 37.80603231319558 ], [ -122.442551688858117, 37.806037087047187 ], [ -122.442547725650329, 37.806017923926198 ], [ -122.443029120691975, 37.805957802366279 ], [ -122.443387985849299, 37.805912059110995 ], [ -122.443753825765924, 37.805868259987832 ], [ -122.443769345089194, 37.805865944017846 ], [ -122.443957339015583, 37.805839496905513 ], [ -122.444492227815289, 37.805772993462419 ], [ -122.444668235229059, 37.805751549942215 ], [ -122.445284142224111, 37.805672032526566 ], [ -122.445279062855903, 37.805610310694497 ], [ -122.44527006920417, 37.805597411188494 ], [ -122.444483346869873, 37.805698286438428 ], [ -122.443744945559246, 37.805793553184138 ], [ -122.443018600699929, 37.805886555905765 ], [ -122.442516549650193, 37.805951138305055 ], [ -122.442427410705633, 37.806050808392641 ], [ -122.442522464016989, 37.806507977467341 ], [ -122.442586642075881, 37.806579026869471 ], [ -122.443131937777821, 37.806513045572309 ], [ -122.443499493172467, 37.806468532301039 ], [ -122.443667282141945, 37.806463706682081 ], [ -122.443846679856065, 37.806439461357343 ], [ -122.443959061743129, 37.806434175357609 ], [ -122.443938050605254, 37.806358981524156 ], [ -122.443116244562106, 37.806442570813587 ], [ -122.442613848569025, 37.80649411140103 ], [ -122.442611615303633, 37.806474919513256 ], [ -122.442654765933469, 37.806470088368528 ], [ -122.442661399886077, 37.806458991436592 ], [ -122.442687570467214, 37.806466801090252 ], [ -122.442708298579689, 37.80646508646474 ], [ -122.442716537115061, 37.806449155723413 ], [ -122.442746276492144, 37.806461026947929 ], [ -122.442770051771902, 37.806443467084335 ], [ -122.44279979080919, 37.80645533830107 ], [ -122.442874033560784, 37.806447934694987 ], [ -122.442882218173921, 37.806429944918698 ], [ -122.442912011462568, 37.806443875399388 ], [ -122.442927548550728, 37.806442245978758 ], [ -122.442937481103471, 37.806424914130673 ], [ -122.442965543726487, 37.806438873384522 ], [ -122.442990995725921, 37.806419225391323 ], [ -122.443019058349662, 37.806433184357886 ], [ -122.443039786445084, 37.806431469674095 ], [ -122.443047971009094, 37.806413479611678 ], [ -122.443077764322211, 37.806427410050546 ], [ -122.443098474448703, 37.80642500892381 ], [ -122.443108388985991, 37.806406990354105 ], [ -122.443136451627183, 37.806420949292765 ], [ -122.443157179716479, 37.806419234588326 ], [ -122.443165418150457, 37.806403303815522 ], [ -122.443193426900422, 37.806415203442874 ], [ -122.443215885660081, 37.806413459937652 ], [ -122.443222483596756, 37.806400990383416 ], [ -122.443248689797912, 37.806410172509004 ], [ -122.443329817859791, 37.806401281706691 ], [ -122.443338074230084, 37.806386037628911 ], [ -122.443366083001223, 37.806397937215287 ], [ -122.443447229004846, 37.806389732764778 ], [ -122.443455467380517, 37.806373802246185 ], [ -122.443480033821288, 37.806386445534933 ], [ -122.443505916940026, 37.806383271811711 ], [ -122.443512496848314, 37.806370115534087 ], [ -122.443538721058857, 37.806379984576957 ], [ -122.443562892155768, 37.806377525783311 ], [ -122.443569490023762, 37.806365055935018 ], [ -122.44359742694175, 37.80637420973634 ], [ -122.443676842221919, 37.806366033924192 ], [ -122.443672164594389, 37.806253487231395 ], [ -122.443695462542081, 37.806349932284753 ], [ -122.443707916670277, 37.806362774599044 ], [ -122.44379596596373, 37.806353769679554 ], [ -122.443802527838344, 37.806339926678575 ], [ -122.443830500721077, 37.806350453289745 ], [ -122.443861574478419, 37.806347194484687 ], [ -122.443868190266627, 37.806335411052103 ], [ -122.443896109229783, 37.80634387807568 ], [ -122.443922010642723, 37.806341390962501 ], [ -122.443913871646629, 37.806228901600704 ], [ -122.443940541034891, 37.806321857121844 ], [ -122.443956527422003, 37.806337388377891 ], [ -122.44398415881686, 37.80633487273537 ], [ -122.444004419522869, 37.806315310362876 ], [ -122.444018675589732, 37.806330870132562 ], [ -122.444044576647997, 37.806328382998174 ], [ -122.444051174437902, 37.806315913397398 ], [ -122.444077344761538, 37.806323722474062 ], [ -122.444106688857119, 37.806320492116114 ], [ -122.444113268646205, 37.806307335530214 ], [ -122.444137744599871, 37.806316546256639 ], [ -122.444163610043603, 37.806312686225482 ], [ -122.444171919814423, 37.806299501392182 ], [ -122.444198126803698, 37.806308683844726 ], [ -122.44422572221977, 37.806304795006142 ], [ -122.444232302000771, 37.806291638962733 ], [ -122.444258508634277, 37.806300820858432 ], [ -122.444287834382735, 37.806296903754081 ], [ -122.44429446807581, 37.806285806729939 ], [ -122.444320620790435, 37.806292929589091 ], [ -122.444410328338193, 37.806281149679826 ], [ -122.444398674018615, 37.806166658108886 ], [ -122.444430732743257, 37.806267078693303 ], [ -122.444443114393508, 37.806277175761053 ], [ -122.44453626493052, 37.806264652260793 ], [ -122.444546322932027, 37.806252125028941 ], [ -122.444572511964111, 37.80626062069139 ], [ -122.44466566211247, 37.806248097094617 ], [ -122.444654277108668, 37.8061439020343 ], [ -122.444684317803762, 37.806233368169231 ], [ -122.444698448132328, 37.806244122830272 ], [ -122.444729504511017, 37.806240177078124 ], [ -122.444737832507585, 37.806227678906012 ], [ -122.444765733548039, 37.806235459291536 ], [ -122.444782982907213, 37.806233114935374 ], [ -122.44479131087958, 37.806220616210318 ], [ -122.444819211930195, 37.806228396857783 ], [ -122.444886496978683, 37.806219733530369 ], [ -122.44488089641429, 37.806138105148783 ], [ -122.444906901269448, 37.806205662186763 ], [ -122.444919282967007, 37.806215758930051 ], [ -122.444986568338436, 37.806207095539854 ], [ -122.444994931901647, 37.806195969945342 ], [ -122.445021067006977, 37.806202405936702 ], [ -122.445093525002505, 37.8061929701732 ], [ -122.445087942204026, 37.80611202850794 ], [ -122.445113929253864, 37.806178899068257 ], [ -122.445128041656801, 37.806188967520207 ], [ -122.445202229600525, 37.806179502882479 ], [ -122.445210557849578, 37.806167004396592 ], [ -122.445236728249824, 37.806174813490792 ], [ -122.44525743822885, 37.806172411710314 ], [ -122.445265766467799, 37.80615991322049 ], [ -122.445267302625481, 37.806086407881679 ], [ -122.445285033545986, 37.806168522898403 ], [ -122.445310916864869, 37.806165349047845 ], [ -122.445305315838027, 37.806083720685585 ], [ -122.445331267107818, 37.80614921860834 ], [ -122.445347145482373, 37.806160631088311 ], [ -122.445366125472304, 37.806158257824791 ], [ -122.445374453006437, 37.806145759613244 ], [ -122.44540062410141, 37.806153568385149 ], [ -122.445424776743849, 37.806150423332426 ], [ -122.445433086611402, 37.80613723812958 ], [ -122.445434730189021, 37.806067851662334 ], [ -122.445459293346119, 37.806146420033315 ], [ -122.445479985322095, 37.806143331781477 ], [ -122.445489989537165, 37.806128745440887 ], [ -122.445516214271365, 37.806138614038851 ], [ -122.445543827543716, 37.806135411324078 ], [ -122.445560788683153, 37.80612208366891 ], [ -122.445567131287589, 37.806165929693421 ], [ -122.445546061556797, 37.806154603157502 ], [ -122.445523639245678, 37.806157719690731 ], [ -122.445501522738013, 37.806172505842895 ], [ -122.445489122634442, 37.806161722734075 ], [ -122.44546670032598, 37.806164839531021 ], [ -122.445442817508763, 37.806178281625698 ], [ -122.445432201695837, 37.806169528989997 ], [ -122.445352822460961, 37.806179079403755 ], [ -122.445327226916191, 37.806193235905667 ], [ -122.445316593481564, 37.806183797096139 ], [ -122.445244135177305, 37.806193233002396 ], [ -122.44522027063509, 37.806207361203953 ], [ -122.445207906544567, 37.80619795120483 ], [ -122.445188926532239, 37.806200324168309 ], [ -122.445161708883106, 37.806218628036419 ], [ -122.445135448551525, 37.806207386764015 ], [ -122.445111565653477, 37.806220828516935 ], [ -122.44509921920563, 37.806212104669896 ], [ -122.445030203866864, 37.80622079693034 ], [ -122.445008123555382, 37.806236955848796 ], [ -122.444978438202398, 37.806227144485362 ], [ -122.444954644838973, 37.806244018373903 ], [ -122.444924959836314, 37.806234206991327 ], [ -122.444902861169254, 37.806249679463384 ], [ -122.444888730810021, 37.806238924826829 ], [ -122.444823175735436, 37.806247559901692 ], [ -122.444801113352611, 37.806264405213646 ], [ -122.444785216712205, 37.806252306233745 ], [ -122.444723104639422, 37.806260197747797 ], [ -122.444699383130299, 37.80627981731422 ], [ -122.444681702577071, 37.806265687549761 ], [ -122.444619590489268, 37.806273579283847 ], [ -122.444597491739671, 37.806289051423988 ], [ -122.444583361417187, 37.806278296750953 ], [ -122.444519536610485, 37.806286903400981 ], [ -122.444493959540637, 37.806301746142793 ], [ -122.44447984720945, 37.80629167788976 ], [ -122.444386678651156, 37.806303514912976 ], [ -122.444361209083098, 37.806322476775328 ], [ -122.444343546554336, 37.806309033118175 ], [ -122.444324566500356, 37.806311406491666 ], [ -122.444297366567298, 37.806330396317819 ], [ -122.444279722039454, 37.806317639632702 ], [ -122.444255568948051, 37.806320784456545 ], [ -122.444233506414719, 37.806337629662124 ], [ -122.444217609851108, 37.806325530605875 ], [ -122.444126171547992, 37.806337339172615 ], [ -122.444102396615747, 37.806354899035341 ], [ -122.444084751416256, 37.806342142057929 ], [ -122.444034733554687, 37.806349147388161 ], [ -122.443955318332002, 37.806357323441311 ], [ -122.443976328801966, 37.806432517557667 ], [ -122.444009133253417, 37.806429229637253 ], [ -122.44401497169018, 37.80645385590833 ], [ -122.443983915176943, 37.806457801197638 ], [ -122.443991501564284, 37.806483085111559 ], [ -122.444006566508079, 37.806529534342857 ], [ -122.443998364182022, 37.80654683776438 ], [ -122.444012889909018, 37.806572694020851 ], [ -122.444137456251781, 37.806569953925113 ], [ -122.444004705900142, 37.806590683869416 ], [ -122.444008597616772, 37.806607101209622 ], [ -122.444028224510816, 37.8066294400098 ], [ -122.444014687364202, 37.806641337539759 ], [ -122.444016813135761, 37.806656410256579 ], [ -122.444032907804939, 37.806676060090197 ], [ -122.4440210291, 37.806685183643154 ], [ -122.444025100564104, 37.806708465032258 ], [ -122.444042961537718, 37.806729459206764 ], [ -122.444031118428768, 37.806739955631187 ], [ -122.444035226540592, 37.806764609873134 ], [ -122.444052799240296, 37.806774621138679 ], [ -122.444173599989711, 37.806760268693552 ], [ -122.444175761756156, 37.806776714546551 ], [ -122.443903104192728, 37.806809364848277 ], [ -122.443899212488802, 37.80679294750523 ], [ -122.443999302417467, 37.806780996791801 ], [ -122.444012857566491, 37.806769785696332 ], [ -122.443998457621589, 37.806748734467796 ], [ -122.444004821781832, 37.806727340974426 ], [ -122.443985267126379, 37.806707748443934 ], [ -122.443996768032036, 37.80668420981921 ], [ -122.443979015619519, 37.806667334220748 ], [ -122.443988858092823, 37.806646570397213 ], [ -122.443972709865449, 37.806624861254427 ], [ -122.443980822328029, 37.806604125398131 ], [ -122.443978768461875, 37.806591798410317 ], [ -122.443966422424324, 37.806583074165033 ], [ -122.443972768605505, 37.806560994240272 ], [ -122.443949501347888, 37.806531848697659 ], [ -122.443975330928197, 37.806526615843026 ], [ -122.443974234501226, 37.806484743188264 ], [ -122.443966666100792, 37.806460145980267 ], [ -122.443854499850644, 37.806473669177059 ], [ -122.443860373479154, 37.806499667782823 ], [ -122.443717402901086, 37.806526746415607 ], [ -122.443667420469765, 37.806535124185942 ], [ -122.443645087827377, 37.806541672798915 ], [ -122.443622719585392, 37.806546848536961 ], [ -122.443600333023568, 37.806551337843935 ], [ -122.443577910179286, 37.806554454561891 ], [ -122.443581820462299, 37.80657155833741 ], [ -122.443586556699174, 37.806620238019541 ], [ -122.443637961503612, 37.806864552713115 ], [ -122.443633273319165, 37.806883858652405 ], [ -122.443607138425932, 37.806877421799527 ], [ -122.443529794028962, 37.806898611546323 ], [ -122.443526675114754, 37.806911710787858 ], [ -122.443502306167488, 37.806906618541966 ], [ -122.443424944087113, 37.80692712178169 ], [ -122.443421824461069, 37.806940221031809 ], [ -122.443397438234925, 37.806934442320348 ], [ -122.443318380993759, 37.806956346879609 ], [ -122.443315262039832, 37.806969446115438 ], [ -122.443289162740911, 37.806964382337512 ], [ -122.443211818508658, 37.806985571869724 ], [ -122.443208734784008, 37.807000044253662 ], [ -122.443180869538779, 37.806993635816845 ], [ -122.443103524899072, 37.807014825283645 ], [ -122.443102154219687, 37.807028582437368 ], [ -122.443076036948625, 37.80702283217979 ], [ -122.442998692594642, 37.807044021572032 ], [ -122.442995572888506, 37.807057120810583 ], [ -122.442969456307765, 37.807051370518039 ], [ -122.442895554290288, 37.807071816676462 ], [ -122.442876807520932, 37.807083113165248 ], [ -122.442860372447001, 37.807050420945309 ], [ -122.44288643546534, 37.807054111684081 ], [ -122.442950027240173, 37.807036582576075 ], [ -122.442956535452808, 37.807020680875418 ], [ -122.44298955579778, 37.807025630704103 ], [ -122.443044549671924, 37.807010303103709 ], [ -122.443051093786181, 37.806995773988241 ], [ -122.443080653430101, 37.80700078080757 ], [ -122.443137377283094, 37.806985425210136 ], [ -122.443143903403268, 37.806970209382371 ], [ -122.443176924084369, 37.806975159152948 ], [ -122.443230187542511, 37.806959860250316 ], [ -122.443236731623188, 37.806945331399028 ], [ -122.443266291259548, 37.806950338171859 ], [ -122.443323015021249, 37.806934981935846 ], [ -122.443327829074263, 37.806920481311195 ], [ -122.443311249747254, 37.806882297698685 ], [ -122.443357388360823, 37.806925488066938 ], [ -122.443415825168074, 37.806909417378883 ], [ -122.443402365072131, 37.806858134260111 ], [ -122.443446755408701, 37.806900666674323 ], [ -122.443506922515155, 37.806884567152593 ], [ -122.443513466527847, 37.806870038011155 ], [ -122.443541295807862, 37.80687507323001 ], [ -122.443611772372606, 37.806856057118701 ], [ -122.443568098366953, 37.806642517527813 ], [ -122.443490717910933, 37.80666233411602 ], [ -122.443464637369544, 37.806657956797729 ], [ -122.443447387531151, 37.806660301241159 ], [ -122.443394142301429, 37.806676286675255 ], [ -122.443369792101194, 37.80667188082289 ], [ -122.443307715462936, 37.806681144456071 ], [ -122.443302883453555, 37.806694958647995 ], [ -122.443274946458374, 37.806685805052041 ], [ -122.443204469968975, 37.806704820962679 ], [ -122.443178370770624, 37.806699757160004 ], [ -122.443107894250431, 37.806718773287464 ], [ -122.44308352539521, 37.806713680954857 ], [ -122.443013048491437, 37.806732697031315 ], [ -122.442985237265603, 37.806728348120288 ], [ -122.442950738216922, 37.806733036852982 ], [ -122.44291647270785, 37.806746649473865 ], [ -122.442888625547027, 37.806740927400313 ], [ -122.442821555362244, 37.806757827053026 ], [ -122.442793726174969, 37.806752791664266 ], [ -122.442731613479054, 37.806760682403457 ], [ -122.442721537132741, 37.806772522772178 ], [ -122.442695384049358, 37.806765399290242 ], [ -122.442678134861055, 37.806767743884308 ], [ -122.442671608648851, 37.806782959137742 ], [ -122.442640174735473, 37.806772489262421 ], [ -122.44262290758212, 37.806774147415787 ], [ -122.442611226258151, 37.806790821310969 ], [ -122.442619566601024, 37.806844935481941 ], [ -122.4425572741916, 37.806845961528367 ], [ -122.442543113877818, 37.806767907443565 ], [ -122.442812274930034, 37.80673394443496 ], [ -122.442895043918895, 37.806721593264598 ], [ -122.44288439854499, 37.806645541768312 ], [ -122.44286390392358, 37.80665618032328 ], [ -122.442620734223425, 37.806691089066426 ], [ -122.442586432743397, 37.80670332845169 ], [ -122.442569254711358, 37.806708418497294 ], [ -122.442553843632766, 37.806714852893514 ], [ -122.44253845015912, 37.806721973451488 ], [ -122.442524957636692, 37.80672882453954 ], [ -122.442523074304333, 37.806729780720396 ], [ -122.44251132146853, 37.806743708869504 ], [ -122.442504741349737, 37.806756865090371 ], [ -122.442501639536246, 37.806770651023797 ], [ -122.442501980779383, 37.80678369296961 ], [ -122.442511153361352, 37.806803457290563 ], [ -122.442513800037688, 37.806838436574978 ], [ -122.442498190669355, 37.806837320216118 ], [ -122.442500262610309, 37.806850333930662 ], [ -122.442500855308538, 37.806872986207821 ], [ -122.442513308640088, 37.806885829207545 ], [ -122.442543448720272, 37.807045340228143 ], [ -122.442550657494735, 37.807056209147177 ], [ -122.442552729104918, 37.807069222865962 ], [ -122.442549574089071, 37.807080949216051 ], [ -122.442542975993348, 37.807093419280186 ], [ -122.442532880918762, 37.80710457321085 ], [ -122.442521020253452, 37.807114382489758 ], [ -122.442507375020014, 37.80712216152461 ], [ -122.442493693848277, 37.807128567143486 ], [ -122.442476479790699, 37.807132284309965 ], [ -122.44245921255002, 37.807133942439243 ], [ -122.442443603113219, 37.807132825798654 ], [ -122.442426210144987, 37.807129678620242 ], [ -122.442401877121071, 37.807125959012424 ], [ -122.442394668361601, 37.807115090084459 ], [ -122.442382322776425, 37.807106365943092 ], [ -122.442371670941014, 37.807096240723055 ], [ -122.442357217513063, 37.80707312972298 ], [ -122.442353415933297, 37.807060144492915 ], [ -122.442352751441661, 37.807034746485243 ], [ -122.442355888527402, 37.807022333707671 ], [ -122.442327317913012, 37.80685661596673 ], [ -122.442325228043273, 37.806842915816503 ], [ -122.442319678177554, 37.80682927264953 ], [ -122.442314163892661, 37.806817002627895 ], [ -122.442303476176264, 37.806805503986638 ], [ -122.442292807121106, 37.806794692040256 ], [ -122.442278730911681, 37.806785996390175 ], [ -122.44225259583861, 37.806779559791913 ], [ -122.442263912071212, 37.806815083032639 ], [ -122.442334351220893, 37.807191623601256 ], [ -122.442574008114292, 37.807154713430769 ], [ -122.442579917970377, 37.807182085225314 ], [ -122.442316125837024, 37.807222826535309 ], [ -122.442296128149565, 37.807120146892402 ], [ -122.442249660075092, 37.807130526084627 ], [ -122.442243205590515, 37.807148487593025 ], [ -122.442218675723581, 37.80713721717698 ], [ -122.442177362768064, 37.807146137987679 ], [ -122.442169249735414, 37.807166873443258 ], [ -122.44214120495144, 37.807153600709071 ], [ -122.442110219881215, 37.807160291509724 ], [ -122.442102143088249, 37.807182399820256 ], [ -122.442074080353734, 37.807168440637511 ], [ -122.441951871381676, 37.807195175211561 ], [ -122.441943758626778, 37.807215910645752 ], [ -122.441915713871779, 37.807202638132658 ], [ -122.441829644720443, 37.807221223495034 ], [ -122.441823243975179, 37.807241243729116 ], [ -122.441796947879098, 37.807228628850183 ], [ -122.441714321769382, 37.807246470710545 ], [ -122.441706226203735, 37.807267892572305 ], [ -122.441678163511327, 37.807253933295577 ], [ -122.441590382530393, 37.807273233392451 ], [ -122.441583945818934, 37.807291881022437 ], [ -122.441559397367783, 37.80727992432282 ], [ -122.441528412884566, 37.807286614959068 ], [ -122.441522065914484, 37.807308694749302 ], [ -122.4414922725324, 37.807294763645217 ], [ -122.441459575632209, 37.807302169181312 ], [ -122.441451444085047, 37.807322218159875 ], [ -122.441425148030646, 37.807309603472838 ], [ -122.441347676557456, 37.807325986488941 ], [ -122.441341185930639, 37.807342574807244 ], [ -122.441318422046436, 37.807332648592578 ], [ -122.441240951224984, 37.807349031801699 ], [ -122.441234550317162, 37.807369052277899 ], [ -122.441208253583667, 37.807356437279445 ], [ -122.44112907030356, 37.807373535328814 ], [ -122.44112095660725, 37.807394270717083 ], [ -122.44109464263579, 37.807380969523756 ], [ -122.440999993407189, 37.807402442127575 ], [ -122.440987126791967, 37.807373811300785 ], [ -122.441006340540554, 37.807380362365826 ], [ -122.441088966969374, 37.807362521001856 ], [ -122.441071293907683, 37.807282464951484 ], [ -122.441105839449861, 37.807345761826411 ], [ -122.441121664279194, 37.807355115562864 ], [ -122.441199135479366, 37.807338732426437 ], [ -122.441181426400448, 37.807257303252058 ], [ -122.441215936141603, 37.807319227778606 ], [ -122.441235275185775, 37.807330583566994 ], [ -122.44130240044376, 37.80731574411066 ], [ -122.44131244119076, 37.80730253099884 ], [ -122.441289899930467, 37.807234916217887 ], [ -122.441336846017577, 37.807308996562313 ], [ -122.441403970896872, 37.807294157328393 ], [ -122.441389758204977, 37.807214043807704 ], [ -122.441424286396526, 37.807276654700864 ], [ -122.441440110897986, 37.807286008125857 ], [ -122.441505522979043, 37.807271883482372 ], [ -122.441489561884524, 37.807191112300579 ], [ -122.441524179900497, 37.807257155053932 ], [ -122.441538238159126, 37.807265164360558 ], [ -122.441610518456187, 37.807248866405487 ], [ -122.441598394609557, 37.807182453357271 ], [ -122.441630905705154, 37.807234109473121 ], [ -122.441643233270554, 37.80724214726019 ], [ -122.441715531475523, 37.807226535673394 ], [ -122.441722129729229, 37.807214065930424 ], [ -122.441749959016704, 37.807219101571583 ], [ -122.44181537098703, 37.807204977030693 ], [ -122.441821969214871, 37.8071925070075 ], [ -122.441804977662258, 37.807138535507519 ], [ -122.441848068147848, 37.807197571115559 ], [ -122.441911750066581, 37.807183474731303 ], [ -122.441901356658576, 37.80711703321635 ], [ -122.441942735164389, 37.807176783982825 ], [ -122.442002974305893, 37.807163431240092 ], [ -122.44201133876993, 37.807152305853435 ], [ -122.442037401781846, 37.80715599677972 ], [ -122.442094216092357, 37.807144073567486 ], [ -122.44210250836673, 37.807130202449336 ], [ -122.442130373562975, 37.807136610866159 ], [ -122.442190612977058, 37.807123257747243 ], [ -122.4421768301127, 37.807059618983033 ], [ -122.442207521070316, 37.807107871278774 ], [ -122.442221597332434, 37.80711656693682 ], [ -122.442292164942742, 37.807100983492141 ], [ -122.442243704644795, 37.806836704402386 ], [ -122.442167767011739, 37.806845508971712 ], [ -122.442147308147, 37.806857520267137 ], [ -122.442072831477645, 37.806855999790052 ], [ -122.442050696118415, 37.806870098860529 ], [ -122.442038314362932, 37.806860002097636 ], [ -122.44197618353418, 37.806867205731571 ], [ -122.44195577849186, 37.806881276017322 ], [ -122.441943396394166, 37.806871178975598 ], [ -122.441881247592036, 37.806877696126804 ], [ -122.441859148445275, 37.806893168021055 ], [ -122.44184673044974, 37.806881698103723 ], [ -122.441786329930238, 37.806888873147223 ], [ -122.441762464513715, 37.80690300092192 ], [ -122.441750082438688, 37.806892903859939 ], [ -122.441684509153674, 37.806900850470612 ], [ -122.441658930973958, 37.80691569315082 ], [ -122.441646530958224, 37.806904909645212 ], [ -122.441572305572137, 37.806912998636243 ], [ -122.441548386244634, 37.806925066794669 ], [ -122.441465311637984, 37.806925747662177 ], [ -122.441443158191802, 37.806939160185685 ], [ -122.44142908206166, 37.806930464709019 ], [ -122.44136529221457, 37.806940441967662 ], [ -122.441344958843104, 37.806957258153332 ], [ -122.441327368515545, 37.806946560051927 ], [ -122.441311849243505, 37.806948875968999 ], [ -122.441293246205632, 37.806965663663163 ], [ -122.441275637234966, 37.806954278858043 ], [ -122.44126011795251, 37.806956594493755 ], [ -122.441239730706059, 37.80697135136279 ], [ -122.441223906642946, 37.806961997904651 ], [ -122.441151465000161, 37.806972117453661 ], [ -122.441129311490656, 37.806985530192655 ], [ -122.441115235374099, 37.806976834129472 ], [ -122.441037621302598, 37.806987725743447 ], [ -122.44101719810962, 37.807001109708246 ], [ -122.441003139964337, 37.806993100613703 ], [ -122.440922064462001, 37.807004048844455 ], [ -122.440901659189493, 37.807018119222057 ], [ -122.440895696481135, 37.806988688312863 ], [ -122.441218230630383, 37.806943549393232 ], [ -122.441263058469275, 37.806936630972665 ], [ -122.441435464921327, 37.80690975751326 ], [ -122.441433016200833, 37.806882328691337 ], [ -122.441372490336036, 37.806884698487615 ], [ -122.441304935046745, 37.806883063866231 ], [ -122.441274237201611, 37.806900737372722 ], [ -122.441242947719005, 37.806895758576474 ], [ -122.44119330612007, 37.806917177241274 ], [ -122.441110393048419, 37.806924035754299 ], [ -122.441042945411667, 37.806926519579946 ], [ -122.440998117551175, 37.806933437642307 ], [ -122.440918593700744, 37.806937493327403 ], [ -122.440899792827196, 37.80694673020367 ], [ -122.440782200958282, 37.806951412279737 ], [ -122.440680218094201, 37.806957210845738 ], [ -122.44054721454367, 37.806968326842338 ], [ -122.440468121234176, 37.806988856613863 ], [ -122.440371365223044, 37.806995942367976 ], [ -122.440134737571853, 37.807016316747912 ], [ -122.43989673886324, 37.807050447763743 ], [ -122.43967267172718, 37.807087782808438 ], [ -122.439538386124013, 37.807116087220599 ], [ -122.439408914197855, 37.80712989048353 ], [ -122.439239537222377, 37.807140229675355 ], [ -122.439104802429114, 37.807151372502958 ], [ -122.438766800452754, 37.807200879974303 ], [ -122.438299128879564, 37.807256638299236 ], [ -122.437960892936687, 37.807297219553782 ], [ -122.437688625577763, 37.807344957007658 ], [ -122.437514504314919, 37.807372539848515 ], [ -122.437376577168436, 37.807394034049501 ], [ -122.437259217227975, 37.807407636246566 ], [ -122.437146815479664, 37.80741222942855 ], [ -122.437031382840118, 37.807433353744614 ], [ -122.436885215537345, 37.80747077743743 ], [ -122.436714393247598, 37.807492124635075 ], [ -122.436614801865048, 37.807523289038706 ], [ -122.436563088290782, 37.807531692199284 ], [ -122.436507376472989, 37.80751955916309 ], [ -122.436298557575597, 37.807544276277241 ], [ -122.436240083275962, 37.807558970839189 ], [ -122.436155205939471, 37.807556930640864 ], [ -122.435982097955772, 37.80755702547102 ], [ -122.435828364056036, 37.807569849863164 ], [ -122.435859235962624, 37.807691580598309 ], [ -122.433925269093152, 37.807945122059223 ], [ -122.433817271048738, 37.80791942385212 ], [ -122.433787568621852, 37.807908923241605 ], [ -122.433755903391244, 37.807889527355464 ], [ -122.43376416154652, 37.807874283957823 ], [ -122.433933527911989, 37.807929878638532 ], [ -122.435838185171932, 37.807680938490563 ], [ -122.435834169572829, 37.807659716129535 ], [ -122.435737591220459, 37.807673662142683 ], [ -122.433917274710794, 37.807904049527295 ], [ -122.433913385157453, 37.807887631858222 ], [ -122.434041074707324, 37.807871803440726 ], [ -122.434044035083929, 37.807852526536877 ], [ -122.434070401961165, 37.807867888872153 ], [ -122.434160130921143, 37.807856803195897 ], [ -122.434164803061421, 37.807836811488876 ], [ -122.434189457816743, 37.807852888603414 ], [ -122.434284359969311, 37.807841031264509 ], [ -122.434289032075128, 37.807821039552501 ], [ -122.434313686852093, 37.80783711664111 ], [ -122.434406858247897, 37.807825287589175 ], [ -122.434411548897913, 37.80780598229466 ], [ -122.434437915834692, 37.807821344547961 ], [ -122.434520741089443, 37.807811058557668 ], [ -122.434525413482959, 37.8077910671051 ], [ -122.434551797979211, 37.80780711577237 ], [ -122.434636336023075, 37.807796114603541 ], [ -122.434641025919433, 37.807776809311157 ], [ -122.434665680757917, 37.807792886326304 ], [ -122.434750218436946, 37.807781885630661 ], [ -122.434754908641708, 37.807762580053435 ], [ -122.434779544918584, 37.807777970622496 ], [ -122.434871004379232, 37.807766856012883 ], [ -122.434875676329611, 37.807746864551945 ], [ -122.434900331208965, 37.807762941518149 ], [ -122.434976252743482, 37.807753454920828 ], [ -122.434979194289198, 37.807733491570779 ], [ -122.435005579555238, 37.807749540125371 ], [ -122.435084943914418, 37.807739310518855 ], [ -122.43508961579829, 37.807719318774772 ], [ -122.435116018975634, 37.807736053738346 ], [ -122.435191922576223, 37.807725881117662 ], [ -122.435196576876137, 37.807705202655406 ], [ -122.43522297972649, 37.807721937600746 ], [ -122.435302361927597, 37.807712394556091 ], [ -122.435306998308789, 37.807691029930353 ], [ -122.435333419066353, 37.8077084510101 ], [ -122.435402436929863, 37.807699764700374 ], [ -122.435407055040258, 37.807677713642711 ], [ -122.435433494058017, 37.807695821128007 ], [ -122.435507685095942, 37.807686362859421 ], [ -122.435514015990663, 37.807663596960829 ], [ -122.43554045469773, 37.807681704977007 ], [ -122.435609472497859, 37.807673017996969 ], [ -122.435614072648008, 37.807650280497519 ], [ -122.435642259638655, 37.807669046525525 ], [ -122.435711277415109, 37.807660359485872 ], [ -122.43572966745738, 37.807635335465775 ], [ -122.435735467093281, 37.807658589004994 ], [ -122.435830350851532, 37.807646043988242 ], [ -122.435804210559851, 37.807572993499143 ], [ -122.435788619382777, 37.807572562680427 ], [ -122.435772938706066, 37.807568699417203 ], [ -122.435758952605468, 37.807563435158237 ], [ -122.435746625277645, 37.807555396762375 ], [ -122.435735992180923, 37.807545957377542 ], [ -122.435727054339125, 37.807535116438025 ], [ -122.435721558628927, 37.807523531999962 ], [ -122.435719488549438, 37.807510518156661 ], [ -122.435678807510797, 37.807410923656249 ], [ -122.435671271850225, 37.807321086052454 ], [ -122.435659314380757, 37.807260850297496 ], [ -122.435635232905554, 37.807266739353338 ], [ -122.435635716129568, 37.807285273061382 ], [ -122.435609349135348, 37.807269911074314 ], [ -122.435543792417761, 37.807278540984541 ], [ -122.43552006850399, 37.80729815869541 ], [ -122.435504101570785, 37.807283312732451 ], [ -122.435441987649398, 37.807291199357643 ], [ -122.435419994063011, 37.807310788651876 ], [ -122.43540402680101, 37.807295942681101 ], [ -122.435341912858448, 37.807303829253563 ], [ -122.435318189229335, 37.807323446918055 ], [ -122.435302222331032, 37.807308600927854 ], [ -122.435234935185079, 37.80731725906076 ], [ -122.435212941536335, 37.807336848316268 ], [ -122.435196974310131, 37.807322002317541 ], [ -122.435127956788023, 37.807330689056798 ], [ -122.435105963445992, 37.807350278012088 ], [ -122.435089996584352, 37.807335431993209 ], [ -122.435019248678017, 37.807344147060114 ], [ -122.4349972725025, 37.807364422440152 ], [ -122.434981288114457, 37.807348889967201 ], [ -122.434910540175395, 37.807357604694324 ], [ -122.434888564319408, 37.807377880322939 ], [ -122.434872579266241, 37.807362348121238 ], [ -122.434798388810123, 37.807371805710694 ], [ -122.434776412580376, 37.807392081598607 ], [ -122.434758697865377, 37.807376577207712 ], [ -122.434691410594411, 37.807385235030431 ], [ -122.434667704309632, 37.80740553900322 ], [ -122.434651719289548, 37.807390006497108 ], [ -122.434575798078043, 37.807399492611601 ], [ -122.434552092103161, 37.807419796555429 ], [ -122.434536125337331, 37.807404950461788 ], [ -122.434461916577604, 37.807413721960565 ], [ -122.434439940575373, 37.80743399723081 ], [ -122.434423973489999, 37.807419151402279 ], [ -122.434349765034597, 37.807427922275664 ], [ -122.43432605864993, 37.807448226454213 ], [ -122.434310074038208, 37.807432693896239 ], [ -122.434230709546782, 37.807442922713086 ], [ -122.434208733825983, 37.807463198209049 ], [ -122.434192749235578, 37.807447665635237 ], [ -122.434111654710136, 37.807457923293533 ], [ -122.434087948236439, 37.807478226874963 ], [ -122.434071963321998, 37.807462694290493 ], [ -122.433992599465014, 37.807472923210291 ], [ -122.433970605449531, 37.807492512508169 ], [ -122.433954638431118, 37.807477666067122 ], [ -122.433870083452888, 37.807487980028228 ], [ -122.433846376910722, 37.807508283835588 ], [ -122.433830409920873, 37.80749343765234 ], [ -122.43374412454402, 37.807503779895939 ], [ -122.433722148333416, 37.807524055581261 ], [ -122.433706163485638, 37.807508522947344 ], [ -122.433606088798641, 37.807521151358706 ], [ -122.433584112530909, 37.807541426469101 ], [ -122.433574191011218, 37.807492831512612 ], [ -122.433602216513336, 37.807505419848866 ], [ -122.433678120078412, 37.807495247927321 ], [ -122.433686343139499, 37.80747863165486 ], [ -122.433714368662436, 37.807491220239072 ], [ -122.433795462933048, 37.807480962859643 ], [ -122.433803685966325, 37.807464346578953 ], [ -122.433831693616042, 37.80747624842688 ], [ -122.433911075733292, 37.807466706318117 ], [ -122.433919280165583, 37.807449403606796 ], [ -122.433947305702674, 37.807461991586599 ], [ -122.434024939884253, 37.807451791061574 ], [ -122.434034892878572, 37.807435146394688 ], [ -122.434062900561514, 37.80744704846235 ], [ -122.434135379039915, 37.807438305591944 ], [ -122.434143601646298, 37.807421689293108 ], [ -122.434171609334427, 37.807433591060409 ], [ -122.434245800271043, 37.807424133585066 ], [ -122.434254022851178, 37.80740751727847 ], [ -122.434282048436359, 37.807420105453431 ], [ -122.434352778623364, 37.807410704669572 ], [ -122.434361000831984, 37.807394088361185 ], [ -122.434389026430239, 37.807406676510716 ], [ -122.43446148730483, 37.807397247549531 ], [ -122.434471439847925, 37.807380602851318 ], [ -122.43449944756594, 37.807392504266289 ], [ -122.434571926300066, 37.807383761671048 ], [ -122.434581860921966, 37.807366430255094 ], [ -122.434609886547221, 37.807379018352258 ], [ -122.434682347359626, 37.807369588980769 ], [ -122.434690569836022, 37.807352972643585 ], [ -122.434718577593046, 37.807364874555745 ], [ -122.434784152364955, 37.807356931263477 ], [ -122.43479237481715, 37.807340314919166 ], [ -122.434820382585727, 37.807352216807175 ], [ -122.434884226976308, 37.807344301846562 ], [ -122.434894179763575, 37.807327657106839 ], [ -122.434922187543705, 37.807339558970696 ], [ -122.434987762271462, 37.807331615565204 ], [ -122.434997697142578, 37.807314284382969 ], [ -122.435025722825799, 37.807326872656006 ], [ -122.43509127963911, 37.807318242759216 ], [ -122.435101232376525, 37.807301598001935 ], [ -122.435129240172827, 37.807313499542126 ], [ -122.43519308450432, 37.807305584688869 ], [ -122.435201306859327, 37.807288968315881 ], [ -122.435231044678986, 37.807300841444686 ], [ -122.435296619692778, 37.807292898136311 ], [ -122.4353048420232, 37.807276281756089 ], [ -122.435332849842581, 37.807288183247969 ], [ -122.435398406593208, 37.807279553455011 ], [ -122.435406628899386, 37.80726293706762 ], [ -122.435436384982893, 37.8072754965727 ], [ -122.435451904167508, 37.80727318170905 ], [ -122.435460126807058, 37.807256565312237 ], [ -122.435488134643933, 37.807268466767304 ], [ -122.435508433635007, 37.807250278724965 ], [ -122.435536459373509, 37.807262866602237 ], [ -122.435602016078107, 37.80725423669606 ], [ -122.435615572581426, 37.80724302656666 ], [ -122.435634803373304, 37.807250264946127 ], [ -122.435655496065394, 37.807247178418407 ], [ -122.435588180541416, 37.806922774713847 ], [ -122.435582667693723, 37.80691050382292 ], [ -122.435534182131477, 37.806909926104069 ], [ -122.435571873987683, 37.806894886513319 ], [ -122.435559492755871, 37.80688478880149 ], [ -122.435545453103273, 37.806877464940861 ], [ -122.435529719250937, 37.806871542612598 ], [ -122.435514074542013, 37.806869052731017 ], [ -122.435493292470525, 37.806868707065597 ], [ -122.435344768504805, 37.806882132076758 ], [ -122.435121911744176, 37.806899523218981 ], [ -122.434871780421872, 37.806933156410132 ], [ -122.434433666315243, 37.806993908011997 ], [ -122.434416381034183, 37.806994878255509 ], [ -122.434278149661878, 37.807004699734037 ], [ -122.434260827915324, 37.807004297098374 ], [ -122.434243471085438, 37.807002521306472 ], [ -122.434227808507927, 37.806999344820447 ], [ -122.434210379805293, 37.806994823568417 ], [ -122.434194645688478, 37.806988901067868 ], [ -122.434180606150846, 37.806981577044944 ], [ -122.434166548746745, 37.806973567135586 ], [ -122.434154185915276, 37.806964155430045 ], [ -122.434143535561248, 37.806954029186485 ], [ -122.434134579447857, 37.806942501702544 ], [ -122.434125606153387, 37.806930288047226 ], [ -122.434123142595496, 37.806902172634167 ], [ -122.434101162359013, 37.806855835376808 ], [ -122.434090404384904, 37.806841590530418 ], [ -122.434081359579054, 37.806826631135792 ], [ -122.43406669419322, 37.806795281911626 ], [ -122.434061091508866, 37.806779579065555 ], [ -122.434055471636611, 37.80676318977391 ], [ -122.434051599648825, 37.806747458545502 ], [ -122.434049475890433, 37.80673238537485 ], [ -122.434047316368137, 37.806715939336222 ], [ -122.434046440132462, 37.806682304072865 ], [ -122.43401902773472, 37.806493903623902 ], [ -122.434011784506907, 37.806481661588982 ], [ -122.434004523385283, 37.806468732570444 ], [ -122.433998992958308, 37.806455775445059 ], [ -122.433995192532976, 37.806442790224423 ], [ -122.433964135838224, 37.806446732869858 ], [ -122.433932703641176, 37.806436260667759 ], [ -122.433886127202001, 37.806442518242726 ], [ -122.433858853036313, 37.806458760199753 ], [ -122.433839551447093, 37.806448775787949 ], [ -122.433791244999313, 37.806455061692688 ], [ -122.4337639708083, 37.80647130362771 ], [ -122.433744668882483, 37.806461319206093 ], [ -122.433694632079209, 37.806467633442772 ], [ -122.433667357862433, 37.806483875355433 ], [ -122.43364805594635, 37.806473890918021 ], [ -122.433596288440668, 37.806480233488799 ], [ -122.433569014197744, 37.806496475378673 ], [ -122.433549712637699, 37.806486490919518 ], [ -122.433503136480809, 37.806492748337497 ], [ -122.433477574676203, 37.806508275404134 ], [ -122.433458272433256, 37.806498290941384 ], [ -122.433404793122563, 37.806505348218124 ], [ -122.43337751882855, 37.806521590063653 ], [ -122.433358216941642, 37.806511605578869 ], [ -122.4333047372658, 37.806518662815925 ], [ -122.433279192939949, 37.806534876279215 ], [ -122.433259891408895, 37.80652489177271 ], [ -122.433206393839583, 37.806531262531053 ], [ -122.433179119492635, 37.806547504330624 ], [ -122.433159817625679, 37.806537519813411 ], [ -122.43309943408164, 37.806545377123399 ], [ -122.43307215969898, 37.806561618623626 ], [ -122.433052858195936, 37.806551634357852 ], [ -122.432990744619175, 37.806559519418741 ], [ -122.432963470221836, 37.806575761442943 ], [ -122.43294416836936, 37.80656577661594 ], [ -122.432885515114464, 37.806573605181946 ], [ -122.432858276424469, 37.806591219775477 ], [ -122.432851977723161, 37.806548745928424 ], [ -122.432876452705358, 37.806557958985486 ], [ -122.432950642939176, 37.806548502597778 ], [ -122.432958937194059, 37.806534631840726 ], [ -122.432985142526235, 37.806543816515223 ], [ -122.433055872042729, 37.806534416507489 ], [ -122.433064219557167, 37.806522605325611 ], [ -122.433088659156226, 37.806530445464773 ], [ -122.43316111864155, 37.80652101703766 ], [ -122.433169413207281, 37.806507146534614 ], [ -122.433195618216885, 37.806516331442637 ], [ -122.433259444532922, 37.80650773092048 ], [ -122.433269469079946, 37.806493832326176 ], [ -122.433293944088703, 37.806503045022133 ], [ -122.433357787918965, 37.806495131161043 ], [ -122.433366082106133, 37.806481260924372 ], [ -122.433392287462695, 37.806490445233919 ], [ -122.433454400931879, 37.806482559686899 ], [ -122.433462695099607, 37.806468689443392 ], [ -122.433488900463672, 37.806477873731517 ], [ -122.433552726373762, 37.806469273330841 ], [ -122.433561038053369, 37.806456089520083 ], [ -122.433587243771214, 37.806465273780709 ], [ -122.433649339320041, 37.806456701696959 ], [ -122.43365765098109, 37.806443517879387 ], [ -122.433683838827505, 37.806452015684521 ], [ -122.433745952233608, 37.806444129983937 ], [ -122.433754245996482, 37.806430259725488 ], [ -122.43378045172912, 37.806439443943233 ], [ -122.433842565114432, 37.806431558191733 ], [ -122.433850858857866, 37.806417687926462 ], [ -122.433877064598036, 37.806426872122742 ], [ -122.433932274491454, 37.806419786251801 ], [ -122.433954393037553, 37.806405002549944 ], [ -122.433958408377592, 37.806426224974288 ], [ -122.43399121327684, 37.806422940114579 ], [ -122.433989124957407, 37.806409239815579 ], [ -122.433988785204093, 37.806396197569725 ], [ -122.433991530954188, 37.80636868345389 ], [ -122.433981985185667, 37.806334503629429 ], [ -122.433942822534163, 37.806226642930824 ], [ -122.433950330141514, 37.806182569274938 ], [ -122.433940283395017, 37.806129169298679 ], [ -122.433873424076822, 37.805821925113698 ], [ -122.433853509955952, 37.80572198947479 ], [ -122.433844483207295, 37.805707716218421 ], [ -122.433823004146618, 37.805680599328511 ], [ -122.433808821860836, 37.805667784061214 ], [ -122.433796405313814, 37.805656313293774 ], [ -122.433780528829729, 37.805644899532474 ], [ -122.433766418068998, 37.805634829721896 ], [ -122.43374886455932, 37.805625503361618 ], [ -122.433731328933206, 37.805616863432853 ], [ -122.433713811190202, 37.805608909935621 ], [ -122.433675422356743, 37.805597178553839 ], [ -122.433656263344702, 37.805592685320363 ], [ -122.433637140790879, 37.805589565215314 ], [ -122.433616323330028, 37.805587846350818 ], [ -122.43359552375523, 37.805586814191379 ], [ -122.433576472363242, 37.805586439544221 ], [ -122.433535016220674, 37.805589866131839 ], [ -122.433516072105618, 37.805593610629053 ], [ -122.433498858293476, 37.805597326206154 ], [ -122.432719648836795, 37.805721348282255 ], [ -122.432704236424613, 37.805727781678655 ], [ -122.432688842557212, 37.805734900946824 ], [ -122.432673484086777, 37.805743393361759 ], [ -122.432659891674504, 37.805753230287664 ], [ -122.432648029581884, 37.805763038856455 ], [ -122.432637933547895, 37.805774191937303 ], [ -122.432627855379891, 37.805786031451547 ], [ -122.432619525401748, 37.805798529044132 ], [ -122.432612943621251, 37.805811684990026 ], [ -122.432606379692928, 37.805825526820627 ], [ -122.432603276080599, 37.805839312496055 ], [ -122.432600137407348, 37.805851724742368 ], [ -122.432500317433352, 37.805940575058216 ], [ -122.432391913920043, 37.805965699763121 ], [ -122.432397426855275, 37.805977970519415 ], [ -122.432516390332239, 37.805959539768239 ], [ -122.432628376560629, 37.805872550799698 ], [ -122.432642540805432, 37.805884679499613 ], [ -122.432527165744716, 37.805974471194816 ], [ -122.432403189584164, 37.805999851361079 ], [ -122.43238951051228, 37.806072868560939 ], [ -122.432404443045669, 37.806114514237365 ], [ -122.432490452847844, 37.806359639916195 ], [ -122.43244910342851, 37.806367184726966 ], [ -122.432520431119073, 37.806580274784345 ], [ -122.432498061398036, 37.806585448423995 ], [ -122.432424985907915, 37.806371700265615 ], [ -122.432400868391511, 37.806376216073893 ], [ -122.432301460176419, 37.806081865240721 ], [ -122.43236869294482, 37.806071149476409 ], [ -122.432380802509087, 37.806004338539104 ], [ -122.43235326017701, 37.806010283635004 ], [ -122.432347175872593, 37.805976047248159 ], [ -122.432319651407369, 37.805982678495994 ], [ -122.432302633632929, 37.805993944955773 ], [ -122.432282173360747, 37.806005686719168 ], [ -122.432280461289963, 37.806006669320666 ], [ -122.432265120589491, 37.806015848390899 ], [ -122.432249654811855, 37.806020221869829 ], [ -122.432227231644546, 37.806023336155739 ], [ -122.432194784491401, 37.806040349205666 ], [ -122.432179693529363, 37.806059138076137 ], [ -122.432171560304809, 37.806079186408191 ], [ -122.432165157068255, 37.806099206671476 ], [ -122.432169117939694, 37.806118369860684 ], [ -122.432192469776069, 37.806150950175152 ], [ -122.432209844223067, 37.806153412703416 ], [ -122.432227007583123, 37.806214250207013 ], [ -122.432213468614208, 37.806226146108848 ], [ -122.432203354593938, 37.806236612991817 ], [ -122.432202178080502, 37.806257920803567 ], [ -122.43220649593593, 37.806290812956746 ], [ -122.432221571326565, 37.806337949854225 ], [ -122.432306430556167, 37.806804907302421 ], [ -122.432383452345448, 37.807103744994606 ], [ -122.432564682589728, 37.808479722911237 ], [ -122.432615131844727, 37.808489197136744 ], [ -122.432610261989339, 37.808501638018015 ], [ -122.432598381927761, 37.808510760137189 ], [ -122.432584628175405, 37.80851441914389 ], [ -122.432342320320956, 37.808516329227118 ], [ -122.432078432185492, 37.807223425689031 ], [ -122.431999351719028, 37.807178023752513 ], [ -122.431443837686672, 37.8072509882197 ], [ -122.431386630568454, 37.807314417209206 ], [ -122.431727121174518, 37.8090235974717 ], [ -122.431341938476805, 37.809056687748011 ], [ -122.430994999022246, 37.807365467556572 ], [ -122.430915919059899, 37.807320064620313 ], [ -122.430360402907354, 37.807393024257635 ], [ -122.430303194747026, 37.8074564524454 ], [ -122.43062118366457, 37.809166690185819 ], [ -122.430108306409053, 37.8092156017048 ], [ -122.429835000067499, 37.807825332620489 ], [ -122.429264030219372, 37.807903346686288 ], [ -122.429270969868725, 37.807970532619663 ], [ -122.428236680346103, 37.808405663457563 ], [ -122.427001622006514, 37.808109268493716 ], [ -122.426995537909036, 37.808141644021028 ], [ -122.427545144293163, 37.808640840008444 ], [ -122.428014153033857, 37.808569308327186 ], [ -122.428043639051282, 37.808704798333089 ], [ -122.427533242566099, 37.808782500069931 ], [ -122.427523467767188, 37.808739396087624 ], [ -122.427301030953672, 37.808773247159571 ], [ -122.427287243070779, 37.808708920235645 ], [ -122.427490716316399, 37.808678126013014 ], [ -122.426909232318224, 37.808151294840016 ], [ -122.426839001555635, 37.808113298884024 ], [ -122.426613230594512, 37.808152010516238 ], [ -122.426560904719622, 37.807943556174827 ], [ -122.426488519796493, 37.807651861239542 ], [ -122.426357658303132, 37.807388412718332 ], [ -122.426257507799036, 37.807185417079722 ], [ -122.426066893674061, 37.80699787612533 ], [ -122.4257796482039, 37.806715259689653 ], [ -122.425627533230582, 37.806456787332273 ], [ -122.425531817297653, 37.806150610629167 ], [ -122.425487611207828, 37.806009959663712 ], [ -122.425486832357592, 37.806006120121552 ], [ -122.425298563577385, 37.80507790289635 ], [ -122.425204919000421, 37.804616199985951 ], [ -122.425109521046082, 37.804145845932808 ], [ -122.424918804152185, 37.803205508171892 ], [ -122.424808684502352, 37.802662664019884 ], [ -122.424731259133807, 37.802280983275736 ], [ -122.424731635083759, 37.802281009278651 ], [ -122.424538324517613, 37.801303719934985 ], [ -122.424517597070277, 37.801201189595353 ], [ -122.424358667137113, 37.800415027771606 ], [ -122.424242907462499, 37.799842398528341 ], [ -122.42417056511286, 37.799484537126212 ], [ -122.42417056430692, 37.799484532744323 ], [ -122.423982145098208, 37.798552453684835 ], [ -122.423982396975646, 37.798552421556877 ], [ -122.423793785438747, 37.7976164776058 ], [ -122.423792964234153, 37.797616581376253 ], [ -122.423601296960271, 37.796691058659476 ], [ -122.42360129621845, 37.796691056748735 ], [ -122.423601876988513, 37.796690945913937 ], [ -122.423601877370103, 37.796690947281171 ], [ -122.425249874473522, 37.79648130315109 ], [ -122.426892728667355, 37.796272251947869 ], [ -122.428537813517494, 37.796062892623418 ], [ -122.430182832162615, 37.795853517593606 ], [ -122.431827832563371, 37.79564412085616 ], [ -122.433469062960725, 37.795435179810816 ], [ -122.435113289920963, 37.795225833115033 ], [ -122.436760975027326, 37.795016021968365 ], [ -122.438402484723895, 37.794806973138577 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":7,"ZIP_CODE":94133,"ID":94133},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.418530631419571, 37.804999043218864 ], [ -122.418718265666911, 37.805931520041717 ], [ -122.418781807492508, 37.806241018338142 ], [ -122.418781854642702, 37.806241248585302 ], [ -122.418856183917853, 37.806607498073362 ], [ -122.418908043871269, 37.806863030947284 ], [ -122.419086067910683, 37.807803117635643 ], [ -122.419223966222532, 37.808453096037454 ], [ -122.419103158585543, 37.808467422639801 ], [ -122.419122467317635, 37.808544708340989 ], [ -122.418980965776527, 37.808562118993599 ], [ -122.418965099874526, 37.808484090255142 ], [ -122.417886530686005, 37.80861494396968 ], [ -122.417923033396889, 37.808821741173873 ], [ -122.417843612318336, 37.80882989992265 ], [ -122.417811191268285, 37.808647071958433 ], [ -122.417726330574766, 37.808645704666795 ], [ -122.417731886802656, 37.808592736810425 ], [ -122.417624531730937, 37.808591735208473 ], [ -122.417601699719071, 37.808579058949235 ], [ -122.41748929463067, 37.808583633129054 ], [ -122.417485092698755, 37.808420948020817 ], [ -122.417586902421718, 37.808408305143338 ], [ -122.417575917233663, 37.808385134844094 ], [ -122.417669145522396, 37.808375378317514 ], [ -122.41765313920358, 37.808291858459306 ], [ -122.41737529132557, 37.808325217992042 ], [ -122.417344584298249, 37.808141675039998 ], [ -122.416347061956941, 37.808260209523006 ], [ -122.416354024690548, 37.808328768820694 ], [ -122.416305697821443, 37.808334361125667 ], [ -122.416338782629509, 37.80847597548388 ], [ -122.41718410046191, 37.808496573566089 ], [ -122.417183326975007, 37.808533669258267 ], [ -122.416327431803367, 37.808505689336052 ], [ -122.416281962820022, 37.808487886292838 ], [ -122.416150789583881, 37.80850306555427 ], [ -122.416144807019506, 37.808539558863203 ], [ -122.416207242955323, 37.808544038257011 ], [ -122.416187547333237, 37.808854071166344 ], [ -122.41742892570683, 37.808927290365972 ], [ -122.417412600540189, 37.80916653558441 ], [ -122.418193962887401, 37.809680962781762 ], [ -122.41929170565983, 37.810403664792204 ], [ -122.41931534577914, 37.810380618458765 ], [ -122.419422885954745, 37.810454266609824 ], [ -122.419833484960733, 37.810735462513406 ], [ -122.419807989843818, 37.810753732347422 ], [ -122.420595101766708, 37.811266948659416 ], [ -122.420353825913267, 37.811509857466909 ], [ -122.420001661760068, 37.81128073132367 ], [ -122.419845148459302, 37.811320361929653 ], [ -122.419951835473171, 37.811563099184333 ], [ -122.419915762044113, 37.811573987538154 ], [ -122.419724362099529, 37.811134852199615 ], [ -122.41972295750638, 37.81113418613959 ], [ -122.419216088646508, 37.810893843097361 ], [ -122.419185739151644, 37.810925239548666 ], [ -122.419097184597589, 37.810915006165231 ], [ -122.418987802638568, 37.810835752698928 ], [ -122.418935347953351, 37.810882616404598 ], [ -122.419125945102621, 37.811023040645175 ], [ -122.419048154317267, 37.811094352280243 ], [ -122.419465867632354, 37.811381473037407 ], [ -122.419350858543552, 37.811486353332427 ], [ -122.418846744437559, 37.811473267417028 ], [ -122.416831664498375, 37.810133272229294 ], [ -122.415352404138332, 37.809160867759147 ], [ -122.415205531523597, 37.809171493557926 ], [ -122.415205867990196, 37.809184535850846 ], [ -122.415200978155667, 37.80919628956385 ], [ -122.415187329670815, 37.809204065160294 ], [ -122.415151663626474, 37.809230739831797 ], [ -122.415171052667063, 37.809244159741915 ], [ -122.415194871121983, 37.809227978313764 ], [ -122.415413019588954, 37.809363153673537 ], [ -122.415370856947149, 37.809406415569271 ], [ -122.415142166917732, 37.809265230241984 ], [ -122.415155744585249, 37.809254708904987 ], [ -122.415139781310558, 37.809239860465802 ], [ -122.415039713249854, 37.809185860695372 ], [ -122.41488880052961, 37.80924118848273 ], [ -122.414968316086458, 37.80930376277346 ], [ -122.414992913705149, 37.809317784591791 ], [ -122.415006420575594, 37.809304517526144 ], [ -122.415222785388849, 37.809437662297633 ], [ -122.415180622939999, 37.809480924119129 ], [ -122.41496425806919, 37.809347778996823 ], [ -122.414981136896941, 37.8093310235652 ], [ -122.41495316698277, 37.809320490118694 ], [ -122.414845930117963, 37.809256992445782 ], [ -122.414780776445994, 37.809281398852669 ], [ -122.414774461081151, 37.809372149219335 ], [ -122.415340036749569, 37.80975508488244 ], [ -122.415288518799699, 37.809838328383556 ], [ -122.41456302792659, 37.80956443044294 ], [ -122.414023978762671, 37.809471544827012 ], [ -122.413420668373689, 37.809236173514122 ], [ -122.41337430449579, 37.809317959368158 ], [ -122.413395600212141, 37.809338215320878 ], [ -122.413411510435665, 37.809351004954635 ], [ -122.413425672211702, 37.809363136228626 ], [ -122.413441564407123, 37.809375239427176 ], [ -122.413455726199771, 37.809387370972054 ], [ -122.413471618398191, 37.809399473891929 ], [ -122.413487492569899, 37.80941089065314 ], [ -122.413505097854454, 37.809422279326348 ], [ -122.413520972382244, 37.809433696077356 ], [ -122.413538559637843, 37.80944439831444 ], [ -122.413554416481929, 37.809455128624236 ], [ -122.413572003401356, 37.809465830861896 ], [ -122.413607142559428, 37.809485862444731 ], [ -122.413624694804525, 37.809495192064489 ], [ -122.414282035042135, 37.809946003161961 ], [ -122.414200903764723, 37.81002217256772 ], [ -122.414027337823839, 37.810138985552911 ], [ -122.413780738047123, 37.809907441000853 ], [ -122.413857049972947, 37.809845771015681 ], [ -122.412616832608151, 37.809078904365926 ], [ -122.412498775807535, 37.80906571088461 ], [ -122.412398060995869, 37.809120908451149 ], [ -122.412400109349747, 37.809133236262518 ], [ -122.412396967167027, 37.809145648237823 ], [ -122.412390346141294, 37.809157430172931 ], [ -122.412380210884578, 37.809167208369729 ], [ -122.412426492762847, 37.809216588736774 ], [ -122.412450629760414, 37.809212763732177 ], [ -122.41262839277087, 37.809393236325491 ], [ -122.412573868329858, 37.809427083257212 ], [ -122.412396105370902, 37.809246610582868 ], [ -122.412412861666652, 37.809225050449037 ], [ -122.412356250722411, 37.809177897728922 ], [ -122.41234073008107, 37.809180209833173 ], [ -122.412323390603305, 37.809179117259049 ], [ -122.412307675451856, 37.809173878278465 ], [ -122.412099340782589, 37.809285071655154 ], [ -122.412099676704088, 37.809298113956672 ], [ -122.412096516784118, 37.809309839486673 ], [ -122.412089895696084, 37.809321621404543 ], [ -122.412078012629308, 37.8093307411864 ], [ -122.412124294062423, 37.809380121676121 ], [ -122.412148413801376, 37.809375610565525 ], [ -122.412315935400727, 37.809561743172587 ], [ -122.412252793608843, 37.809597103119742 ], [ -122.412093889154491, 37.809409457275514 ], [ -122.41211066290181, 37.809388583353197 ], [ -122.412057512853792, 37.809341374382768 ], [ -122.412040244067796, 37.809343027789311 ], [ -122.412024634631933, 37.809341907398313 ], [ -122.412008919813204, 37.809336668372488 ], [ -122.411894272206808, 37.809388657747697 ], [ -122.412861765933144, 37.810522545447967 ], [ -122.412718336607824, 37.810599724430624 ], [ -122.412705816724809, 37.810584132828346 ], [ -122.411509089676429, 37.81123738012537 ], [ -122.41148957739901, 37.811219154555417 ], [ -122.412686215557258, 37.810562475550952 ], [ -122.411452462026304, 37.809105334882879 ], [ -122.411423380532113, 37.809118854220145 ], [ -122.411248622782082, 37.808920476073887 ], [ -122.411085557936261, 37.808907323817536 ], [ -122.411283571142818, 37.809134854169606 ], [ -122.411256255700124, 37.809149718017444 ], [ -122.411031438641331, 37.808889659210472 ], [ -122.410955336187001, 37.808892265747417 ], [ -122.410765573350616, 37.808850703243849 ], [ -122.410736033164511, 37.808846374759867 ], [ -122.410731512966407, 37.808872543480319 ], [ -122.410649866328171, 37.808861505447226 ], [ -122.410652655797975, 37.808835364493682 ], [ -122.410546641899074, 37.808819227353638 ], [ -122.410441958004114, 37.809325664485378 ], [ -122.410406413493931, 37.809289843904054 ], [ -122.410401787512413, 37.809311893981061 ], [ -122.410630331289113, 37.809716792194763 ], [ -122.410709259423612, 37.809689418065965 ], [ -122.410633083668301, 37.809554681184579 ], [ -122.41064851611452, 37.809548937394226 ], [ -122.410729547478269, 37.809670547859675 ], [ -122.410757004560026, 37.809661175631867 ], [ -122.410712947997226, 37.809563688219221 ], [ -122.410728380093076, 37.809557944424022 ], [ -122.410791312651469, 37.80964894551029 ], [ -122.410822177556227, 37.809637457886339 ], [ -122.410778085579025, 37.80953859734884 ], [ -122.410793518010678, 37.809532853539501 ], [ -122.410858216047515, 37.809625199709956 ], [ -122.410889098254941, 37.809614398511123 ], [ -122.410843240792332, 37.809514193154044 ], [ -122.410858672867818, 37.809508449341749 ], [ -122.410923406302985, 37.809602168351013 ], [ -122.410950845665482, 37.809592109640889 ], [ -122.410904952795121, 37.809490531433248 ], [ -122.410920384860916, 37.809484787612853 ], [ -122.410985153693048, 37.809579879462774 ], [ -122.411024617975485, 37.809566192280315 ], [ -122.410978689334627, 37.809463241232329 ], [ -122.410994104065225, 37.809456810959603 ], [ -122.411058925978935, 37.809553962080649 ], [ -122.411089808473605, 37.809543160823544 ], [ -122.411042113998747, 37.809438864964896 ], [ -122.411057546043196, 37.809433121126496 ], [ -122.411195348876859, 37.80967536169041 ], [ -122.41117818636998, 37.809681133587063 ], [ -122.411116453591873, 37.809569511282646 ], [ -122.41104955067469, 37.80959325722408 ], [ -122.41111476155065, 37.809705510201134 ], [ -122.411097598684464, 37.809711282091641 ], [ -122.411034100233891, 37.80959831463543 ], [ -122.410977509113948, 37.809619146556997 ], [ -122.411041007143098, 37.809732113774253 ], [ -122.411025592359422, 37.809738544052792 ], [ -122.410960346257056, 37.809624918427609 ], [ -122.410907162593759, 37.809643635209717 ], [ -122.410972426300958, 37.809757947300923 ], [ -122.410956993836351, 37.80976369113344 ], [ -122.410891730147881, 37.809649379033807 ], [ -122.410835138249837, 37.809670210623501 ], [ -122.410900419538606, 37.809785209191027 ], [ -122.410884987408849, 37.809790953008481 ], [ -122.410819706138938, 37.809675954432528 ], [ -122.410764809648242, 37.809695385622547 ], [ -122.410830108511632, 37.809811070390921 ], [ -122.41081467602497, 37.809816814204737 ], [ -122.410747646757216, 37.80970115746215 ], [ -122.410639354408318, 37.809731067210933 ], [ -122.410896947885561, 37.810188372007936 ], [ -122.410975841429376, 37.810159624823598 ], [ -122.410901536485113, 37.810030351311333 ], [ -122.410916969009435, 37.810024607486383 ], [ -122.410997965998874, 37.810144845157168 ], [ -122.41103912533255, 37.810129757339681 ], [ -122.410977003992286, 37.810003033077805 ], [ -122.410992436505126, 37.809997289242951 ], [ -122.411075146003029, 37.810116812392209 ], [ -122.411112880121649, 37.810103153220581 ], [ -122.411050758345823, 37.809976429551675 ], [ -122.411066208857108, 37.809971371863952 ], [ -122.411147188358683, 37.810090922996501 ], [ -122.411190078057032, 37.810075806811575 ], [ -122.411127956511336, 37.809949082902484 ], [ -122.411143389001253, 37.809943339047805 ], [ -122.411224368596535, 37.81006289012803 ], [ -122.411256964037719, 37.810051374350031 ], [ -122.411194842059288, 37.809924650755768 ], [ -122.41121027488505, 37.809918906886708 ], [ -122.4112929849924, 37.810038429879377 ], [ -122.411332431435511, 37.81002405588923 ], [ -122.411270309344076, 37.809897332059471 ], [ -122.411285742158299, 37.809891588180513 ], [ -122.411366721926342, 37.810011139164168 ], [ -122.411401047752832, 37.809999595302976 ], [ -122.411337195490745, 37.809872899820583 ], [ -122.411354358375661, 37.809867127895387 ], [ -122.411435338227506, 37.809986678832487 ], [ -122.411471359105562, 37.809973733758071 ], [ -122.411409237165202, 37.809847009994684 ], [ -122.411424669612117, 37.809841266103092 ], [ -122.41150566722375, 37.80996150342942 ], [ -122.411546826352634, 37.809946415434261 ], [ -122.411484704299241, 37.809819691435401 ], [ -122.411500136734659, 37.809813947533918 ], [ -122.411582846845619, 37.809933470331323 ], [ -122.4116188680253, 37.809920525480692 ], [ -122.411556745877689, 37.809793801793724 ], [ -122.411572177956074, 37.809788057888397 ], [ -122.411653176094603, 37.809908295109032 ], [ -122.4116909096619, 37.809894636032141 ], [ -122.411628787405917, 37.809767912107915 ], [ -122.411644219819436, 37.809762168187518 ], [ -122.411725217707357, 37.809882405639449 ], [ -122.411759525734439, 37.809870174962185 ], [ -122.411697403388885, 37.809743451348098 ], [ -122.411712835792031, 37.809737707418712 ], [ -122.411881278427131, 37.810026834486933 ], [ -122.41186411554628, 37.81003260648864 ], [ -122.411782586611622, 37.809891776308959 ], [ -122.411719126796399, 37.80991478009306 ], [ -122.411802385721074, 37.810055582271964 ], [ -122.411785222827419, 37.810061354262146 ], [ -122.411703694356945, 37.809920524023092 ], [ -122.411645389734517, 37.809942070760108 ], [ -122.411726900787329, 37.810082214596392 ], [ -122.411711467967621, 37.810087958532876 ], [ -122.411628227200978, 37.809947842721932 ], [ -122.41156305384375, 37.809971560917056 ], [ -122.411644564773539, 37.810111704809465 ], [ -122.411629131941311, 37.810117448735141 ], [ -122.411547621726527, 37.809977304820983 ], [ -122.411485874174801, 37.809999594002001 ], [ -122.411567384297499, 37.810139737958238 ], [ -122.411551952145643, 37.810145481862563 ], [ -122.411470441699677, 37.81000533790143 ], [ -122.411408676427612, 37.810026940604999 ], [ -122.411490204455376, 37.81016777104513 ], [ -122.41147477194562, 37.81017351494495 ], [ -122.411393243940836, 37.810032684494281 ], [ -122.411328070780158, 37.81005640255357 ], [ -122.41140959834128, 37.810197233054254 ], [ -122.411394148491496, 37.81020229050096 ], [ -122.41131090784944, 37.810062174474744 ], [ -122.411249177828495, 37.810085149968437 ], [ -122.411330687944414, 37.810225294080347 ], [ -122.4113152554104, 37.810231037959227 ], [ -122.411232014885002, 37.810090921878086 ], [ -122.411175405434363, 37.810111067735896 ], [ -122.411256933104966, 37.81025189806045 ], [ -122.411241500559697, 37.810257641929645 ], [ -122.411159972912074, 37.810116811594561 ], [ -122.411103380733024, 37.810137643311123 ], [ -122.411184890977466, 37.810277787516789 ], [ -122.411169458075165, 37.810283531382133 ], [ -122.411087948545713, 37.810143387154753 ], [ -122.411017619235537, 37.810168562307894 ], [ -122.411099128998927, 37.810308706303054 ], [ -122.411083696429642, 37.810314450151544 ], [ -122.411004005467134, 37.81017771001823 ], [ -122.410905971459442, 37.810202646996828 ], [ -122.411216101543474, 37.810750434096292 ], [ -122.411307020324173, 37.810718058221234 ], [ -122.411214614556201, 37.8105581756828 ], [ -122.411231794935318, 37.81055309021869 ], [ -122.411325542368957, 37.810697843090367 ], [ -122.411366719609191, 37.810683441322411 ], [ -122.411291830600106, 37.810531515646439 ], [ -122.411307262852333, 37.810525771776568 ], [ -122.411402864908169, 37.810675301597549 ], [ -122.411522935608915, 37.810632152260467 ], [ -122.411446209498621, 37.810476136111049 ], [ -122.411461659747943, 37.810471078652185 ], [ -122.411555407533228, 37.810615831617966 ], [ -122.41160859172949, 37.810597114547022 ], [ -122.411624041992908, 37.810592057067005 ], [ -122.411677226161913, 37.810573340239586 ], [ -122.411600605842565, 37.810421442809904 ], [ -122.411617768833821, 37.810415670846979 ], [ -122.411711534523249, 37.810561109852458 ], [ -122.411738974133357, 37.810551050960818 ], [ -122.411686385419046, 37.810391210096554 ], [ -122.411701817957677, 37.810385466169308 ], [ -122.411764700631707, 37.810541706828857 ], [ -122.411829892102887, 37.810518674961713 ], [ -122.41176529620391, 37.810363148827776 ], [ -122.411780746061879, 37.81035809133261 ], [ -122.411847054752684, 37.810512902971148 ], [ -122.411915671345156, 37.810488441813206 ], [ -122.411840781416544, 37.810336516754752 ], [ -122.411856213585779, 37.81033077281284 ], [ -122.411935941632692, 37.810468884965481 ], [ -122.411921351800245, 37.810305681309181 ], [ -122.411938638145514, 37.810304714362765 ], [ -122.411953405498025, 37.81047478237366 ], [ -122.412071780474818, 37.810433033401743 ], [ -122.412010591984938, 37.810275392256564 ], [ -122.412115642263785, 37.810455670909619 ], [ -122.412100192408317, 37.810460728448561 ], [ -122.412084406280471, 37.810452743692409 ], [ -122.41176878056207, 37.810565675738737 ], [ -122.41175334799118, 37.810571419674538 ], [ -122.411684748938015, 37.810596566899896 ], [ -122.411669298331702, 37.810601624393506 ], [ -122.411598969130708, 37.810626799885483 ], [ -122.411583536533968, 37.810632543799024 ], [ -122.411518344886403, 37.810655575529537 ], [ -122.411502912623547, 37.810661319426885 ], [ -122.411432582949345, 37.810686494275835 ], [ -122.411417150327338, 37.81069223816754 ], [ -122.411223323763636, 37.810761991358582 ], [ -122.41132311146211, 37.810939609065692 ], [ -122.411244573940635, 37.811116682909216 ], [ -122.410949479920689, 37.811220352571489 ], [ -122.410930216342933, 37.811279036146971 ], [ -122.410681455051716, 37.81136684679597 ], [ -122.410613578346386, 37.811352838185535 ], [ -122.410419696661208, 37.811420531005773 ], [ -122.410148367227194, 37.811505958616635 ], [ -122.408511879957302, 37.811283856992631 ], [ -122.407577358643394, 37.808803424612513 ], [ -122.407596251976869, 37.808797625245276 ], [ -122.408535735474004, 37.811269050069917 ], [ -122.410153064417187, 37.811486654300801 ], [ -122.41040703579597, 37.811399447392162 ], [ -122.410397994853795, 37.811384485925792 ], [ -122.410199185064457, 37.81132796106332 ], [ -122.410033026138677, 37.811396577420801 ], [ -122.410028523199003, 37.811423432538689 ], [ -122.408569038736545, 37.811217693403208 ], [ -122.408604939400348, 37.811065346992223 ], [ -122.408622314546491, 37.811067812437848 ], [ -122.408601547208733, 37.811202746444437 ], [ -122.408639776140404, 37.811208308039326 ], [ -122.408681379486623, 37.811075784005041 ], [ -122.408700502750108, 37.811078908147074 ], [ -122.408681466003685, 37.811213813888727 ], [ -122.408723173522517, 37.811220006160561 ], [ -122.408763046269982, 37.811087510102226 ], [ -122.408782169539933, 37.811090634230986 ], [ -122.40876313259281, 37.811225539991135 ], [ -122.408803092361268, 37.811231073796982 ], [ -122.408842964625947, 37.811098577717516 ], [ -122.408862088248199, 37.811101701827724 ], [ -122.408843051796623, 37.811236607869454 ], [ -122.408881280424794, 37.811242169666208 ], [ -122.408921153248102, 37.811109673549396 ], [ -122.408942006980325, 37.811112769370261 ], [ -122.408921240203938, 37.811247703157434 ], [ -122.408964677875915, 37.811253867342053 ], [ -122.409004568208587, 37.811122057634492 ], [ -122.409025404309773, 37.811124467552588 ], [ -122.409006385440833, 37.811260059513721 ], [ -122.409042866672721, 37.811264962818356 ], [ -122.409082738873835, 37.811132466653085 ], [ -122.409101862168811, 37.811135590729982 ], [ -122.409082825791046, 37.81127049654058 ], [ -122.409126264189027, 37.81127666092906 ], [ -122.409166136247578, 37.811144164735886 ], [ -122.409185259542042, 37.811147288524687 ], [ -122.409166223312823, 37.811282194348451 ], [ -122.409211409832309, 37.811289016857089 ], [ -122.409251281745554, 37.811156520635443 ], [ -122.40927213551177, 37.811159616672512 ], [ -122.40925136932222, 37.811294550516585 ], [ -122.409279162626277, 37.81129822094033 ], [ -122.40932078253644, 37.811166383119904 ], [ -122.409339888202226, 37.811168820995697 ], [ -122.409320870242325, 37.811304413000762 ], [ -122.409364308333835, 37.811310577307111 ], [ -122.409405910098016, 37.811178053025465 ], [ -122.409425033757373, 37.811181176769772 ], [ -122.409405998308287, 37.811316082900326 ], [ -122.40944074878638, 37.811321014101964 ], [ -122.40948063795679, 37.811189203966087 ], [ -122.409501474085218, 37.811191613525516 ], [ -122.409480725959895, 37.811327233846249 ], [ -122.409527624648632, 37.811333341792235 ], [ -122.409567496367472, 37.811200845459226 ], [ -122.409588350159311, 37.811203941440354 ], [ -122.40956758453207, 37.81133887533899 ], [ -122.409607544075371, 37.811344408877801 ], [ -122.409647432976385, 37.811212599235269 ], [ -122.409666538650669, 37.811215036508962 ], [ -122.4096475212896, 37.811350629114692 ], [ -122.409687480492039, 37.811356162357413 ], [ -122.409729082397121, 37.811223637951706 ], [ -122.409748205742758, 37.811226761923784 ], [ -122.40972917051603, 37.811361667836366 ], [ -122.40976739996718, 37.811367229334621 ], [ -122.409807270930216, 37.811234732926998 ], [ -122.409826394289098, 37.811237857160975 ], [ -122.409807359540622, 37.811372762805725 ], [ -122.409849067242604, 37.811378954679277 ], [ -122.409888938066231, 37.811246458244362 ], [ -122.409909791884289, 37.81124955416864 ], [ -122.409890757298484, 37.811384460375677 ], [ -122.409934195469972, 37.811390623922954 ], [ -122.409972335687982, 37.811258155482349 ], [ -122.409991388408557, 37.811258533667043 ], [ -122.410051001542016, 37.811355083215751 ], [ -122.410080225111116, 37.811347055723829 ], [ -122.410039452733983, 37.811242647397464 ], [ -122.410060076955276, 37.811236819614464 ], [ -122.410111355764599, 37.81134586484395 ], [ -122.410186754248173, 37.811315801374953 ], [ -122.410002034752523, 37.810999466686859 ], [ -122.410015948336749, 37.810934689402742 ], [ -122.410036236914948, 37.810915819594705 ], [ -122.410045418985376, 37.810868973454134 ], [ -122.40995683043738, 37.810857360334786 ], [ -122.409929090780366, 37.810990347084882 ], [ -122.409911715601922, 37.810987881557118 ], [ -122.409936471227283, 37.810873484930354 ], [ -122.409873927744698, 37.810864883322409 ], [ -122.409849172039969, 37.810979280485419 ], [ -122.409831796859692, 37.810976814671307 ], [ -122.409859730943055, 37.810851378751366 ], [ -122.409793708942289, 37.810842147255194 ], [ -122.409767522509881, 37.810968241308018 ], [ -122.409751878141279, 37.810965747731309 ], [ -122.409778063900148, 37.81083965341854 ], [ -122.409713790367476, 37.810831080014538 ], [ -122.409685856045158, 37.810956515900401 ], [ -122.409668480889763, 37.810954050611365 ], [ -122.409696415233427, 37.810828614454991 ], [ -122.40963387182353, 37.810820012994292 ], [ -122.409609415933446, 37.810946079263672 ], [ -122.409592040775962, 37.810943613688799 ], [ -122.409616496701801, 37.810817547697539 ], [ -122.409552222853762, 37.810808973936524 ], [ -122.409527766835737, 37.810935040463818 ], [ -122.4095103913304, 37.810932574607932 ], [ -122.409534847384165, 37.81080650835878 ], [ -122.409470556252117, 37.810797248385086 ], [ -122.4094443696399, 37.810923342636215 ], [ -122.409426994147125, 37.810920877042648 ], [ -122.409453181134111, 37.810794782789721 ], [ -122.40938717688249, 37.810786237228463 ], [ -122.409360972477401, 37.810911645024227 ], [ -122.409343596990126, 37.810909179418339 ], [ -122.409371532226004, 37.810783743881395 ], [ -122.409307258435504, 37.810775169986833 ], [ -122.409279323454484, 37.810900606052307 ], [ -122.409261948311553, 37.810898140154237 ], [ -122.409289883328043, 37.810772704367388 ], [ -122.409222130673314, 37.810763500569543 ], [ -122.409194195884822, 37.810888936060401 ], [ -122.409178551206097, 37.810886442413199 ], [ -122.409204755910437, 37.810761034657382 ], [ -122.409142194961319, 37.810751746498703 ], [ -122.409114277009948, 37.810877868693844 ], [ -122.409096902238019, 37.810875403314995 ], [ -122.409124837171674, 37.81074996729771 ], [ -122.409062293894237, 37.810741365533815 ], [ -122.409034358851102, 37.810866801261916 ], [ -122.409016983385186, 37.810864335607896 ], [ -122.409044919155974, 37.810738900147257 ], [ -122.408982375890048, 37.810730298066382 ], [ -122.408954440030968, 37.81085573406159 ], [ -122.408937065255401, 37.810853268110044 ], [ -122.408965000457812, 37.810727832404666 ], [ -122.408898979017181, 37.810718600127345 ], [ -122.408871043014514, 37.810844035828495 ], [ -122.408853668258587, 37.8108415704138 ], [ -122.408881603590444, 37.810716134453337 ], [ -122.408815582170575, 37.810706902129297 ], [ -122.408787646031413, 37.810832337810972 ], [ -122.408770288923606, 37.810830558546641 ], [ -122.408798206756401, 37.810704436717558 ], [ -122.408730454910014, 37.810695232351428 ], [ -122.408702518970472, 37.810820667733054 ], [ -122.408686891971527, 37.810818860457857 ], [ -122.408713079833362, 37.810692766372398 ], [ -122.408650536651805, 37.810684164390111 ], [ -122.408622600588473, 37.810809600027646 ], [ -122.408605243143839, 37.810807820744628 ], [ -122.408633161587474, 37.810681698673903 ], [ -122.408556510134844, 37.810663024107164 ], [ -122.408588984612706, 37.810512106294745 ], [ -122.408606359289806, 37.810514572023159 ], [ -122.408587340511048, 37.810650164195629 ], [ -122.408629047705375, 37.810656356501411 ], [ -122.408668902323384, 37.810523174029143 ], [ -122.408686277704945, 37.81052564000916 ], [ -122.40866552792356, 37.81066125993452 ], [ -122.408708965930458, 37.810667424477344 ], [ -122.408748820750048, 37.810534241698186 ], [ -122.40876619543765, 37.81053670740306 ], [ -122.40874717695219, 37.810672299875314 ], [ -122.408794093155748, 37.810679094270796 ], [ -122.408833947835987, 37.810545911737734 ], [ -122.408849592085303, 37.810548405436371 ], [ -122.40883057374208, 37.810683997647232 ], [ -122.408875741869977, 37.810690133853562 ], [ -122.408915614060632, 37.81055763773044 ], [ -122.408932971115192, 37.810559417248072 ], [ -122.408913970565308, 37.81069569563472 ], [ -122.408960869161646, 37.810701804075741 ], [ -122.409000741206668, 37.810569307924148 ], [ -122.409018098597954, 37.810571086874475 ], [ -122.40899736742189, 37.810707393837795 ], [ -122.409040787124908, 37.810712871283229 ], [ -122.409080641733894, 37.810579688936649 ], [ -122.409096286337629, 37.810582182322406 ], [ -122.409077268090201, 37.810717774577761 ], [ -122.40911897536337, 37.810723966710214 ], [ -122.409158829484909, 37.81059078406853 ], [ -122.409176204199355, 37.810593249712966 ], [ -122.409157186441121, 37.810728841975312 ], [ -122.409200623829136, 37.810735006073635 ], [ -122.409240478156264, 37.81060182339904 ], [ -122.409257853229136, 37.810604289300421 ], [ -122.409238852918037, 37.810740567743849 ], [ -122.409285751569428, 37.810746676055665 ], [ -122.409325605404021, 37.810613493358183 ], [ -122.409341250023104, 37.81061598671144 ], [ -122.40932224986912, 37.810752265442567 ], [ -122.4093656699755, 37.81075774303735 ], [ -122.40940554098205, 37.810625246755905 ], [ -122.409422898749284, 37.810627025915643 ], [ -122.409403898742326, 37.810763304659638 ], [ -122.409447336517104, 37.810769468661483 ], [ -122.40948544197218, 37.810635627488516 ], [ -122.409502816715019, 37.810638093359387 ], [ -122.409485547293727, 37.810774343825763 ], [ -122.409528985434875, 37.8107805080665 ], [ -122.409565359949454, 37.810646694615322 ], [ -122.409582735382628, 37.810649160188639 ], [ -122.409567196568673, 37.810785383198734 ], [ -122.409612364812048, 37.81079151884834 ], [ -122.409648756853613, 37.810658392357979 ], [ -122.409666132285238, 37.810660857644436 ], [ -122.409648863165444, 37.8107971084087 ], [ -122.409690552872675, 37.810802613901892 ], [ -122.409730423669671, 37.810670117506156 ], [ -122.409747781109076, 37.81067189662366 ], [ -122.409728781340874, 37.810808175424455 ], [ -122.409772201856015, 37.810813652863935 ], [ -122.409810324407417, 37.810680498024219 ], [ -122.409827699517621, 37.810682963841622 ], [ -122.409810430682086, 37.810819214354417 ], [ -122.4098555989803, 37.810825350459979 ], [ -122.409895451834942, 37.810692167571958 ], [ -122.409912826590485, 37.810694632833282 ], [ -122.409895222374288, 37.810817841328777 ], [ -122.409936876790525, 37.81082197386079 ], [ -122.409973639826163, 37.810703262163521 ], [ -122.409991014940061, 37.810705727682269 ], [ -122.409959938125212, 37.81084357554878 ], [ -122.410048526318235, 37.810855188946014 ], [ -122.41005622518567, 37.810817980946432 ], [ -122.410043511556253, 37.810794838529432 ], [ -122.410054194116455, 37.810739040961913 ], [ -122.410078049482479, 37.810724233171044 ], [ -122.410094488114893, 37.810623018930904 ], [ -122.410081703845862, 37.810597130219826 ], [ -122.410092509988729, 37.810546137980772 ], [ -122.410117989755761, 37.810527183534326 ], [ -122.410136070412563, 37.810422508799753 ], [ -122.410119930917134, 37.810400795044814 ], [ -122.41012762970874, 37.810363587311961 ], [ -122.410156217048225, 37.810330848613937 ], [ -122.41017620465729, 37.81023300994017 ], [ -122.410158299784257, 37.810209951610261 ], [ -122.410179752853338, 37.810101788351538 ], [ -122.410076402542387, 37.809920107344034 ], [ -122.410041882266327, 37.809924099736733 ], [ -122.410019086454341, 37.809912794612728 ], [ -122.409979357246016, 37.809916185169463 ], [ -122.409958274206915, 37.809904165299031 ], [ -122.409922023510461, 37.809908185953802 ], [ -122.409899227375504, 37.80989688081219 ], [ -122.409856019993072, 37.80989964065347 ], [ -122.409833224216882, 37.809888335493483 ], [ -122.409796955869524, 37.80989166994722 ], [ -122.409774159751635, 37.809880364506853 ], [ -122.40973616131653, 37.809883726681605 ], [ -122.409715095991231, 37.809872393479395 ], [ -122.409673618697951, 37.809875125240453 ], [ -122.409650822957047, 37.809863820045173 ], [ -122.409611093758144, 37.809867210477904 ], [ -122.409590028449543, 37.809855876978752 ], [ -122.409552029326491, 37.809859239105428 ], [ -122.40952923395507, 37.809847933880995 ], [ -122.409489504405954, 37.809851324003851 ], [ -122.409466709046484, 37.809840018767318 ], [ -122.409426961850301, 37.809842722706414 ], [ -122.409405896576772, 37.809831389174342 ], [ -122.409362689214092, 37.809834148834945 ], [ -122.409339893540192, 37.80982284385405 ], [ -122.40930537326976, 37.809826836031277 ], [ -122.409282577599768, 37.809815530764716 ], [ -122.409239369556644, 37.809818290665945 ], [ -122.409216574238357, 37.809806985106434 ], [ -122.409183784056154, 37.809810949516532 ], [ -122.409160988755644, 37.809799644220845 ], [ -122.409117781056253, 37.80980240379737 ], [ -122.409096715848435, 37.809791070484557 ], [ -122.409062177941692, 37.809794376702477 ], [ -122.40903938231871, 37.80978307138885 ], [ -122.409001401198537, 37.80978711949534 ], [ -122.408980336012803, 37.809775786161715 ], [ -122.408940588826241, 37.809778489662385 ], [ -122.408917793572726, 37.809767184319618 ], [ -122.408872855464537, 37.809769972088361 ], [ -122.408850059531787, 37.809758666743676 ], [ -122.408812061110055, 37.80976202834627 ], [ -122.408789265535077, 37.809750722984248 ], [ -122.40874778827569, 37.809753454419798 ], [ -122.408724992367041, 37.80974214905094 ], [ -122.408688724387432, 37.809745483158423 ], [ -122.408665928836285, 37.809734177772519 ], [ -122.408627929726592, 37.809737539327024 ], [ -122.408605134533261, 37.809726233923747 ], [ -122.40856886620287, 37.809729567725441 ], [ -122.408546070674888, 37.809718262316345 ], [ -122.408502862660981, 37.80972102194783 ], [ -122.408480067491766, 37.809709716520373 ], [ -122.408442068732256, 37.809713078009395 ], [ -122.408419272882526, 37.809701772581377 ], [ -122.40838475263304, 37.809705765038423 ], [ -122.408363687557454, 37.809694431319926 ], [ -122.408318732173385, 37.809696532434543 ], [ -122.408295936693619, 37.809685226977031 ], [ -122.408254459445629, 37.809687957964584 ], [ -122.408238053815026, 37.809790545390122 ], [ -122.40821721811372, 37.809788135332319 ], [ -122.408256439046454, 37.809562942360742 ], [ -122.408275562248491, 37.809566066566916 ], [ -122.408269450984477, 37.809665053549438 ], [ -122.408286825452777, 37.809667519325309 ], [ -122.40832766898086, 37.809572777430049 ], [ -122.408321557439706, 37.809671764420713 ], [ -122.408342410750109, 37.809674860622998 ], [ -122.408383254218379, 37.809580118983206 ], [ -122.408377142750709, 37.809679105976613 ], [ -122.408394517910963, 37.809681571450852 ], [ -122.408435360963296, 37.809586829524143 ], [ -122.408429249910625, 37.809685816514552 ], [ -122.408451833660507, 37.80968888497187 ], [ -122.408492676297627, 37.809594143031056 ], [ -122.408484852889558, 37.809693844457087 ], [ -122.408503958134872, 37.809696281919784 ], [ -122.408544801055655, 37.809601539955445 ], [ -122.408536959377372, 37.809700554958617 ], [ -122.408557795064482, 37.809702964959982 ], [ -122.408598638259278, 37.809608222696959 ], [ -122.408592544731249, 37.809707896412988 ], [ -122.408615128826568, 37.809710964284278 ], [ -122.40865597161357, 37.809616222281704 ], [ -122.408639231230907, 37.809705767179551 ], [ -122.408663757193779, 37.809717044567101 ], [ -122.408704599922103, 37.80962230254778 ], [ -122.408696758454738, 37.809721317561177 ], [ -122.408722821063833, 37.809725016115578 ], [ -122.408763663375069, 37.80963027408157 ], [ -122.408757553102589, 37.809729261082566 ], [ -122.408776676029532, 37.8097323854876 ], [ -122.408817518615137, 37.809637643154893 ], [ -122.408811408067763, 37.809736630164153 ], [ -122.408839165466787, 37.809738927817939 ], [ -122.408880043284086, 37.809645558612985 ], [ -122.408873932819418, 37.809744545625371 ], [ -122.40889130733342, 37.809747011586715 ], [ -122.408932150126873, 37.809652269208989 ], [ -122.408926057042962, 37.809751942941425 ], [ -122.408946892742989, 37.809754352324887 ], [ -122.408987735476614, 37.809659610202615 ], [ -122.408979894728986, 37.80975862522854 ], [ -122.409002478177683, 37.809761693586005 ], [ -122.409043320837327, 37.809666951170023 ], [ -122.40903548016307, 37.809765966199507 ], [ -122.409052855026459, 37.809768431856902 ], [ -122.409093697286551, 37.809673689703786 ], [ -122.409085856332652, 37.809772704742095 ], [ -122.409106709703295, 37.809775800809213 ], [ -122.409147552244775, 37.809681058631973 ], [ -122.409141441787753, 37.809780045663132 ], [ -122.409162295162758, 37.809783141720409 ], [ -122.409203137637348, 37.809688399524063 ], [ -122.409195297173937, 37.809787414563765 ], [ -122.409214402473708, 37.809789852185943 ], [ -122.409255244539409, 37.809695109977277 ], [ -122.409249134570899, 37.809794097008144 ], [ -122.409268257528154, 37.809797221058851 ], [ -122.409309099536273, 37.809702479106257 ], [ -122.40930298963896, 37.809801466139774 ], [ -122.409325573445983, 37.809804533880602 ], [ -122.409366415377917, 37.809709791633715 ], [ -122.409360305556405, 37.809808778670053 ], [ -122.409379410874138, 37.809811216540062 ], [ -122.409420252741057, 37.809716474274637 ], [ -122.409412429873498, 37.809816175771125 ], [ -122.409431535526792, 37.809818613077915 ], [ -122.409472376985178, 37.809723870800191 ], [ -122.409466267649847, 37.80982285783616 ], [ -122.409488851138192, 37.809825926100473 ], [ -122.409529693219639, 37.809731183791826 ], [ -122.409521853187186, 37.809830198852438 ], [ -122.409544436665897, 37.809833266556943 ], [ -122.409585278680453, 37.809738524229203 ], [ -122.409577438721357, 37.809837539293362 ], [ -122.409600022218754, 37.809840607536366 ], [ -122.409640864166391, 37.809745865189505 ], [ -122.409624124935263, 37.809835409950374 ], [ -122.409648668402042, 37.809847373575664 ], [ -122.409694718878129, 37.809753233598798 ], [ -122.409683400550946, 37.809851618269946 ], [ -122.40970946326199, 37.809855316880828 ], [ -122.409750304385923, 37.809760574507528 ], [ -122.409744195418114, 37.809859561557211 ], [ -122.409763300747386, 37.809861998815862 ], [ -122.409800681301817, 37.809767312459051 ], [ -122.409798050568668, 37.809866929913561 ], [ -122.409813677394268, 37.809868737041889 ], [ -122.409859727674416, 37.809774597001002 ], [ -122.409848409562613, 37.809872981687576 ], [ -122.409872741508423, 37.809876708014343 ], [ -122.409896207540612, 37.809779500054304 ], [ -122.409902917913584, 37.809838449581335 ], [ -122.409927956256155, 37.809869633383848 ], [ -122.410058214833967, 37.809886065459693 ], [ -122.40978805552237, 37.809411107578008 ], [ -122.409692176324654, 37.809452490025258 ], [ -122.409753394315103, 37.809476907533615 ], [ -122.409795083288799, 37.80948241299123 ], [ -122.409790439454952, 37.809503776606206 ], [ -122.409767643810284, 37.809492471432705 ], [ -122.409733123723498, 37.809496464009918 ], [ -122.40971032808983, 37.809485158825325 ], [ -122.40967926884106, 37.809489095348837 ], [ -122.409656473217836, 37.809477790153814 ], [ -122.409630622889722, 37.80948232932171 ], [ -122.409609557687361, 37.809470995825244 ], [ -122.409573289526762, 37.809474329935902 ], [ -122.409550493924201, 37.809463024720365 ], [ -122.40952291317636, 37.809467591881273 ], [ -122.409500117230408, 37.809456286387039 ], [ -122.409465597146067, 37.809460278886 ], [ -122.409442784254765, 37.809448287206727 ], [ -122.409413473087668, 37.809452882357093 ], [ -122.409390677508952, 37.809441576836036 ], [ -122.409354409006824, 37.809444910885041 ], [ -122.409331613792688, 37.809433605621535 ], [ -122.409304033042332, 37.809438172731298 ], [ -122.409281237484791, 37.809426867189075 ], [ -122.409251926309096, 37.809431462024762 ], [ -122.40922913042256, 37.809420156752616 ], [ -122.409192844962547, 37.809422804303409 ], [ -122.409170049433754, 37.809411499014253 ], [ -122.409133798935159, 37.809415519427169 ], [ -122.409110985426068, 37.809403527969394 ], [ -122.409076465338302, 37.809407520079958 ], [ -122.409053670177968, 37.809396214762678 ], [ -122.409027819488273, 37.809400753529559 ], [ -122.409005024337446, 37.809389448202872 ], [ -122.408973965091334, 37.809393384540734 ], [ -122.408951169258785, 37.809382079214799 ], [ -122.40891837994225, 37.80938604354025 ], [ -122.408895584120444, 37.809374738203552 ], [ -122.408862794804193, 37.809378702513534 ], [ -122.408839998993102, 37.809367397166127 ], [ -122.408808940093522, 37.809371333454934 ], [ -122.408786144638981, 37.809360028091476 ], [ -122.408756815463747, 37.809363936372364 ], [ -122.4087340203655, 37.80935263099321 ], [ -122.408701230358204, 37.809356595269499 ], [ -122.408678435270645, 37.809345289879595 ], [ -122.408645645263661, 37.809349254140457 ], [ -122.408622850186802, 37.809337948739781 ], [ -122.408591790941983, 37.809341884977052 ], [ -122.408568995183444, 37.809330579577171 ], [ -122.408536205869268, 37.809334543796403 ], [ -122.408513410121444, 37.809323238385751 ], [ -122.408482351223043, 37.809327174588631 ], [ -122.408459555831755, 37.809315869161935 ], [ -122.408426766172141, 37.809319833356362 ], [ -122.408403970791582, 37.809308527918944 ], [ -122.408371181132239, 37.809312492097938 ], [ -122.408350116177374, 37.809301158650754 ], [ -122.408315578458229, 37.809304464375806 ], [ -122.408292783099327, 37.809293158916844 ], [ -122.408263471569185, 37.80929775351261 ], [ -122.408240676566351, 37.80928644803798 ], [ -122.408207886561954, 37.809290412177198 ], [ -122.408185073925949, 37.809278420254287 ], [ -122.408155762741032, 37.809283014817716 ], [ -122.408132967413039, 37.809271709327838 ], [ -122.408100177755486, 37.809275673431507 ], [ -122.408077382438208, 37.809264367930865 ], [ -122.408039154542493, 37.809258805877114 ], [ -122.408058756181504, 37.809145866471148 ], [ -122.408066594168815, 37.809248747837302 ], [ -122.408087429706811, 37.809251157647353 ], [ -122.408126507222988, 37.809155071214583 ], [ -122.408120448716886, 37.809256117235002 ], [ -122.408137823084502, 37.809258583032992 ], [ -122.408178631290198, 37.80916246830698 ], [ -122.408172554871641, 37.809262828172606 ], [ -122.408196869235468, 37.809265868402413 ], [ -122.408235946617765, 37.809169781933626 ], [ -122.408229888259399, 37.809270827959395 ], [ -122.408254202289157, 37.809273868457552 ], [ -122.408293279587355, 37.809177781420765 ], [ -122.408287221320464, 37.809278827998476 ], [ -122.408308056867014, 37.809281237494979 ], [ -122.408347134113498, 37.809185150989656 ], [ -122.408332158807269, 37.809276040458201 ], [ -122.408356702573101, 37.809288004342378 ], [ -122.408397510165557, 37.809191889546774 ], [ -122.408391452032305, 37.809292935854977 ], [ -122.408412287593251, 37.809295345607659 ], [ -122.408453095124827, 37.809199231067545 ], [ -122.408447037059574, 37.809300277103894 ], [ -122.408471350761801, 37.809303317562879 ], [ -122.408512158553279, 37.809207202447709 ], [ -122.408506100235769, 37.809308249041685 ], [ -122.408521727251397, 37.8093100560612 ], [ -122.408560804236558, 37.809213969485583 ], [ -122.408554745970605, 37.809315015532796 ], [ -122.408577329958945, 37.809318083960704 ], [ -122.408618119627377, 37.809221282377308 ], [ -122.40861206179197, 37.80932232869629 ], [ -122.408636375847209, 37.809325368841058 ], [ -122.408677182759092, 37.809229254229557 ], [ -122.408671125342451, 37.80933030027127 ], [ -122.40868850009889, 37.809332766257086 ], [ -122.408727576866028, 37.809236679077507 ], [ -122.408721501183379, 37.80933703897 ], [ -122.408740606697776, 37.80933947666351 ], [ -122.408781413482515, 37.80924336201619 ], [ -122.408775356206561, 37.809344408062977 ], [ -122.40879620945104, 37.809347504459829 ], [ -122.408837016154081, 37.809251389244281 ], [ -122.408830941310313, 37.809351749130926 ], [ -122.408848316070006, 37.809354214818633 ], [ -122.4088891230695, 37.809258100128716 ], [ -122.40888306559286, 37.80935914618636 ], [ -122.408902170426074, 37.809361583864899 ], [ -122.408942977698928, 37.809265468876312 ], [ -122.408936919955934, 37.809366515216752 ], [ -122.408959503968703, 37.809369583296906 ], [ -122.408998562767209, 37.809272810139959 ], [ -122.408992505092215, 37.809373856208545 ], [ -122.409013358354017, 37.809376952566957 ], [ -122.409054147832379, 37.809280150828236 ], [ -122.409048090239509, 37.809381197174098 ], [ -122.409070674261315, 37.809384265232971 ], [ -122.409109750575112, 37.809288178476827 ], [ -122.40910369305017, 37.809389224550813 ], [ -122.409122798597593, 37.809391662456981 ], [ -122.409161857180791, 37.809294888697217 ], [ -122.409155800079347, 37.809395935042737 ], [ -122.409180113834879, 37.809398975080981 ], [ -122.409220920775525, 37.809302860271487 ], [ -122.409214863400692, 37.809403906350916 ], [ -122.409233968955562, 37.809406344239079 ], [ -122.409273045055528, 37.809310256880117 ], [ -122.409266988111227, 37.80941130350562 ], [ -122.40929130186926, 37.809414343246381 ], [ -122.409332108667385, 37.80931822812412 ], [ -122.409326033795196, 37.809418588046228 ], [ -122.409343408940103, 37.809421053929945 ], [ -122.40938421532131, 37.809324938520824 ], [ -122.409378158527119, 37.809425985151776 ], [ -122.40939901180549, 37.809429080892826 ], [ -122.409438070062492, 37.809332307591447 ], [ -122.409432013326835, 37.809433353675857 ], [ -122.409477180743622, 37.809439489653357 ], [ -122.409529287502835, 37.809446200260403 ], [ -122.409588351243272, 37.809454171101315 ], [ -122.40962830977378, 37.809459704635067 ], [ -122.409632794735771, 37.809432163090825 ], [ -122.409672911837845, 37.809443874825128 ], [ -122.409782563727632, 37.809399522210484 ], [ -122.409759009148317, 37.809358700227392 ], [ -122.409646479104083, 37.809089266648215 ], [ -122.409583548723262, 37.809065563811615 ], [ -122.409522825494292, 37.80906036618412 ], [ -122.409518181262428, 37.809081729795679 ], [ -122.409495386134864, 37.809070424563046 ], [ -122.409466075113144, 37.809075019452258 ], [ -122.409443262001091, 37.809063028052371 ], [ -122.409410472498593, 37.80906699224586 ], [ -122.409387677045885, 37.809055686998015 ], [ -122.409356617959673, 37.80905962343688 ], [ -122.409333822524488, 37.809048318453144 ], [ -122.409299302613846, 37.809052310629191 ], [ -122.40927823759111, 37.809040977347202 ], [ -122.409247178159163, 37.809044913762847 ], [ -122.409226113153551, 37.80903358074611 ], [ -122.409193341651701, 37.809038231311064 ], [ -122.409172276649144, 37.80902689801011 ], [ -122.409141217563558, 37.809030834392281 ], [ -122.409118422162948, 37.809019529092303 ], [ -122.409083884609018, 37.809022835042484 ], [ -122.409061089219591, 37.809011529731414 ], [ -122.409026569318456, 37.809015522102243 ], [ -122.409005504354852, 37.809004189046036 ], [ -122.408972714854954, 37.80900815311788 ], [ -122.408949919486972, 37.808996847785302 ], [ -122.408918860402167, 37.809000784108946 ], [ -122.408896065051678, 37.808989479040513 ], [ -122.408865005613961, 37.808993415081005 ], [ -122.408842210612988, 37.80898210972196 ], [ -122.408807673071223, 37.808985415865877 ], [ -122.408784877735343, 37.808974110501353 ], [ -122.408753818298166, 37.808978046512571 ], [ -122.408732753379752, 37.808966713133003 ], [ -122.40870344269787, 37.808971307827179 ], [ -122.408680647389247, 37.80896000271705 ], [ -122.408653066760635, 37.80896456912587 ], [ -122.408630271454712, 37.808953263731418 ], [ -122.408595751557471, 37.808957255976196 ], [ -122.408574686669112, 37.808945922568363 ], [ -122.40853841837243, 37.808949256366759 ], [ -122.4085173534951, 37.808937922948687 ], [ -122.408484564351539, 37.808941887153871 ], [ -122.408461768739215, 37.80893058200698 ], [ -122.408432440401654, 37.808934489921761 ], [ -122.408409645138534, 37.808923184484605 ], [ -122.408375125243424, 37.808927176664845 ], [ -122.408354060404321, 37.808915843492116 ], [ -122.408319522857553, 37.808919148943978 ], [ -122.408296727616332, 37.808907843484988 ], [ -122.408265686178666, 37.808912466074247 ], [ -122.408242890954767, 37.808901160879408 ], [ -122.408208353409876, 37.808904466298728 ], [ -122.408185558190112, 37.808893160818222 ], [ -122.408154499115199, 37.808897097215251 ], [ -122.40813170390588, 37.808885791724293 ], [ -122.40810064447102, 37.808889727563603 ], [ -122.408077849618252, 37.808878422056637 ], [ -122.408048538584595, 37.808883016593732 ], [ -122.408027473807891, 37.80887168336259 ], [ -122.407989475110696, 37.808875044711961 ], [ -122.407968410338185, 37.808863711195677 ], [ -122.40793908201519, 37.808867619537004 ], [ -122.407916286847737, 37.808856314004366 ], [ -122.407867659098386, 37.808850233137854 ], [ -122.407892470076433, 37.808737895932389 ], [ -122.407895080955839, 37.808839488699526 ], [ -122.407919412118858, 37.808843215435566 ], [ -122.407965428881198, 37.808747703240833 ], [ -122.407954143699186, 37.808847460639832 ], [ -122.407971518664866, 37.808849926725884 ], [ -122.408015804954957, 37.808754442230494 ], [ -122.408004537488765, 37.808854886346353 ], [ -122.408030581417677, 37.80885789835331 ], [ -122.408074867989683, 37.808762414104869 ], [ -122.408063600595128, 37.808862857951631 ], [ -122.408080957579173, 37.808864637589593 ], [ -122.408126991783163, 37.808769811495232 ], [ -122.408115706821903, 37.808869569183827 ], [ -122.408134811496907, 37.808872006712299 ], [ -122.408175637137717, 37.80877657841792 ], [ -122.408167830687617, 37.808876966281417 ], [ -122.408188666131636, 37.808879376348344 ], [ -122.408234682562991, 37.808783863774664 ], [ -122.40822341538842, 37.808884307910851 ], [ -122.4082459985258, 37.808887375864508 ], [ -122.408292014895409, 37.808791863543163 ], [ -122.408280730145464, 37.80889162097256 ], [ -122.408299853182712, 37.808894745449784 ], [ -122.408345869480527, 37.808799232832989 ], [ -122.408334584808884, 37.808898990541991 ], [ -122.40835716795533, 37.808902058474338 ], [ -122.408401454133696, 37.808806574104075 ], [ -122.408390187174248, 37.808907017981177 ], [ -122.408412770332475, 37.808910086177463 ], [ -122.408457056451198, 37.808814602061034 ], [ -122.408447501979367, 37.808914331510991 ], [ -122.408464876962967, 37.808916796975197 ], [ -122.408510893069277, 37.808821284568992 ], [ -122.408499626255633, 37.808921728456291 ], [ -122.408520461722972, 37.808924138464597 ], [ -122.408564747351377, 37.808828653764436 ], [ -122.408553480616533, 37.808929097931319 ], [ -122.40857606412726, 37.808932165816167 ], [ -122.408622080100045, 37.808836653366868 ], [ -122.408610795786757, 37.808936410826988 ], [ -122.408633379309109, 37.808939478975418 ], [ -122.408677664815599, 37.808843994782293 ], [ -122.408666398217051, 37.808944438410528 ], [ -122.408683754881451, 37.808946217690789 ], [ -122.408728058314978, 37.808851419636184 ], [ -122.408718504202398, 37.808951149107379 ], [ -122.40873414881105, 37.808953643085459 ], [ -122.40878016458673, 37.808858130300308 ], [ -122.408768880489617, 37.80895788804974 ], [ -122.408788002858174, 37.808961011909815 ], [ -122.408832288517658, 37.808865527378856 ], [ -122.408822734543293, 37.808965256858244 ], [ -122.40884531843632, 37.808968325235043 ], [ -122.408891334078092, 37.80887281240679 ], [ -122.408880067778369, 37.808973256604034 ], [ -122.40889917250513, 37.808975694008623 ], [ -122.408943458030421, 37.808880209436197 ], [ -122.408933921854199, 37.808980625361755 ], [ -122.408953027290934, 37.808983063295585 ], [ -122.408997312398199, 37.808887578434081 ], [ -122.408987758995764, 37.808987308195377 ], [ -122.409008612134684, 37.808990404005712 ], [ -122.409052897181908, 37.808894919398057 ], [ -122.409041631090304, 37.808995363335725 ], [ -122.40906421464841, 37.808998431401648 ], [ -122.409110230041378, 37.808902919037678 ], [ -122.409098946373874, 37.809002676543273 ], [ -122.409121529583416, 37.809005744329234 ], [ -122.409165814840676, 37.808910259673837 ], [ -122.409154548899522, 37.809010703622 ], [ -122.409175384406026, 37.80901311324002 ], [ -122.4092196692594, 37.808917628844746 ], [ -122.409208385736662, 37.80901738636053 ], [ -122.409229238893218, 37.809020482131849 ], [ -122.409273523674656, 37.808924997441885 ], [ -122.4092622402232, 37.809024754962692 ], [ -122.40927961492774, 37.809027220861601 ], [ -122.409325630047334, 37.808931707864964 ], [ -122.409314364326178, 37.80903215210256 ], [ -122.409336947553612, 37.809035219847274 ], [ -122.409381232551411, 37.808939735111537 ], [ -122.409369949242404, 37.809039492642384 ], [ -122.409390802418955, 37.809042588659686 ], [ -122.409422921195898, 37.808945240701227 ], [ -122.409422903348997, 37.809011853140163 ], [ -122.40946679914822, 37.809035864508125 ], [ -122.409564019832658, 37.809046651478369 ], [ -122.409549629214183, 37.809025596054688 ], [ -122.409548887643922, 37.80899676568643 ], [ -122.409387695818651, 37.808719879048233 ], [ -122.409342422574227, 37.808709624416799 ], [ -122.409302270626966, 37.808696540242821 ], [ -122.409262612300481, 37.808769974638814 ], [ -122.409243366033195, 37.808762045524638 ], [ -122.409286290635848, 37.808681004303558 ], [ -122.409251523749987, 37.808675386616557 ], [ -122.409211865384634, 37.808748820995767 ], [ -122.409192619474325, 37.8087408918677 ], [ -122.409232277847408, 37.808667457220274 ], [ -122.409218046276052, 37.808652579691525 ], [ -122.409199082493714, 37.808655633568947 ], [ -122.409183155837965, 37.808642156922303 ], [ -122.409146746495978, 37.80863999940842 ], [ -122.409132550252011, 37.808626494744182 ], [ -122.409097906968512, 37.808625682074002 ], [ -122.409081980690672, 37.808612205682593 ], [ -122.409045571705349, 37.808610047857293 ], [ -122.409029645094293, 37.808596571464371 ], [ -122.40899498416762, 37.808595072051922 ], [ -122.408979057222851, 37.808581595657749 ], [ -122.408939170155094, 37.808578807372939 ], [ -122.408923243223967, 37.808565330971156 ], [ -122.40887636397639, 37.80855990894463 ], [ -122.408862167796897, 37.808546404247657 ], [ -122.40882402846016, 37.808544274635025 ], [ -122.408771338418944, 37.808649509314336 ], [ -122.408752144836185, 37.80864363943796 ], [ -122.408804834900437, 37.808538404767106 ], [ -122.408755995512777, 37.808524087565431 ], [ -122.40870503613472, 37.808629294204955 ], [ -122.408684130157809, 37.808624138753608 ], [ -122.408736802648747, 37.808518217400646 ], [ -122.408686214896832, 37.808503241742777 ], [ -122.408633542337299, 37.808609162798888 ], [ -122.40861434946801, 37.808603292888833 ], [ -122.408665291301503, 37.808497399575863 ], [ -122.408618182709631, 37.808483054307779 ], [ -122.408565527707552, 37.808589661496853 ], [ -122.408546334502589, 37.808583791581334 ], [ -122.408598989528059, 37.808477184400701 ], [ -122.408550150206281, 37.808462866564483 ], [ -122.408494192805264, 37.808575707944065 ], [ -122.408475017602044, 37.808570524448861 ], [ -122.408530957042373, 37.808456996920889 ], [ -122.408475143235307, 37.808440732021886 ], [ -122.408419203721877, 37.80855425952376 ], [ -122.408400010537662, 37.808548389584381 ], [ -122.40845594972285, 37.808434861822526 ], [ -122.408401884334964, 37.808419255320196 ], [ -122.408345944732787, 37.808532783062383 ], [ -122.408326768858856, 37.808527599554232 ], [ -122.408382691187029, 37.808413385377861 ], [ -122.408326877445205, 37.808397120408593 ], [ -122.40827095504342, 37.808511334558837 ], [ -122.408251779872415, 37.808506151027288 ], [ -122.408325818753553, 37.80835593442692 ], [ -122.408307261690325, 37.808307477072752 ], [ -122.408233773949888, 37.808277076846032 ], [ -122.408190831757594, 37.808290132648246 ], [ -122.408103813680896, 37.80847420912815 ], [ -122.408070707145512, 37.808465817066804 ], [ -122.408167524728952, 37.808258920751598 ], [ -122.408046540290897, 37.80819907276836 ], [ -122.408024204007958, 37.808205614634559 ], [ -122.407919104249203, 37.808427066268948 ], [ -122.407885997416685, 37.80841867443587 ], [ -122.407996041444051, 37.808187528721767 ], [ -122.407913795821727, 37.808153149917878 ], [ -122.407807565173499, 37.808397968053718 ], [ -122.407786659324017, 37.808392812443081 ], [ -122.407868398033912, 37.808205388267609 ], [ -122.407660185387385, 37.808254079991599 ], [ -122.407706584592447, 37.808375566178441 ], [ -122.407613672832028, 37.80839767070411 ], [ -122.407507720833991, 37.808114394328115 ], [ -122.407549056121539, 37.808106171825735 ], [ -122.407536061536263, 37.808072046122568 ], [ -122.407462591282297, 37.808042331588446 ], [ -122.40744611868692, 37.808007575403529 ], [ -122.407487420240358, 37.807930680888951 ], [ -122.407431324879042, 37.807903432764398 ], [ -122.407355431147764, 37.80804887173035 ], [ -122.406644940711814, 37.807817946705647 ], [ -122.406816836689401, 37.809994826134172 ], [ -122.406786252768356, 37.810017295716854 ], [ -122.40617819806161, 37.810068327706666 ], [ -122.406151660268563, 37.810046094760864 ], [ -122.406135997898389, 37.810042914277616 ], [ -122.406123656094778, 37.810034186621294 ], [ -122.405904441804637, 37.807159674056429 ], [ -122.405322208784199, 37.806866923600786 ], [ -122.404400300125417, 37.808853394598287 ], [ -122.404390181819835, 37.80886385881621 ], [ -122.404376497046869, 37.808870260285914 ], [ -122.404359263409262, 37.808873285169796 ], [ -122.404316325011152, 37.808819040682266 ], [ -122.403937477028578, 37.80876197892308 ], [ -122.403923457745378, 37.80875533773979 ], [ -122.403912828869224, 37.808745895483341 ], [ -122.403907320429198, 37.80873362312807 ], [ -122.403906985949291, 37.808720580801918 ], [ -122.404717282916977, 37.806971462592401 ], [ -122.403955936424254, 37.806579276399596 ], [ -122.402761932327437, 37.808014567794245 ], [ -122.402746534430648, 37.808021683436984 ], [ -122.402731014070881, 37.808023993997161 ], [ -122.402715370212889, 37.808021499491424 ], [ -122.40235585639897, 37.807840510524542 ], [ -122.402346922703828, 37.807829667068134 ], [ -122.402341415289797, 37.807817394901065 ], [ -122.402339367950134, 37.807805066923208 ], [ -122.402340764477955, 37.807791996673913 ], [ -122.402345656255733, 37.807780243491045 ], [ -122.403421726415289, 37.806471156550586 ], [ -122.402804368682325, 37.806023074735968 ], [ -122.400943288973451, 37.807638041928655 ], [ -122.40092780379058, 37.807641725129315 ], [ -122.400912142497489, 37.807638543945465 ], [ -122.400398744529411, 37.807261566606726 ], [ -122.400572958659495, 37.806120993590262 ], [ -122.401732349384048, 37.805192215433102 ], [ -122.403194419486127, 37.805118563841738 ], [ -122.403587277644846, 37.805412029499024 ], [ -122.404128809815958, 37.80582849738515 ], [ -122.404696069838451, 37.806264743038192 ], [ -122.405495723806581, 37.806640585378162 ], [ -122.405545441190654, 37.806634177056651 ], [ -122.405362337774832, 37.805695301990511 ], [ -122.405357241074242, 37.805695943874476 ], [ -122.405356257037084, 37.805690948342658 ], [ -122.405173536628851, 37.804763212222298 ], [ -122.404986245080067, 37.803832670552438 ], [ -122.404798316633176, 37.802900762043983 ], [ -122.40352117840483, 37.80305477917063 ], [ -122.40315960682554, 37.803098380641011 ], [ -122.402973676735002, 37.802166749844929 ], [ -122.402973611142329, 37.802166419353441 ], [ -122.402883459886269, 37.801713453423041 ], [ -122.402789664410264, 37.801242172237629 ], [ -122.402604124590809, 37.800307129616797 ], [ -122.402603736644934, 37.800305175692849 ], [ -122.402420666593613, 37.799382141273902 ], [ -122.402228639238132, 37.798429701815799 ], [ -122.402040983242472, 37.797504944420098 ], [ -122.401906946643678, 37.796875708196644 ], [ -122.401853390100442, 37.796626165074152 ], [ -122.402402444702886, 37.796554566975963 ], [ -122.40291796673857, 37.796490379340391 ], [ -122.403496709817034, 37.796417485859841 ], [ -122.404412160626791, 37.796302098196776 ], [ -122.405142977212691, 37.796210954635839 ], [ -122.405862652252878, 37.796122174218517 ], [ -122.406224736410849, 37.796077505131322 ], [ -122.406350669109713, 37.796061968858353 ], [ -122.406652352369846, 37.796024750165536 ], [ -122.407083680819795, 37.795970583772274 ], [ -122.407319877605971, 37.795940921047873 ], [ -122.407432089697608, 37.795926828732469 ], [ -122.407563768850565, 37.795910291726024 ], [ -122.40779730388941, 37.795880962818103 ], [ -122.408253202051654, 37.795823706218044 ], [ -122.408704654154022, 37.795766841471867 ], [ -122.408743234497422, 37.795761981540487 ], [ -122.409075520379659, 37.795720125786943 ], [ -122.409077868767497, 37.795719830108119 ], [ -122.409343544204319, 37.795686363949223 ], [ -122.40954722057397, 37.795660707190791 ], [ -122.40989875147848, 37.795616424537307 ], [ -122.411081667103218, 37.795467382264249 ], [ -122.411541226025591, 37.795408552082151 ], [ -122.411541229133036, 37.795408565216896 ], [ -122.411541531721369, 37.795408526524874 ], [ -122.411893657029495, 37.795363458292385 ], [ -122.412335878555311, 37.795306857217497 ], [ -122.413187771447625, 37.795197816725128 ], [ -122.414825631965456, 37.794988155997579 ], [ -122.415005455310151, 37.795877318912275 ], [ -122.415094279286492, 37.796316514471208 ], [ -122.415172033219093, 37.796700969266084 ], [ -122.41519297245145, 37.796804503853558 ], [ -122.415290513107706, 37.797286788953464 ], [ -122.415384105347158, 37.79774954140936 ], [ -122.415384693800732, 37.797752451808172 ], [ -122.415571551794869, 37.798676329254079 ], [ -122.415572319635913, 37.798680127283284 ], [ -122.415667503417794, 37.799150732537029 ], [ -122.41576151132729, 37.799616465113374 ], [ -122.416491256558686, 37.799525268171301 ], [ -122.417385454528372, 37.799413513042644 ], [ -122.417492539304973, 37.799906258247788 ], [ -122.417586974866069, 37.800340791478632 ], [ -122.417798642975782, 37.801267347943607 ], [ -122.41787748762404, 37.801706751150704 ], [ -122.417966229723234, 37.802201308768375 ], [ -122.418151092101994, 37.803135399210959 ], [ -122.418255886912107, 37.803650215613203 ], [ -122.418215611082957, 37.803687299847837 ], [ -122.418280954876565, 37.804023161939504 ], [ -122.418341342522965, 37.804070022432718 ], [ -122.418530631419571, 37.804999043218864 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":8,"ZIP_CODE":94109,"ID":94109},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.413915879652706, 37.790463115032836 ], [ -122.412266187164306, 37.790672783986288 ], [ -122.412154318600955, 37.79012444884593 ], [ -122.412075867445836, 37.789739906579548 ], [ -122.411885657146456, 37.788807543703371 ], [ -122.413541442066688, 37.788598204045492 ], [ -122.415185269301574, 37.788387930678724 ], [ -122.414995423274036, 37.787453843784689 ], [ -122.414806647966373, 37.786519819325378 ], [ -122.414617207572036, 37.785582474657787 ], [ -122.414430198422409, 37.784657140813145 ], [ -122.414241572919337, 37.783723783021379 ], [ -122.415882538254209, 37.783515640872785 ], [ -122.417528773439201, 37.78331088958533 ], [ -122.419181703937824, 37.783101400150407 ], [ -122.420816620257895, 37.78289417046458 ], [ -122.420817002825672, 37.782894121654586 ], [ -122.422463744273344, 37.782685368786026 ], [ -122.422597534917514, 37.782659914421728 ], [ -122.424108200948226, 37.782477051425644 ], [ -122.427396397680198, 37.782056939506091 ], [ -122.427490665181679, 37.782522998381459 ], [ -122.427584325166535, 37.78298604740867 ], [ -122.427778871361184, 37.783924735360486 ], [ -122.427988927379005, 37.784953879052303 ], [ -122.428148186422831, 37.785784488173462 ], [ -122.428241496400901, 37.78624657727314 ], [ -122.428241829261111, 37.786248226022003 ], [ -122.428335613076769, 37.786712655890966 ], [ -122.428525011003728, 37.78765056176524 ], [ -122.428712111452299, 37.788577067507021 ], [ -122.428905308896674, 37.789533740830485 ], [ -122.429092268257477, 37.790459499306614 ], [ -122.429269817037863, 37.791338636935983 ], [ -122.429447192175289, 37.79221689778025 ], [ -122.429625242377327, 37.793098475947545 ], [ -122.429803981887915, 37.793977244761322 ], [ -122.429989276973558, 37.794894937362344 ], [ -122.430182832162615, 37.795853517593606 ], [ -122.428537813517494, 37.796062892623418 ], [ -122.426892728667355, 37.796272251947869 ], [ -122.425249874473522, 37.79648130315109 ], [ -122.423601877370103, 37.796690947281171 ], [ -122.423601876988513, 37.796690945913937 ], [ -122.42360129621845, 37.796691056748735 ], [ -122.423601296960271, 37.796691058659476 ], [ -122.423792964234153, 37.797616581376253 ], [ -122.423793785438747, 37.7976164776058 ], [ -122.423982396975646, 37.798552421556877 ], [ -122.423982145098208, 37.798552453684835 ], [ -122.42417056430692, 37.799484532744323 ], [ -122.42417056511286, 37.799484537126212 ], [ -122.424242907462499, 37.799842398528341 ], [ -122.424358667137113, 37.800415027771606 ], [ -122.424517597070277, 37.801201189595353 ], [ -122.424538324517613, 37.801303719934985 ], [ -122.424731635083759, 37.802281009278651 ], [ -122.424731259133807, 37.802280983275736 ], [ -122.424808684502352, 37.802662664019884 ], [ -122.424918804152185, 37.803205508171892 ], [ -122.425109521046082, 37.804145845932808 ], [ -122.425204919000421, 37.804616199985951 ], [ -122.425298563577385, 37.80507790289635 ], [ -122.425486832357592, 37.806006120121552 ], [ -122.425487611207828, 37.806009959663712 ], [ -122.425531817297653, 37.806150610629167 ], [ -122.425627533230582, 37.806456787332273 ], [ -122.4257796482039, 37.806715259689653 ], [ -122.426066893674061, 37.80699787612533 ], [ -122.426256728575282, 37.807185221316665 ], [ -122.426357658303132, 37.807388412718332 ], [ -122.426488519796493, 37.807651861239542 ], [ -122.426560904719622, 37.807943556174827 ], [ -122.426613230594512, 37.808152010516238 ], [ -122.426749407153778, 37.80832970781308 ], [ -122.426815901093192, 37.808623913624309 ], [ -122.42681099272437, 37.808701593834883 ], [ -122.426830737473963, 37.808795352699491 ], [ -122.426826276753118, 37.808823581609779 ], [ -122.426828951398363, 37.808859934107588 ], [ -122.426829913470996, 37.808897001584555 ], [ -122.426829127336148, 37.808933411171161 ], [ -122.426830071586494, 37.80896979193826 ], [ -122.426848658020631, 37.809018932542891 ], [ -122.426823913850725, 37.809066034426849 ], [ -122.426821397293551, 37.809102471733105 ], [ -122.426817149990782, 37.809138937589218 ], [ -122.426811172632014, 37.809175431983689 ], [ -122.42680517743706, 37.809211239393754 ], [ -122.426799200066583, 37.80924773378711 ], [ -122.426791474798563, 37.809283569459971 ], [ -122.426783766999961, 37.80932009184702 ], [ -122.426764854928408, 37.809391820287793 ], [ -122.426753650652387, 37.809427026340984 ], [ -122.426742463842274, 37.809462919107801 ], [ -122.42673125988388, 37.809498124878161 ], [ -122.426718325162497, 37.809533359195932 ], [ -122.426703641860442, 37.809567935625843 ], [ -122.426690707106644, 37.80960316966555 ], [ -122.426674294047132, 37.809637774073536 ], [ -122.426659593228109, 37.809671663782375 ], [ -122.426641449382515, 37.809706296733168 ], [ -122.426624999956104, 37.809739528275571 ], [ -122.426606838595305, 37.809773474231129 ], [ -122.426586928644923, 37.809806762295736 ], [ -122.426568749097328, 37.809840022090548 ], [ -122.426547090883986, 37.809872652254199 ], [ -122.426527163066623, 37.80990525387346 ], [ -122.426505504455619, 37.809937883485567 ], [ -122.426482098287991, 37.809969855187106 ], [ -122.426435249574482, 37.810032425717694 ], [ -122.426410094762232, 37.810063739239673 ], [ -122.426384921777455, 37.810094366601653 ], [ -122.426359731637717, 37.810124306962969 ], [ -122.426305889769012, 37.810184245028879 ], [ -122.426277202393095, 37.810212869038814 ], [ -122.426248533505472, 37.810242179739554 ], [ -122.426219828627396, 37.810270117569488 ], [ -122.426165541280753, 37.810312894703067 ], [ -122.426148806543424, 37.810335143220563 ], [ -122.426077517869416, 37.810389871747489 ], [ -122.426029956191201, 37.810424984999884 ], [ -122.426004427087875, 37.810441883304833 ], [ -122.425978879818175, 37.810458095175186 ], [ -122.425953351037933, 37.810474993463338 ], [ -122.425902221511379, 37.810506044020848 ], [ -122.425874926298846, 37.810521597684627 ], [ -122.425847613267436, 37.810536464907365 ], [ -122.425792951557781, 37.810564826464294 ], [ -122.425738254193391, 37.810591815126337 ], [ -122.425709157251291, 37.810604651266786 ], [ -122.425621812948378, 37.810641100340696 ], [ -122.425563512153047, 37.810662654222938 ], [ -122.425532631291532, 37.810673458992433 ], [ -122.425501732623886, 37.810683577593657 ], [ -122.425472546238581, 37.810692981507543 ], [ -122.425441630096913, 37.810702413652621 ], [ -122.425410695451745, 37.810711159366136 ], [ -122.425348791232992, 37.810727278162595 ], [ -122.425317821646317, 37.810734650696368 ], [ -122.42528512127241, 37.810742051749649 ], [ -122.425254133532235, 37.81074873811216 ], [ -122.425221397542259, 37.810754766278279 ], [ -122.425190391643511, 37.810760766194903 ], [ -122.425157620386827, 37.810765421468112 ], [ -122.425124866580816, 37.810770763172656 ], [ -122.425093807273001, 37.810774704034145 ], [ -122.425028228777975, 37.810782641379291 ], [ -122.424962578393604, 37.810787833509224 ], [ -122.424931484149809, 37.810790400897922 ], [ -122.424898623523902, 37.810791623930832 ], [ -122.424876305744775, 37.810798855419677 ], [ -122.424848476260408, 37.810793815800935 ], [ -122.424819040922628, 37.810793609459935 ], [ -122.42478787514149, 37.810793431351755 ], [ -122.424758404216234, 37.810791852400563 ], [ -122.42472891548077, 37.810789586458021 ], [ -122.424699408618324, 37.810786634628094 ], [ -122.424640324731897, 37.810777984365998 ], [ -122.424610747039267, 37.810772286768845 ], [ -122.424582881984065, 37.810765873943147 ], [ -122.42455326835632, 37.810758803192932 ], [ -122.424525367734788, 37.810751018033073 ], [ -122.424497431514737, 37.810741859447681 ], [ -122.42447122609704, 37.810732672889145 ], [ -122.424443254308628, 37.810722141695749 ], [ -122.424406843510837, 37.810719989167595 ], [ -122.424404739729965, 37.810705601989262 ], [ -122.424392430564922, 37.810698249126709 ], [ -122.424380086492334, 37.810689522832604 ], [ -122.424367724289866, 37.810680110382542 ], [ -122.424357092185232, 37.810670669703008 ], [ -122.424346425188247, 37.810659856141378 ], [ -122.424337488288586, 37.810649014350894 ], [ -122.424328533252009, 37.810637486130467 ], [ -122.424321309004071, 37.810625929670387 ], [ -122.424315797750651, 37.810613658536091 ], [ -122.424310250566421, 37.810600014537307 ], [ -122.42430472117745, 37.810587056973155 ], [ -122.4243009222361, 37.810574071450297 ], [ -122.424298835580885, 37.810560370715905 ], [ -122.424298497510776, 37.810547328452351 ], [ -122.424299872431348, 37.810533571515215 ], [ -122.424301264798501, 37.810520501018615 ], [ -122.424304387263248, 37.810507402569137 ], [ -122.424309258634793, 37.810494961760924 ], [ -122.424315860102183, 37.810482492999512 ], [ -122.424324191657433, 37.810469996010013 ], [ -122.424332559488974, 37.810458871878474 ], [ -122.42434440529064, 37.810448377725301 ], [ -122.424354539139387, 37.810438598228359 ], [ -122.424368151310617, 37.810429448977779 ], [ -122.424380050823189, 37.810421013845534 ], [ -122.424395446797789, 37.810413895387818 ], [ -122.424410860570717, 37.810407463637567 ], [ -122.424426309569299, 37.810402404211651 ], [ -122.424441794853934, 37.810398717916826 ], [ -122.42445902802703, 37.810395690099803 ], [ -122.424474548198873, 37.810393376407241 ], [ -122.424495313410532, 37.810393037578869 ], [ -122.424512653696851, 37.810394128357849 ], [ -122.424528280984248, 37.810395933262043 ], [ -122.424545674311858, 37.810399083346539 ], [ -122.424561354987802, 37.810402947551076 ], [ -122.424577071263883, 37.810408184897881 ], [ -122.424591092706251, 37.810414823624235 ], [ -122.424605131932822, 37.810422148234672 ], [ -122.424619206768625, 37.810430846262342 ], [ -122.424631551158143, 37.810439571977035 ], [ -122.424642200368709, 37.810449699078426 ], [ -122.424652868070766, 37.810460512602432 ], [ -122.424661822790284, 37.810472040804292 ], [ -122.424669047076236, 37.810483597243831 ], [ -122.424676306964855, 37.810496526827265 ], [ -122.424683904979332, 37.810522498123575 ], [ -122.424685973208497, 37.810535512153116 ], [ -122.424686685078399, 37.810562969547746 ], [ -122.424688754001352, 37.810575983565833 ], [ -122.424694265313605, 37.810588254682798 ], [ -122.424703220408176, 37.810599783150167 ], [ -122.424713852193449, 37.810609223529688 ], [ -122.424727909273159, 37.81061723483468 ], [ -122.424743643057568, 37.81062315859959 ], [ -122.424759306354005, 37.810626336886287 ], [ -122.424774915898695, 37.810627455322866 ], [ -122.424844204676688, 37.810629071443891 ], [ -122.424883986990039, 37.810627735460123 ], [ -122.424942750746894, 37.810624029768022 ], [ -122.424970402172974, 37.810622204741975 ], [ -122.424999748098813, 37.810618978876803 ], [ -122.425029112521329, 37.810616439702436 ], [ -122.42505844098109, 37.810612527107622 ], [ -122.425086039005805, 37.810608643024629 ], [ -122.425115367473737, 37.810604730964819 ], [ -122.425142947684478, 37.810600160159147 ], [ -122.425172240190349, 37.810594874946659 ], [ -122.42519980259955, 37.810589617967473 ], [ -122.425229077987609, 37.810583646294816 ], [ -122.425311658363697, 37.810563756689383 ], [ -122.425339167350202, 37.810556440647844 ], [ -122.425394149679065, 37.810540434852271 ], [ -122.425449096383744, 37.810523056436082 ], [ -122.425474821139559, 37.810513709039498 ], [ -122.42550225886724, 37.810503646946287 ], [ -122.425553673774345, 37.810483579237776 ], [ -122.425579363239436, 37.810472858943186 ], [ -122.425656378173159, 37.810438638721514 ], [ -122.425680301215294, 37.81042657379389 ], [ -122.425705937577163, 37.810413794436336 ], [ -122.425729843135883, 37.81040104278366 ], [ -122.425777618636445, 37.81037416741794 ], [ -122.425799775930017, 37.810360757570926 ], [ -122.425823645502135, 37.810346633309891 ], [ -122.425845767517558, 37.810331850853636 ], [ -122.425869619617202, 37.810317040417416 ], [ -122.425891740915375, 37.81030225768918 ], [ -122.425912114318606, 37.810286817047619 ], [ -122.425934218490383, 37.810271348139892 ], [ -122.42595457407505, 37.810255221330763 ], [ -122.425976660073871, 37.81023906598594 ], [ -122.426033069704985, 37.810211362243855 ], [ -122.426044381296308, 37.810180274872565 ], [ -122.426071409213066, 37.810154424922551 ], [ -122.426098419287058, 37.810127887982347 ], [ -122.426123698921984, 37.810101379570156 ], [ -122.42617422251692, 37.810046989859728 ], [ -122.426197736051108, 37.810019136822319 ], [ -122.426222979645814, 37.809991255524551 ], [ -122.426244745255502, 37.809962744298282 ], [ -122.426268240925296, 37.809934204811682 ], [ -122.426289987997293, 37.809905007153375 ], [ -122.426310004983833, 37.8098758380223 ], [ -122.426331734895541, 37.809845953635381 ], [ -122.426350003264446, 37.809816126056347 ], [ -122.426370002384175, 37.809786270205322 ], [ -122.42640650446053, 37.80972524214534 ], [ -122.426423024539801, 37.809694756383479 ], [ -122.426439527484902, 37.809663584173109 ], [ -122.426456011918219, 37.809631725811407 ], [ -122.426470784413283, 37.809600581586317 ], [ -122.426485538743833, 37.809568751204715 ], [ -122.426498562648177, 37.809536949086315 ], [ -122.426511568735094, 37.809504460806153 ], [ -122.426524592609866, 37.809472658409931 ], [ -122.426535868255684, 37.809440198117713 ], [ -122.426547125731901, 37.809407051395155 ], [ -122.426556671294222, 37.80937461936086 ], [ -122.42657572607385, 37.809308382431155 ], [ -122.426583523043476, 37.809275292231341 ], [ -122.426589589599459, 37.809242230297407 ], [ -122.426597386209863, 37.809209140101942 ], [ -122.426601704881108, 37.809175419993217 ], [ -122.42660775360666, 37.809141671622967 ], [ -122.426612089737361, 37.809108637953877 ], [ -122.42661985311382, 37.809007562446936 ], [ -122.426622425964752, 37.808906571727555 ], [ -122.426632418849564, 37.808824688117525 ], [ -122.426616150524296, 37.80879817156422 ], [ -122.426607002185577, 37.808712480555535 ], [ -122.426596123115345, 37.808626817267942 ], [ -122.42658353220007, 37.808541869217166 ], [ -122.426569192751245, 37.808456262451642 ], [ -122.426553140769713, 37.808371370658513 ], [ -122.426535358440475, 37.808286507127633 ], [ -122.426521448780022, 37.808150762619441 ], [ -122.42648716178519, 37.808163683754294 ], [ -122.426478316482672, 37.808089661844356 ], [ -122.426472145992449, 37.808051992713068 ], [ -122.426465992974997, 37.808015010021762 ], [ -122.42645810959354, 37.807978055869093 ], [ -122.426450244018099, 37.807941787601465 ], [ -122.426431016184523, 37.807867935277343 ], [ -122.426421420613309, 37.807831695540209 ], [ -122.426410094332368, 37.807795484071661 ], [ -122.426383981060937, 37.807723117657737 ], [ -122.426370941909852, 37.807687620888885 ], [ -122.426356154936116, 37.8076514659409 ], [ -122.42634140359948, 37.807616683860772 ], [ -122.426324904443447, 37.807581243600652 ], [ -122.426289370917274, 37.807546114229226 ], [ -122.426116990256872, 37.807640950874436 ], [ -122.426004575599805, 37.807511622087709 ], [ -122.425948221432193, 37.807541385135394 ], [ -122.426072979790121, 37.807679439549148 ], [ -122.426043902201883, 37.807692962208542 ], [ -122.425788908967789, 37.807405954455511 ], [ -122.425811101339534, 37.807393917738004 ], [ -122.425841407866244, 37.807427759425885 ], [ -122.425860156968014, 37.807416465651144 ], [ -122.425910013941177, 37.807469902573231 ], [ -122.425894653990497, 37.807478394108394 ], [ -122.425932202930852, 37.807524478297722 ], [ -122.425969647726248, 37.80749983141159 ], [ -122.425933954139211, 37.807458524016887 ], [ -122.426097611558333, 37.807361083192824 ], [ -122.42613200511353, 37.807352281054179 ], [ -122.426091315966914, 37.80731860900228 ], [ -122.4260559073373, 37.80728828460429 ], [ -122.425981701022749, 37.807230438026032 ], [ -122.425942884837923, 37.807202229419872 ], [ -122.425865288869659, 37.807147185302298 ], [ -122.425824778720127, 37.807120377771732 ], [ -122.425784286059837, 37.807094256667916 ], [ -122.425743811226624, 37.807068821710658 ], [ -122.425659436564132, 37.807019381954113 ], [ -122.425575133216185, 37.806972687328404 ], [ -122.425531269042693, 37.806950055090923 ], [ -122.425487422692115, 37.806928108997688 ], [ -122.425396304969212, 37.806885646130702 ], [ -122.425305258549756, 37.806845928659463 ], [ -122.425259770989555, 37.806827443179728 ], [ -122.425212552741186, 37.806808985385324 ], [ -122.425165353022919, 37.806791214545072 ], [ -122.425118188573762, 37.806774816287508 ], [ -122.425069293788937, 37.80675844598079 ], [ -122.4250204168317, 37.806742762363598 ], [ -122.424973288049415, 37.806727737193157 ], [ -122.42492444672159, 37.806713426132198 ], [ -122.424873892869243, 37.806699830002309 ], [ -122.424802432493848, 37.806681081528858 ], [ -122.424772802670631, 37.806673324118421 ], [ -122.424744921357572, 37.806666225439869 ], [ -122.424689194317793, 37.806653400109965 ], [ -122.424659600807814, 37.806647015805055 ], [ -122.424631755098972, 37.806641289695882 ], [ -122.42460219684277, 37.806636278252959 ], [ -122.42457436893713, 37.806631238565636 ], [ -122.424544828483292, 37.806626913543731 ], [ -122.424517018379291, 37.806622560278207 ], [ -122.424487495380134, 37.806618921682983 ], [ -122.424428486015572, 37.806613017324239 ], [ -122.424398998964037, 37.806610751846591 ], [ -122.42437124224621, 37.806608457578399 ], [ -122.424341772644766, 37.806606878527504 ], [ -122.424282870046667, 37.806605092433877 ], [ -122.424224002349433, 37.806604679467583 ], [ -122.424165170926941, 37.806605639331515 ], [ -122.424135772832813, 37.80660680569077 ], [ -122.424077012229233, 37.806610511532789 ], [ -122.424018287184794, 37.806615589667317 ], [ -122.42398895989578, 37.806619501737501 ], [ -122.423959615506732, 37.806622727353634 ], [ -122.423932018904594, 37.806626611175993 ], [ -122.423873400581527, 37.806635808400436 ], [ -122.423845839538984, 37.806641064799031 ], [ -122.423816565594137, 37.806647036132823 ], [ -122.423789022338056, 37.806652979228197 ], [ -122.423759766870432, 37.806659637246682 ], [ -122.423706445903605, 37.806672867782268 ], [ -122.423653321266002, 37.806693649347707 ], [ -122.423589920527235, 37.806718718849552 ], [ -122.423526538222887, 37.806744474741464 ], [ -122.423399843925978, 37.80679873217619 ], [ -122.423338262626473, 37.806827205494514 ], [ -122.423215171014846, 37.806886897776501 ], [ -122.423155391052063, 37.806918088524029 ], [ -122.423095628820221, 37.806949965676615 ], [ -122.423037614673063, 37.806982501019867 ], [ -122.422979636035322, 37.807016409205524 ], [ -122.422923387701616, 37.807050289149693 ], [ -122.422867174874767, 37.807085541937973 ], [ -122.422807430162962, 37.807118105379153 ], [ -122.422669617719095, 37.80721100017012 ], [ -122.422538512716017, 37.807295544473774 ], [ -122.422410922154015, 37.807382091240839 ], [ -122.422406568873129, 37.807385156047935 ], [ -122.422285114644055, 37.807470669252126 ], [ -122.422159360151895, 37.8075613064347 ], [ -122.422037101638551, 37.807653259953362 ], [ -122.421916608736879, 37.807746558017001 ], [ -122.421799629592272, 37.807841858870269 ], [ -122.42168270310637, 37.807939218918449 ], [ -122.421532057745097, 37.808071464473507 ], [ -122.421789175548739, 37.808374241220797 ], [ -122.421758561641454, 37.808395342089796 ], [ -122.421493253559859, 37.808110553294661 ], [ -122.421324496714121, 37.808278803348081 ], [ -122.421367127445279, 37.808320685807196 ], [ -122.421400626951964, 37.808344175435167 ], [ -122.421417984134223, 37.808345953110788 ], [ -122.421538848573221, 37.808467594219884 ], [ -122.421521846706554, 37.808479545548913 ], [ -122.421585810928775, 37.808543055557919 ], [ -122.421558551068415, 37.808559981099798 ], [ -122.421494604621685, 37.808497157511823 ], [ -122.421482722503114, 37.808506278522707 ], [ -122.42136546133365, 37.808390072182092 ], [ -122.421343808401488, 37.808356088677073 ], [ -122.421300875659668, 37.808302536803509 ], [ -122.421061625998746, 37.808556401980894 ], [ -122.421102646347336, 37.808803641534986 ], [ -122.421495500883367, 37.809133737012722 ], [ -122.421447795704026, 37.809163356667042 ], [ -122.422886026597482, 37.810219448665336 ], [ -122.422843690020329, 37.8102558485987 ], [ -122.42136637775458, 37.809161249445332 ], [ -122.421209585435776, 37.809189899457976 ], [ -122.421035643651535, 37.808957186122555 ], [ -122.420944163231766, 37.808967603286121 ], [ -122.420910323787112, 37.808797159929568 ], [ -122.420858358549751, 37.808795946109164 ], [ -122.420717381312784, 37.80890056409217 ], [ -122.420760227934167, 37.809084595303112 ], [ -122.420694330112809, 37.809080174685604 ], [ -122.420677247269424, 37.809022081268409 ], [ -122.420415813879998, 37.809020844655912 ], [ -122.420359979289643, 37.809003898946663 ], [ -122.420384124514499, 37.808933459866985 ], [ -122.420668674045118, 37.808958355470025 ], [ -122.420635748727079, 37.808756307812423 ], [ -122.420540860637956, 37.808768840609403 ], [ -122.420461300526242, 37.808303163202581 ], [ -122.419223966222532, 37.808453096037454 ], [ -122.419086067910683, 37.807803117635643 ], [ -122.418908043871269, 37.806863030947284 ], [ -122.418856183917853, 37.806607498073362 ], [ -122.418781854642702, 37.806241248585302 ], [ -122.418781807492508, 37.806241018338142 ], [ -122.418718265666911, 37.805931520041717 ], [ -122.418530631419571, 37.804999043218864 ], [ -122.418341342522965, 37.804070022432718 ], [ -122.418280954876565, 37.804023161939504 ], [ -122.418215611082957, 37.803687299847837 ], [ -122.418255886912107, 37.803650215613203 ], [ -122.418151092101994, 37.803135399210959 ], [ -122.417966229723234, 37.802201308768375 ], [ -122.41787748762404, 37.801706751150704 ], [ -122.417798642975782, 37.801267347943607 ], [ -122.417586974866069, 37.800340791478632 ], [ -122.417492539304973, 37.799906258247788 ], [ -122.417385454528372, 37.799413513042644 ], [ -122.416491256558686, 37.799525268171301 ], [ -122.41576151132729, 37.799616465113374 ], [ -122.415667503417794, 37.799150732537029 ], [ -122.415572319635913, 37.798680127283284 ], [ -122.415571551794869, 37.798676329254079 ], [ -122.415384693800732, 37.797752451808172 ], [ -122.415384105347158, 37.79774954140936 ], [ -122.415290513107706, 37.797286788953464 ], [ -122.41519297245145, 37.796804503853558 ], [ -122.415172033219093, 37.796700969266084 ], [ -122.415094279286492, 37.796316514471208 ], [ -122.415005455310151, 37.795877318912275 ], [ -122.414825631965456, 37.794988155997579 ], [ -122.414647632176155, 37.794109807074861 ], [ -122.414470074462415, 37.79322314646798 ], [ -122.414381908270244, 37.792784070108439 ], [ -122.414293264567746, 37.792342610236801 ], [ -122.414107303557273, 37.79141647884336 ], [ -122.413915879652706, 37.790463115032836 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":9,"ZIP_CODE":94111,"ID":94111},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.400058259594957, 37.793693587424592 ], [ -122.400148778887171, 37.794134234665414 ], [ -122.400149325778898, 37.794134165695652 ], [ -122.401314504615144, 37.793987063215781 ], [ -122.402133431503088, 37.793883778773662 ], [ -122.40215951272063, 37.793880489466119 ], [ -122.402957360909014, 37.793779857671261 ], [ -122.40308689535884, 37.793763518993806 ], [ -122.404016114128936, 37.793646309359175 ], [ -122.404370134182003, 37.793598168205968 ], [ -122.404613421373455, 37.793565084338127 ], [ -122.404710582177955, 37.794021380197684 ], [ -122.404796472837063, 37.794453004909116 ], [ -122.404875610619072, 37.794859533373135 ], [ -122.404957208224928, 37.795326691921687 ], [ -122.405142977212691, 37.796210954635839 ], [ -122.404412160626791, 37.796302098196776 ], [ -122.403496709817034, 37.796417485859841 ], [ -122.40291796673857, 37.796490379340391 ], [ -122.402402444702886, 37.796554566975963 ], [ -122.401853390100442, 37.796626165074152 ], [ -122.401906946643678, 37.796875708196644 ], [ -122.402040983242472, 37.797504944420098 ], [ -122.402228639238132, 37.798429701815799 ], [ -122.402420666593613, 37.799382141273902 ], [ -122.402603736644934, 37.800305175692849 ], [ -122.402604124590809, 37.800307129616797 ], [ -122.402789664410264, 37.801242172237629 ], [ -122.402883459886269, 37.801713453423041 ], [ -122.402973611142329, 37.802166419353441 ], [ -122.402973676735002, 37.802166749844929 ], [ -122.40315960682554, 37.803098380641011 ], [ -122.40352117840483, 37.80305477917063 ], [ -122.404798316633176, 37.802900762043983 ], [ -122.404986245080067, 37.803832670552438 ], [ -122.405173536628851, 37.804763212222298 ], [ -122.405356257037084, 37.805690948342658 ], [ -122.405357241074242, 37.805695943874476 ], [ -122.405362337774832, 37.805695301990511 ], [ -122.405545441190654, 37.806634177056651 ], [ -122.405495723806581, 37.806640585378162 ], [ -122.404696069838451, 37.806264743038192 ], [ -122.404128809815958, 37.80582849738515 ], [ -122.403587277644846, 37.805412029499024 ], [ -122.403194419486127, 37.805118563841738 ], [ -122.401732349384048, 37.805192215433102 ], [ -122.400572958659495, 37.806120993590262 ], [ -122.400963593501643, 37.803563391134098 ], [ -122.400842454396695, 37.803429372376385 ], [ -122.400479886428016, 37.803466118528789 ], [ -122.398551197769294, 37.804602806142064 ], [ -122.398535712754665, 37.804606489036345 ], [ -122.398520052204233, 37.804603307533085 ], [ -122.398559631153262, 37.804526444219782 ], [ -122.398227927335071, 37.804281130126874 ], [ -122.398222420518948, 37.804268857764917 ], [ -122.398225564864617, 37.80425644615601 ], [ -122.399971727587683, 37.803225025895152 ], [ -122.399602741790233, 37.802807948916175 ], [ -122.397824683987196, 37.803810348092696 ], [ -122.397809199101829, 37.803814030892141 ], [ -122.397793538749667, 37.803810849291956 ], [ -122.397517150597622, 37.803494597437428 ], [ -122.397511661501127, 37.80348301148031 ], [ -122.3975148062854, 37.803470600157546 ], [ -122.399615259663278, 37.802282404799911 ], [ -122.39972332623249, 37.802176282179168 ], [ -122.399409670069147, 37.801824238674413 ], [ -122.399371692841143, 37.801828283680663 ], [ -122.399347556878283, 37.801832106025373 ], [ -122.399325151849467, 37.801835900487347 ], [ -122.399302764032285, 37.801840381390434 ], [ -122.39928039377223, 37.801845548729034 ], [ -122.399258040722614, 37.801851402508781 ], [ -122.399235705920944, 37.801857942712921 ], [ -122.399215101014406, 37.801864455053376 ], [ -122.399192800984025, 37.8018723684091 ], [ -122.399172231180287, 37.801880253347079 ], [ -122.399151696503523, 37.801889511710215 ], [ -122.397115576147101, 37.803021039584841 ], [ -122.397100091038084, 37.803024722022734 ], [ -122.397084431235825, 37.80302154059693 ], [ -122.396146888856933, 37.801962584949095 ], [ -122.396143112804936, 37.801950284664713 ], [ -122.396146275276891, 37.801938559540567 ], [ -122.396156183429241, 37.801919858733392 ], [ -122.398383194135846, 37.80067265166084 ], [ -122.398279805658603, 37.800555512940733 ], [ -122.397989357773142, 37.800230561089471 ], [ -122.395767421385884, 37.801472872307706 ], [ -122.395751936546873, 37.801476555118818 ], [ -122.395736277114864, 37.801473372963947 ], [ -122.395444597217249, 37.801167663046662 ], [ -122.395439108270097, 37.801156076993678 ], [ -122.395442253641278, 37.801143665440662 ], [ -122.397525741108808, 37.799970200398498 ], [ -122.397542727338319, 37.799957565794791 ], [ -122.397573204312565, 37.79993098020509 ], [ -122.397588407347527, 37.799916314120374 ], [ -122.397601862985724, 37.799900989703779 ], [ -122.397613588764841, 37.799885693121588 ], [ -122.397625296656045, 37.799869710378033 ], [ -122.397635256446222, 37.799853068765884 ], [ -122.397583045956239, 37.799774248814408 ], [ -122.397381692278955, 37.799548810060863 ], [ -122.397362923291766, 37.799559412884541 ], [ -122.397350478314067, 37.799546565387622 ], [ -122.39725607725606, 37.79944232919879 ], [ -122.396973022275191, 37.799609635784066 ], [ -122.396895724416169, 37.799632854304804 ], [ -122.396944532454214, 37.799578505110418 ], [ -122.39725156444139, 37.799401198172731 ], [ -122.397069823583166, 37.79919810547964 ], [ -122.39674205306757, 37.798834607866056 ], [ -122.396702784737215, 37.798855840868825 ], [ -122.396669034992286, 37.798822047566397 ], [ -122.396624664146429, 37.798846796498019 ], [ -122.396609180236553, 37.798850479143326 ], [ -122.396595251158345, 37.798847269554258 ], [ -122.396579311359616, 37.798833104740751 ], [ -122.395709347701867, 37.79933397933474 ], [ -122.395681634538477, 37.799401037179429 ], [ -122.395581007954107, 37.799459652414193 ], [ -122.395491073098484, 37.799462471471649 ], [ -122.39520444855259, 37.799625711063314 ], [ -122.394470973718072, 37.800049529845779 ], [ -122.394485183177821, 37.80006372301127 ], [ -122.394463863656298, 37.80011007561265 ], [ -122.394495883468409, 37.800143897322769 ], [ -122.394436254505337, 37.800181251519263 ], [ -122.394338714865782, 37.800157409688907 ], [ -122.39425176311174, 37.800073652886503 ], [ -122.394244541007424, 37.799994109133792 ], [ -122.39430588261277, 37.79995604107372 ], [ -122.39433954456824, 37.799986402561352 ], [ -122.394405256913004, 37.79998397351315 ], [ -122.394419466347642, 37.799998166686734 ], [ -122.395383240540369, 37.799442229567333 ], [ -122.3954446687179, 37.79940759283992 ], [ -122.395460481077649, 37.799348967284097 ], [ -122.395564480002861, 37.799286864055659 ], [ -122.395650954616428, 37.799284100562168 ], [ -122.396137291028239, 37.799011206820815 ], [ -122.39652596834469, 37.798777651667436 ], [ -122.396513506102295, 37.798764117365188 ], [ -122.396508017858096, 37.798752531345663 ], [ -122.396511162609784, 37.798740120038758 ], [ -122.396521298172757, 37.798730342643047 ], [ -122.396562296308161, 37.798709081605075 ], [ -122.396530276519627, 37.798675260441449 ], [ -122.396574647301449, 37.798650511819105 ], [ -122.396522999163949, 37.798593657491452 ], [ -122.396499841034597, 37.79856793447253 ], [ -122.396467423337157, 37.798586310883579 ], [ -122.396357190239343, 37.798472027219738 ], [ -122.396393032843889, 37.798452222590186 ], [ -122.395860656588496, 37.797870888391557 ], [ -122.395839947322898, 37.79787328122778 ], [ -122.395814065475506, 37.797876444215788 ], [ -122.395788200806479, 37.797880293644518 ], [ -122.395762353661098, 37.797884829508355 ], [ -122.395738254199486, 37.7978900242679 ], [ -122.395712442099452, 37.797895933002444 ], [ -122.395664348290325, 37.797910440317423 ], [ -122.395640318568425, 37.797918380825799 ], [ -122.395616307044421, 37.797927007209815 ], [ -122.39557006603053, 37.797946292034375 ], [ -122.395547836878862, 37.797956950195463 ], [ -122.395525625244971, 37.797968294793179 ], [ -122.395505143760289, 37.797979611576075 ], [ -122.393842000273821, 37.798938215357374 ], [ -122.393826533722603, 37.798942584352829 ], [ -122.39381087421539, 37.798939401951962 ], [ -122.393557994085199, 37.798661220282753 ], [ -122.393552505963697, 37.798649634131031 ], [ -122.393557381363038, 37.798637194571512 ], [ -122.395454327884067, 37.797548480176857 ], [ -122.395493853667872, 37.797469558194479 ], [ -122.395422650268614, 37.797392416327632 ], [ -122.395305000587612, 37.797394307309993 ], [ -122.395131013605095, 37.797494618186263 ], [ -122.394995545751499, 37.797340909474201 ], [ -122.395176347980751, 37.797236368651362 ], [ -122.395203657816268, 37.797153523030403 ], [ -122.395175134630833, 37.797121018758673 ], [ -122.395015962104765, 37.797123576784635 ], [ -122.394842063300572, 37.797227319439131 ], [ -122.394877471902745, 37.797258339703205 ], [ -122.393211663425149, 37.798247880172283 ], [ -122.393197909634068, 37.798251534593128 ], [ -122.393182250998592, 37.798248352371843 ], [ -122.392924377254829, 37.797977803222231 ], [ -122.392918871782612, 37.79796553059834 ], [ -122.392922034593937, 37.797953805551998 ], [ -122.392933760337485, 37.797938509440698 ], [ -122.393022573378389, 37.797891760094423 ], [ -122.393418332763261, 37.797664281733844 ], [ -122.39349443929828, 37.797594387482981 ], [ -122.393614723501102, 37.797492194551531 ], [ -122.39379620770903, 37.797346441866999 ], [ -122.393858891962495, 37.797293244534764 ], [ -122.39453577454303, 37.796890939592352 ], [ -122.394518070397197, 37.796875429409333 ], [ -122.394797677744066, 37.796708870398604 ], [ -122.394681926486655, 37.796581626428896 ], [ -122.394272580881463, 37.796818941592662 ], [ -122.39351702175675, 37.797258217667746 ], [ -122.39355080472113, 37.797293385033349 ], [ -122.39316857384685, 37.797508285701419 ], [ -122.393092042374221, 37.797425733952373 ], [ -122.393468994757654, 37.797207484670842 ], [ -122.393490421626595, 37.797233236341413 ], [ -122.39412658804784, 37.796863176781166 ], [ -122.393932453058198, 37.796648603921177 ], [ -122.393850369991199, 37.796687691964301 ], [ -122.393741908884792, 37.796574751186853 ], [ -122.393880385256736, 37.796507288896663 ], [ -122.393597295890373, 37.796198002709581 ], [ -122.393523863725633, 37.796236951615114 ], [ -122.393397437145097, 37.796098203833878 ], [ -122.393481197043371, 37.796057028727645 ], [ -122.393264277786542, 37.795831146645604 ], [ -122.39319930347132, 37.795862405337601 ], [ -122.393014017140644, 37.7956552428926 ], [ -122.39305487457618, 37.795628491529783 ], [ -122.392997761288825, 37.795560736430133 ], [ -122.392816418294032, 37.795643993697439 ], [ -122.391589731865537, 37.796205501614423 ], [ -122.391196361068637, 37.795779176166889 ], [ -122.39241116638668, 37.794819563891082 ], [ -122.39226709396803, 37.794667363398794 ], [ -122.391941265746169, 37.794853886332461 ], [ -122.391649609982679, 37.794547480215279 ], [ -122.391828732520565, 37.794445031825084 ], [ -122.391802064349278, 37.794417304057546 ], [ -122.391945361729881, 37.794335345459139 ], [ -122.391890260341384, 37.794278544568918 ], [ -122.392507683750154, 37.79377708635252 ], [ -122.39249932896719, 37.793768814133983 ], [ -122.392702063215523, 37.793608792659974 ], [ -122.39270797067924, 37.793614415765255 ], [ -122.394150899798674, 37.794987788593353 ], [ -122.394745701490038, 37.794478274267938 ], [ -122.394745733667804, 37.794478246556643 ], [ -122.394747579547172, 37.794479718347191 ], [ -122.394971722038662, 37.794300351169447 ], [ -122.395317307728533, 37.794023797689903 ], [ -122.39533276386878, 37.794011429145591 ], [ -122.395622922555773, 37.793779228585429 ], [ -122.395983670970253, 37.793501461560965 ], [ -122.396302004290646, 37.793256350429786 ], [ -122.396302004629632, 37.793256350149633 ], [ -122.396376076969489, 37.793198086984006 ], [ -122.396504486670068, 37.793097082520163 ], [ -122.39738344591872, 37.792405521295422 ], [ -122.397840810091907, 37.792047595331439 ], [ -122.39826444614279, 37.791716060417308 ], [ -122.398264448861653, 37.791716058450703 ], [ -122.399148598683425, 37.79101664916432 ], [ -122.39914859901539, 37.791016648609592 ], [ -122.399148705293825, 37.791016743863253 ], [ -122.399148704954868, 37.791016744143391 ], [ -122.399494165511513, 37.791324916192721 ], [ -122.399572029409299, 37.791326533708947 ], [ -122.399763353084495, 37.792257948007119 ], [ -122.399958735737897, 37.793209101900771 ], [ -122.400058259594957, 37.793693587424592 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":10,"ZIP_CODE":94104,"ID":94104},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.400067228055164, 37.790303858609981 ], [ -122.401375490979433, 37.789264321921429 ], [ -122.4018939793784, 37.788856309111516 ], [ -122.402065730098272, 37.788721152097366 ], [ -122.401960433993054, 37.788922171387867 ], [ -122.401997470431979, 37.789102650051042 ], [ -122.402189645264357, 37.790039096806382 ], [ -122.402532679537515, 37.789995540560724 ], [ -122.40273920526738, 37.789969317269424 ], [ -122.403841563913829, 37.789829338872408 ], [ -122.403934377264903, 37.790286026286218 ], [ -122.404030724679231, 37.790760095776051 ], [ -122.404219835191427, 37.791690583910508 ], [ -122.40441842761642, 37.79263865633952 ], [ -122.404613389070732, 37.793564931583006 ], [ -122.404613421373455, 37.793565084338127 ], [ -122.404370134182003, 37.793598168205968 ], [ -122.404016114128936, 37.793646309359175 ], [ -122.40308689535884, 37.793763518993806 ], [ -122.402957360909014, 37.793779857671261 ], [ -122.40215951272063, 37.793880489466119 ], [ -122.402133431503088, 37.793883778773662 ], [ -122.401314504615144, 37.793987063215781 ], [ -122.400149325778898, 37.794134165695652 ], [ -122.400148778887171, 37.794134234665414 ], [ -122.400058259594957, 37.793693587424592 ], [ -122.399958735737897, 37.793209101900771 ], [ -122.399763353084495, 37.792257948007119 ], [ -122.399572029409299, 37.791326533708947 ], [ -122.399494165511513, 37.791324916192721 ], [ -122.399148704954868, 37.791016744143391 ], [ -122.399148705293825, 37.791016743863253 ], [ -122.39914859901539, 37.791016648609592 ], [ -122.399222136170906, 37.790956214990921 ], [ -122.399480001759599, 37.790744297277485 ], [ -122.399919790020746, 37.790414442896498 ], [ -122.400024135710936, 37.790336179680637 ], [ -122.400067228055164, 37.790303858609981 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":11,"ZIP_CODE":94108,"ID":94108},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.404219835191427, 37.791690583910508 ], [ -122.404030724679231, 37.790760095776051 ], [ -122.403934377264903, 37.790286026286218 ], [ -122.403841563913829, 37.789829338872408 ], [ -122.40273920526738, 37.789969317269424 ], [ -122.402532679537515, 37.789995540560724 ], [ -122.402189645264357, 37.790039096806382 ], [ -122.401997470431979, 37.789102650051042 ], [ -122.401960433993054, 37.788922171387867 ], [ -122.402065730098272, 37.788721152097366 ], [ -122.402404665507532, 37.788463925757384 ], [ -122.402903089488873, 37.788085654318181 ], [ -122.40290309900054, 37.788085647297414 ], [ -122.403239953883428, 37.787802352067843 ], [ -122.403430800369534, 37.787641848645734 ], [ -122.403925775648347, 37.787250481113581 ], [ -122.404583316787637, 37.786730565897571 ], [ -122.404583317133643, 37.786730565891986 ], [ -122.404583317818549, 37.786730565606241 ], [ -122.4045836593057, 37.786730668317922 ], [ -122.404583659644615, 37.786730668037741 ], [ -122.404849901045083, 37.78680995410096 ], [ -122.405346079234604, 37.786747618574395 ], [ -122.40639887788349, 37.786615347203238 ], [ -122.408036236552462, 37.786409613336666 ], [ -122.408226725993813, 37.78735926231473 ], [ -122.408401550373739, 37.788293193957799 ], [ -122.408595045382015, 37.789225614946417 ], [ -122.408595692092703, 37.789225606675593 ], [ -122.410242438640608, 37.789016337723744 ], [ -122.411885657146456, 37.788807543703371 ], [ -122.412075867445836, 37.789739906579548 ], [ -122.412154318600955, 37.79012444884593 ], [ -122.412266187164306, 37.790672783986288 ], [ -122.413915879652706, 37.790463115032836 ], [ -122.414107303557273, 37.79141647884336 ], [ -122.414293264567746, 37.792342610236801 ], [ -122.414381908270244, 37.792784070108439 ], [ -122.414470074462415, 37.79322314646798 ], [ -122.414647632176155, 37.794109807074861 ], [ -122.414825631965456, 37.794988155997579 ], [ -122.413187771447625, 37.795197816725128 ], [ -122.412335878555311, 37.795306857217497 ], [ -122.411893657029495, 37.795363458292385 ], [ -122.411541531721369, 37.795408526524874 ], [ -122.411081667103218, 37.795467382264249 ], [ -122.40989875147848, 37.795616424537307 ], [ -122.40954722057397, 37.795660707190791 ], [ -122.409343544204319, 37.795686363949223 ], [ -122.409077868767497, 37.795719830108119 ], [ -122.409075520379659, 37.795720125786943 ], [ -122.408743234497422, 37.795761981540487 ], [ -122.408704654154022, 37.795766841471867 ], [ -122.408253202051654, 37.795823706218044 ], [ -122.40779730388941, 37.795880962818103 ], [ -122.407563768850565, 37.795910291726024 ], [ -122.407432089697608, 37.795926828732469 ], [ -122.407319877605971, 37.795940921047873 ], [ -122.407083680819795, 37.795970583772274 ], [ -122.406652352369846, 37.796024750165536 ], [ -122.406350669109713, 37.796061968858353 ], [ -122.406224736410849, 37.796077505131322 ], [ -122.405862652252878, 37.796122174218517 ], [ -122.405142977212691, 37.796210954635839 ], [ -122.404957208224928, 37.795326691921687 ], [ -122.404875610619072, 37.794859533373135 ], [ -122.404796472837063, 37.794453004909116 ], [ -122.404710582177955, 37.794021380197684 ], [ -122.404613421373455, 37.793565084338127 ], [ -122.404613389070732, 37.793564931583006 ], [ -122.40441842761642, 37.79263865633952 ], [ -122.404219835191427, 37.791690583910508 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":12,"ZIP_CODE":94103,"ID":94103},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.403877699904385, 37.770062866265505 ], [ -122.403615112128733, 37.769893190404822 ], [ -122.403406518421917, 37.769807099957397 ], [ -122.403037758616776, 37.769828657390953 ], [ -122.402926809989424, 37.76864812762463 ], [ -122.401962350744, 37.768706209224241 ], [ -122.401842503677628, 37.76743077711658 ], [ -122.400877239583821, 37.76748837440357 ], [ -122.400680751363893, 37.767503407870436 ], [ -122.4004285874814, 37.76730030349627 ], [ -122.399677637243116, 37.766695444602661 ], [ -122.39980174760619, 37.766587745781216 ], [ -122.399760960198876, 37.766250252443854 ], [ -122.40075504647362, 37.766190486570189 ], [ -122.401720515816834, 37.766132520250999 ], [ -122.401604204317508, 37.764894634517518 ], [ -122.401598999326723, 37.764839236400867 ], [ -122.402563396844656, 37.764781034314389 ], [ -122.403527034519726, 37.764722870371436 ], [ -122.404496977488066, 37.764664317561468 ], [ -122.404841911264157, 37.764643492872132 ], [ -122.405089602982216, 37.764628538373131 ], [ -122.405089603673972, 37.764628538361961 ], [ -122.405463420216606, 37.764605967981389 ], [ -122.406005237363416, 37.764573252226405 ], [ -122.406429152848446, 37.764547653527842 ], [ -122.406429154577822, 37.764547653499882 ], [ -122.406859230067056, 37.764521681123377 ], [ -122.407419737953433, 37.764487829924626 ], [ -122.407534229395537, 37.765783299286987 ], [ -122.408544242939584, 37.765722599679115 ], [ -122.410486689274492, 37.765605838622655 ], [ -122.411455262151748, 37.765547605227276 ], [ -122.412416426589019, 37.765489809283601 ], [ -122.413105243007919, 37.765447608576679 ], [ -122.415308388038014, 37.765314639624691 ], [ -122.416387522888556, 37.765249494040667 ], [ -122.41748659577631, 37.765183134636899 ], [ -122.418579138459435, 37.765117159398407 ], [ -122.418698425401715, 37.765109955145007 ], [ -122.419668972681833, 37.765051337054757 ], [ -122.420482492120144, 37.765002197009743 ], [ -122.420580607922048, 37.764996270018614 ], [ -122.420901270224292, 37.764976898858535 ], [ -122.421239593012103, 37.764956459387825 ], [ -122.421381475659516, 37.764947887797014 ], [ -122.421886445840627, 37.764917378530825 ], [ -122.42285341443899, 37.764858950163855 ], [ -122.423112421134832, 37.764843298770074 ], [ -122.424102683503691, 37.764783452170008 ], [ -122.424574375550648, 37.764754942537614 ], [ -122.426381062356072, 37.764645726997848 ], [ -122.426381062758907, 37.764645729188807 ], [ -122.426381708477521, 37.764645690891633 ], [ -122.426490697526233, 37.765773605772118 ], [ -122.426518991136163, 37.766066400051031 ], [ -122.426538465047457, 37.766267922745747 ], [ -122.426572006355102, 37.766615035704866 ], [ -122.426615944414863, 37.767069730096857 ], [ -122.426693183296933, 37.76786901846797 ], [ -122.426693183304053, 37.767869018742559 ], [ -122.426902347012131, 37.769049368265463 ], [ -122.426309438735913, 37.769602597220121 ], [ -122.424852598682307, 37.770747745074537 ], [ -122.423971653706317, 37.771401668385572 ], [ -122.423707555870649, 37.771638138620823 ], [ -122.42361952356508, 37.771716961429995 ], [ -122.423479344850293, 37.771827141530693 ], [ -122.423258913662679, 37.772000399157754 ], [ -122.422619690282815, 37.772502817311128 ], [ -122.422169936976104, 37.77285593639396 ], [ -122.421941247178026, 37.773036050819961 ], [ -122.421284370393934, 37.77356039048216 ], [ -122.421008229272687, 37.773780811646674 ], [ -122.420910608715644, 37.773852419132908 ], [ -122.420699239041511, 37.774007568561714 ], [ -122.420698854806645, 37.774007872313192 ], [ -122.42069877383058, 37.774007805509001 ], [ -122.420254278900828, 37.774358674888319 ], [ -122.420254205644639, 37.774358732668077 ], [ -122.419544527888206, 37.774918988504218 ], [ -122.419256088091217, 37.775146694295351 ], [ -122.419256086565611, 37.775146688826375 ], [ -122.419255604623004, 37.775147068879761 ], [ -122.419255606501622, 37.775147074617692 ], [ -122.419255600381447, 37.775147078837719 ], [ -122.418683590110874, 37.775586568849455 ], [ -122.417757669457401, 37.776334062520824 ], [ -122.417501462863584, 37.776540893581355 ], [ -122.416757677810395, 37.777126789723972 ], [ -122.416291701725271, 37.777493842582118 ], [ -122.416291701393504, 37.777493843136881 ], [ -122.416024573316548, 37.777713893977598 ], [ -122.415925978170975, 37.777795112873314 ], [ -122.414741221622947, 37.778719429321896 ], [ -122.412512255967954, 37.78047851222005 ], [ -122.412243715889375, 37.780689421480552 ], [ -122.411972359306191, 37.780902540886757 ], [ -122.411972358960256, 37.78090254089237 ], [ -122.411625130786987, 37.781189627190479 ], [ -122.410716598656492, 37.781899054565059 ], [ -122.410292026384454, 37.782230575136197 ], [ -122.40895215871069, 37.783287852576514 ], [ -122.408597310055299, 37.783569788681966 ], [ -122.408066548174432, 37.783991486066526 ], [ -122.408066547510714, 37.783991487176031 ], [ -122.407625723544982, 37.784337071806426 ], [ -122.406821367207598, 37.78496763543707 ], [ -122.405831011063668, 37.78574398921409 ], [ -122.405371564397683, 37.786107287119592 ], [ -122.404583317818549, 37.786730565606241 ], [ -122.404583317133643, 37.786730565891986 ], [ -122.404583316787637, 37.786730565897571 ], [ -122.403925775648347, 37.787250481113581 ], [ -122.403430800369534, 37.787641848645734 ], [ -122.403342641535644, 37.787274627660381 ], [ -122.403028734856406, 37.78702485040828 ], [ -122.403028193190352, 37.787024418822838 ], [ -122.402575227394536, 37.786678208153539 ], [ -122.402025419766176, 37.786248152290575 ], [ -122.401489835489045, 37.785829214187501 ], [ -122.401480059865179, 37.785821567351917 ], [ -122.400998469557948, 37.785444857061968 ], [ -122.400994549885382, 37.785441790992316 ], [ -122.400468483886854, 37.785030285141588 ], [ -122.399369533643153, 37.785899247741973 ], [ -122.397811613142864, 37.784666586003652 ], [ -122.398930331092998, 37.783784933304034 ], [ -122.399891477967842, 37.783025880124256 ], [ -122.400019020063766, 37.782925153640136 ], [ -122.400374366843309, 37.782644515545172 ], [ -122.401159718585049, 37.782024266952142 ], [ -122.403387209275081, 37.78026497235011 ], [ -122.404431250807633, 37.779440334605447 ], [ -122.405615266425855, 37.778505104539292 ], [ -122.405068508898097, 37.778068981419388 ], [ -122.404605505853894, 37.777699659794813 ], [ -122.404070256642925, 37.777272702482797 ], [ -122.403673439982725, 37.776956165214415 ], [ -122.403505778866929, 37.776822422431877 ], [ -122.40337073826143, 37.776714700215486 ], [ -122.402524096584528, 37.776039321403807 ], [ -122.400981567656032, 37.774808775969753 ], [ -122.400592319049849, 37.774498244536282 ], [ -122.400212340771517, 37.774195105423317 ], [ -122.400212340411557, 37.77419510487973 ], [ -122.399433130909728, 37.773573455617395 ], [ -122.401656680421155, 37.7718171255028 ], [ -122.403877699904385, 37.770062866265505 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":13,"ZIP_CODE":94115,"ID":94115},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.447679208068394, 37.79170289872647 ], [ -122.44720637942703, 37.791763091830468 ], [ -122.446299547924625, 37.791878529215651 ], [ -122.446299573716246, 37.791878694429421 ], [ -122.446446033268856, 37.792810866507708 ], [ -122.446446456540414, 37.792813716046261 ], [ -122.446587034424141, 37.793765298555968 ], [ -122.445035345747925, 37.79396273368863 ], [ -122.443384198876302, 37.794172877898092 ], [ -122.441712771485612, 37.794385578392699 ], [ -122.440870170501768, 37.794492795601883 ], [ -122.440868123190498, 37.794493055920753 ], [ -122.440045216960385, 37.794597761146619 ], [ -122.438402484723895, 37.794806973138577 ], [ -122.436760975027326, 37.795016021968365 ], [ -122.435113289920963, 37.795225833115033 ], [ -122.433469062960725, 37.795435179810816 ], [ -122.431827832563371, 37.79564412085616 ], [ -122.430182832162615, 37.795853517593606 ], [ -122.429989276973558, 37.794894937362344 ], [ -122.429803981887915, 37.793977244761322 ], [ -122.429625242377327, 37.793098475947545 ], [ -122.429447192175289, 37.79221689778025 ], [ -122.429269817037863, 37.791338636935983 ], [ -122.429092268257477, 37.790459499306614 ], [ -122.428905308896674, 37.789533740830485 ], [ -122.428712111452299, 37.788577067507021 ], [ -122.428525011003728, 37.78765056176524 ], [ -122.428335613076769, 37.786712655890966 ], [ -122.428241829261111, 37.786248226022003 ], [ -122.428241496400901, 37.78624657727314 ], [ -122.428148186422831, 37.785784488173462 ], [ -122.427988927379005, 37.784953879052303 ], [ -122.427778871361184, 37.783924735360486 ], [ -122.427584325166535, 37.78298604740867 ], [ -122.427490665181679, 37.782522998381459 ], [ -122.427396397680198, 37.782056939506091 ], [ -122.42720275579525, 37.781117127328834 ], [ -122.427016756808811, 37.780193030481158 ], [ -122.42868554474839, 37.779980201690215 ], [ -122.430233236584385, 37.779782794230314 ], [ -122.431951802315041, 37.779564148987781 ], [ -122.433595938040227, 37.779354585436536 ], [ -122.435241012398947, 37.779144878458894 ], [ -122.436884629197735, 37.778937753600381 ], [ -122.437707163233824, 37.778832380147421 ], [ -122.43855227772093, 37.778724107938281 ], [ -122.440213334218711, 37.778511463388014 ], [ -122.441865640580161, 37.778299553615973 ], [ -122.441865640558632, 37.778299552792262 ], [ -122.441865967212379, 37.778299511152262 ], [ -122.441865967226732, 37.778299511701405 ], [ -122.443506919728407, 37.778089213415292 ], [ -122.445155752336433, 37.777886506805444 ], [ -122.446846469920573, 37.777669108909684 ], [ -122.447039806751391, 37.778622307248391 ], [ -122.447351927163439, 37.780152061280916 ], [ -122.447517982733274, 37.781069510753063 ], [ -122.447576361567485, 37.781175778551805 ], [ -122.447655108274333, 37.781537309189886 ], [ -122.447637300982407, 37.781719177617617 ], [ -122.447450898997985, 37.782195217632704 ], [ -122.447301513844337, 37.78239164221629 ], [ -122.447283893261542, 37.782434393634787 ], [ -122.447225622636566, 37.782575775503396 ], [ -122.447173033991248, 37.782710075581413 ], [ -122.447149436147441, 37.783030677550911 ], [ -122.447549635601661, 37.784906798974511 ], [ -122.447578549915917, 37.784998355250835 ], [ -122.447620107068687, 37.785083635258417 ], [ -122.447621599012791, 37.785194684567394 ], [ -122.447605133356163, 37.785275579171099 ], [ -122.447533801639068, 37.785411415165207 ], [ -122.446849274413296, 37.786186897081585 ], [ -122.446738337622591, 37.786243163870765 ], [ -122.446610465639836, 37.786302298311156 ], [ -122.446792779960703, 37.787261853518181 ], [ -122.4469741664482, 37.788186460801001 ], [ -122.448656220796209, 37.787977164570449 ], [ -122.448835781299294, 37.788856511426609 ], [ -122.449011564525605, 37.789726786022129 ], [ -122.449189583391288, 37.790608108274284 ], [ -122.449367313308201, 37.791487980191171 ], [ -122.447679208068394, 37.79170289872647 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":14,"ZIP_CODE":94102,"ID":94102},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.419255600381447, 37.775147078837719 ], [ -122.419255606501622, 37.775147074617692 ], [ -122.419255604623004, 37.775147068879761 ], [ -122.419256086565611, 37.775146688826375 ], [ -122.419256088091217, 37.775146694295351 ], [ -122.419544527888206, 37.774918988504218 ], [ -122.420254205644639, 37.774358732668077 ], [ -122.420254278900828, 37.774358674888319 ], [ -122.42069877383058, 37.774007805509001 ], [ -122.420698854806645, 37.774007872313192 ], [ -122.420699239041511, 37.774007568561714 ], [ -122.420910608715644, 37.773852419132908 ], [ -122.421008229272687, 37.773780811646674 ], [ -122.421284370393934, 37.77356039048216 ], [ -122.421941247178026, 37.773036050819961 ], [ -122.422169936976104, 37.77285593639396 ], [ -122.422619690282815, 37.772502817311128 ], [ -122.423258913662679, 37.772000399157754 ], [ -122.423479344850293, 37.771827141530693 ], [ -122.42361952356508, 37.771716961429995 ], [ -122.423707555870649, 37.771638138620823 ], [ -122.423971653706317, 37.771401668385572 ], [ -122.424852598682307, 37.770747745074537 ], [ -122.426309438735913, 37.769602597220121 ], [ -122.426683978032827, 37.769533626427062 ], [ -122.428218351470321, 37.769440923680406 ], [ -122.428428952948465, 37.770451409238284 ], [ -122.428426180541749, 37.770451760600665 ], [ -122.428520173517541, 37.770917853912216 ], [ -122.428614043687816, 37.771383330257258 ], [ -122.428708105393241, 37.771849753810166 ], [ -122.428802101899663, 37.772315846507482 ], [ -122.428990051967787, 37.773247800757233 ], [ -122.42917834319843, 37.774181422747475 ], [ -122.429178342852524, 37.774181422753124 ], [ -122.429178383795261, 37.774181626728783 ], [ -122.429178384487102, 37.774181626717471 ], [ -122.429272630354163, 37.774648924607646 ], [ -122.429365859793393, 37.775111180032617 ], [ -122.42955405641294, 37.77604428584678 ], [ -122.429622603726443, 37.776331628240193 ], [ -122.429626330769736, 37.776513151917612 ], [ -122.429686883301301, 37.776976022351889 ], [ -122.429849199803343, 37.777919295570904 ], [ -122.430047265291023, 37.778850928515844 ], [ -122.430233236584385, 37.779782794230314 ], [ -122.42868554474839, 37.779980201690215 ], [ -122.427016756808811, 37.780193030481158 ], [ -122.42720275579525, 37.781117127328834 ], [ -122.427396397680198, 37.782056939506091 ], [ -122.424108200948226, 37.782477051425644 ], [ -122.422597534917514, 37.782659914421728 ], [ -122.422463744273344, 37.782685368786026 ], [ -122.420817002825672, 37.782894121654586 ], [ -122.420816620257895, 37.78289417046458 ], [ -122.419181703937824, 37.783101400150407 ], [ -122.417528773439201, 37.78331088958533 ], [ -122.415882538254209, 37.783515640872785 ], [ -122.414241572919337, 37.783723783021379 ], [ -122.414430198422409, 37.784657140813145 ], [ -122.414617207572036, 37.785582474657787 ], [ -122.414806647966373, 37.786519819325378 ], [ -122.414995423274036, 37.787453843784689 ], [ -122.414995029297003, 37.787453894134082 ], [ -122.415185269301574, 37.788387930678724 ], [ -122.413541442066688, 37.788598204045492 ], [ -122.411885657146456, 37.788807543703371 ], [ -122.410242438640608, 37.789016337723744 ], [ -122.408595692092703, 37.789225606675593 ], [ -122.408595045382015, 37.789225614946417 ], [ -122.408401550373739, 37.788293193957799 ], [ -122.408226725993813, 37.78735926231473 ], [ -122.408036236552462, 37.786409613336666 ], [ -122.40639887788349, 37.786615347203238 ], [ -122.405346079234604, 37.786747618574395 ], [ -122.404849901045083, 37.78680995410096 ], [ -122.404583659644615, 37.786730668037741 ], [ -122.4045836593057, 37.786730668317922 ], [ -122.404583317818549, 37.786730565606241 ], [ -122.405371564397683, 37.786107287119592 ], [ -122.405831011063668, 37.78574398921409 ], [ -122.406821367207598, 37.78496763543707 ], [ -122.407625723544982, 37.784337071806426 ], [ -122.408066547510714, 37.783991487176031 ], [ -122.408066548174432, 37.783991486066526 ], [ -122.408597310055299, 37.783569788681966 ], [ -122.40895215871069, 37.783287852576514 ], [ -122.410292026384454, 37.782230575136197 ], [ -122.410716598656492, 37.781899054565059 ], [ -122.411625130786987, 37.781189627190479 ], [ -122.411972358960256, 37.78090254089237 ], [ -122.411972359306191, 37.780902540886757 ], [ -122.412243715889375, 37.780689421480552 ], [ -122.412512255967954, 37.78047851222005 ], [ -122.413308361492682, 37.779850246537862 ], [ -122.414741221622947, 37.778719429321896 ], [ -122.415925978170975, 37.777795112873314 ], [ -122.416024573316548, 37.777713893977598 ], [ -122.416291701393504, 37.777493843136881 ], [ -122.416291701725271, 37.777493842582118 ], [ -122.416757677810395, 37.777126789723972 ], [ -122.417501462863584, 37.776540893581355 ], [ -122.417757669457401, 37.776334062520824 ], [ -122.418683590110874, 37.775586568849455 ], [ -122.419255600381447, 37.775147078837719 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":15,"ZIP_CODE":94124,"ID":94124},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.398991043085772, 37.715338797679301 ], [ -122.398953101659146, 37.715385829745912 ], [ -122.398839335741798, 37.715526852955328 ], [ -122.398735527529269, 37.715727131371494 ], [ -122.398656056102226, 37.71588045500463 ], [ -122.398643015232707, 37.715917722950913 ], [ -122.398565370170317, 37.716139616445538 ], [ -122.398550700112352, 37.7161815389411 ], [ -122.398499278161879, 37.716543657492224 ], [ -122.398561414050022, 37.716897923924947 ], [ -122.398668885707423, 37.717503589023465 ], [ -122.398686680058731, 37.717603871431201 ], [ -122.39871606167118, 37.717769450850419 ], [ -122.398759937061044, 37.718047446028777 ], [ -122.398787867001658, 37.718224410399863 ], [ -122.398799134608808, 37.718275024173522 ], [ -122.398913161799925, 37.718792447247658 ], [ -122.398923285260594, 37.718836507697276 ], [ -122.398942440206895, 37.718921151552976 ], [ -122.398943601880902, 37.718926286066001 ], [ -122.399066465573654, 37.719469200866385 ], [ -122.399125486878972, 37.719730004239857 ], [ -122.399208340593788, 37.719991530079234 ], [ -122.399309038031902, 37.720278334103305 ], [ -122.399419264352986, 37.720532021245042 ], [ -122.399600300155441, 37.720920363637823 ], [ -122.399830553211288, 37.721427080386505 ], [ -122.399925016822507, 37.721517272170509 ], [ -122.40038213245046, 37.722633285332655 ], [ -122.400661931084002, 37.723316373994798 ], [ -122.400784747286778, 37.723616209251418 ], [ -122.40078474798517, 37.723616209514844 ], [ -122.401182917574161, 37.724588254281116 ], [ -122.401471218295981, 37.725516183407578 ], [ -122.401474642450822, 37.725528485745301 ], [ -122.401822425920514, 37.726775260854211 ], [ -122.401875118236148, 37.726964759399728 ], [ -122.402039596395539, 37.727554690472438 ], [ -122.402105120777605, 37.727789703519925 ], [ -122.402209197740476, 37.728101973566574 ], [ -122.402752244737584, 37.729357163240891 ], [ -122.403021622188092, 37.729901901370539 ], [ -122.403400462440644, 37.730658352585962 ], [ -122.403961731325225, 37.731610333558521 ], [ -122.40405482060109, 37.731789516245591 ], [ -122.40465709692171, 37.732948781873532 ], [ -122.404657097641305, 37.732948782960683 ], [ -122.404878800551302, 37.733336356125804 ], [ -122.405096042524178, 37.733716127227488 ], [ -122.405494571184249, 37.734287050530888 ], [ -122.406294659725731, 37.735306888886043 ], [ -122.406454646881144, 37.735510813404687 ], [ -122.406618861734884, 37.735896873766244 ], [ -122.40670383539134, 37.73630860402433 ], [ -122.406910504104971, 37.737965866913434 ], [ -122.406900092501772, 37.738009155282221 ], [ -122.406867742024218, 37.738143654094841 ], [ -122.406895428755547, 37.738323651840822 ], [ -122.406915744052654, 37.738455725148341 ], [ -122.40693392611557, 37.738601770051126 ], [ -122.406945393527934, 37.738693880058896 ], [ -122.406939830707117, 37.738876165961258 ], [ -122.406936851773693, 37.739087891690275 ], [ -122.406930338448149, 37.739188255204461 ], [ -122.40692734433064, 37.739234393770168 ], [ -122.406923419099328, 37.739294876190314 ], [ -122.406917382338506, 37.739360326809205 ], [ -122.40691098434678, 37.739429695993088 ], [ -122.406910847801768, 37.73943120901172 ], [ -122.406977761294414, 37.739566302699039 ], [ -122.406889400847547, 37.739668564915668 ], [ -122.407641980575562, 37.73960607595005 ], [ -122.407891817991583, 37.739621065115479 ], [ -122.407910235902733, 37.739622169745928 ], [ -122.408137030577961, 37.739635775942595 ], [ -122.408114071971212, 37.739818086787388 ], [ -122.408049229318891, 37.740339110042903 ], [ -122.407964646391505, 37.740662552272049 ], [ -122.407846654253319, 37.741024367104636 ], [ -122.407757062965644, 37.741253133394146 ], [ -122.407625696256517, 37.741528038897464 ], [ -122.407448073794797, 37.741860521932459 ], [ -122.407209491524853, 37.742235666028684 ], [ -122.407179681106143, 37.742274728523746 ], [ -122.406881612449212, 37.742665295031905 ], [ -122.406149889909912, 37.743534947555823 ], [ -122.406047831839984, 37.743656241756561 ], [ -122.405778655290121, 37.743989539741165 ], [ -122.405747110957691, 37.744028598841339 ], [ -122.405475695814175, 37.744427001636382 ], [ -122.405444172050537, 37.744486004341084 ], [ -122.405202201087945, 37.744938889063008 ], [ -122.405179630488661, 37.744981134097749 ], [ -122.405051159825348, 37.745369647465395 ], [ -122.40491012189095, 37.745826558312224 ], [ -122.40472494664624, 37.746505061967419 ], [ -122.404496510435962, 37.747208430674682 ], [ -122.404390053649081, 37.747536214374357 ], [ -122.404249303912664, 37.747969580021021 ], [ -122.404105247604519, 37.748421906188959 ], [ -122.404104297626958, 37.748424888760844 ], [ -122.404103617259366, 37.748427025595028 ], [ -122.404051662308461, 37.74859015799958 ], [ -122.403990987296382, 37.74878066971192 ], [ -122.403865672790147, 37.749174139069758 ], [ -122.403826366530197, 37.749298003881435 ], [ -122.403783562755194, 37.749432891426196 ], [ -122.403667613571599, 37.749458113882532 ], [ -122.403568849778438, 37.749475672986911 ], [ -122.403260968692152, 37.749530409553117 ], [ -122.403203674195439, 37.749534260068266 ], [ -122.402968925612569, 37.749550036933734 ], [ -122.402866309087059, 37.749478458911533 ], [ -122.402866303074774, 37.749478453789486 ], [ -122.402746245055127, 37.749375020002113 ], [ -122.402215286387033, 37.749358244852793 ], [ -122.402063015501824, 37.749396333205695 ], [ -122.40206163398004, 37.749396678541473 ], [ -122.397285415820363, 37.749684622841229 ], [ -122.396273544250747, 37.74974560058007 ], [ -122.395307862010839, 37.749803786070743 ], [ -122.395231400136637, 37.749808114846253 ], [ -122.393340265733656, 37.749915158351328 ], [ -122.393322792145199, 37.749917097944952 ], [ -122.393314555211816, 37.749918012051069 ], [ -122.392381992909165, 37.750021506018193 ], [ -122.392354048972692, 37.750025545503377 ], [ -122.392350740047519, 37.750026024134087 ], [ -122.391929934247997, 37.750086859865874 ], [ -122.391714686151033, 37.750109474739723 ], [ -122.391705979739527, 37.750110389401705 ], [ -122.391693805117924, 37.750111668488358 ], [ -122.391418367221192, 37.750140606282606 ], [ -122.390433038183829, 37.750118341633915 ], [ -122.389478017653872, 37.750145107673561 ], [ -122.388507729357968, 37.750205975353602 ], [ -122.387585270262662, 37.750263378063039 ], [ -122.387633974640565, 37.751559603455405 ], [ -122.387756280477618, 37.752835611637821 ], [ -122.386811646507837, 37.752890377320497 ], [ -122.385845701796796, 37.752946370817803 ], [ -122.38487975596891, 37.753002356118301 ], [ -122.383913808692512, 37.753058333776714 ], [ -122.383438933023925, 37.753085850281579 ], [ -122.382951309683904, 37.753114103639163 ], [ -122.382560989570067, 37.75313671714089 ], [ -122.382560765120331, 37.753136419940226 ], [ -122.381985040410456, 37.753169774197133 ], [ -122.381708677132991, 37.753185861496782 ], [ -122.38168223616799, 37.75316636834409 ], [ -122.381661069503124, 37.753150224878624 ], [ -122.381641614233217, 37.753133367358956 ], [ -122.381622142285593, 37.753115823651214 ], [ -122.381604399103537, 37.753098251789652 ], [ -122.381556374012021, 37.753046140647704 ], [ -122.381542176020147, 37.753031946080576 ], [ -122.381526284033754, 37.753019152008761 ], [ -122.381510409098041, 37.753007044663264 ], [ -122.381492804694034, 37.752994964377287 ], [ -122.381475235761897, 37.75298425724899 ], [ -122.381436673423011, 37.752964271381444 ], [ -122.381417427536135, 37.752955650919624 ], [ -122.381375546404385, 37.752941211547565 ], [ -122.381354640609899, 37.75293536475278 ], [ -122.381333752201158, 37.75293020440273 ], [ -122.381311151719544, 37.752925758105562 ], [ -122.381288586703278, 37.752922684964496 ], [ -122.381266038711004, 37.75292029772389 ], [ -122.381243508115659, 37.752918597476601 ], [ -122.381221011931387, 37.752918269852813 ], [ -122.381184718304496, 37.752919535917627 ], [ -122.381162274601664, 37.752921267347901 ], [ -122.381139865666057, 37.752924371945412 ], [ -122.381117473763211, 37.752928162992639 ], [ -122.381095099929965, 37.752932640473013 ], [ -122.381072743135178, 37.752937804677757 ], [ -122.381050368943576, 37.752942281880571 ], [ -122.381027977030755, 37.752946072910795 ], [ -122.38100556843483, 37.752949177751802 ], [ -122.38098141298515, 37.752951623194257 ], [ -122.380958968929022, 37.752953354865902 ], [ -122.380936508184703, 37.752954400073762 ], [ -122.380889821786923, 37.752955145192665 ], [ -122.380865579793621, 37.752954158637948 ], [ -122.380843066568161, 37.752953144488032 ], [ -122.380797970609038, 37.752948370381233 ], [ -122.380773676141516, 37.752945324467625 ], [ -122.380728475930468, 37.752936431643164 ], [ -122.380707587564899, 37.752931271182163 ], [ -122.380684952713352, 37.752925451862353 ], [ -122.380667539609021, 37.752920922661339 ], [ -122.380641464261203, 37.752915844962516 ], [ -122.380615405953847, 37.752911453986556 ], [ -122.380589365011275, 37.752907748904235 ], [ -122.38056161234158, 37.752904758130924 ], [ -122.38053562319034, 37.752903112662466 ], [ -122.380507905274172, 37.752901494773603 ], [ -122.380480204733729, 37.752900563326783 ], [ -122.380433519056851, 37.752901308253911 ], [ -122.380238268028847, 37.752909917328637 ], [ -122.380029271599042, 37.752922178983432 ], [ -122.379994654613483, 37.752921358032168 ], [ -122.379959933403185, 37.752916418104356 ], [ -122.379944267166053, 37.752912547382195 ], [ -122.379912864887501, 37.752902060691724 ], [ -122.379897129538875, 37.752895444712365 ], [ -122.379883105576184, 37.752888114156903 ], [ -122.37987077565819, 37.752879383675683 ], [ -122.379861869913029, 37.752869224847544 ], [ -122.379854658198184, 37.752857665545626 ], [ -122.379850887331656, 37.752845364357682 ], [ -122.379850574694558, 37.752833008281776 ], [ -122.379853720278177, 37.752820597043424 ], [ -122.37985861234651, 37.752808844946877 ], [ -122.379865250884947, 37.752797751442777 ], [ -122.379882315832674, 37.752788551525661 ], [ -122.379911450501524, 37.752777785898218 ], [ -122.379938873076583, 37.752767734300228 ], [ -122.379980076404905, 37.752755402685878 ], [ -122.379993770314556, 37.752749690431031 ], [ -122.380005682657426, 37.752741946417643 ], [ -122.380015797100285, 37.752731484181091 ], [ -122.380022435608339, 37.752720390667974 ], [ -122.380025580812656, 37.752707979430312 ], [ -122.380025233406471, 37.752694250457282 ], [ -122.380007137303139, 37.752457618747144 ], [ -122.379959987158614, 37.752029854003567 ], [ -122.379883834201038, 37.752034160974858 ], [ -122.376087329752295, 37.752248827801239 ], [ -122.375771286398191, 37.74870623521705 ], [ -122.382681120134976, 37.748282212078522 ], [ -122.384914143794745, 37.748144880283171 ], [ -122.384920340493579, 37.748184611607194 ], [ -122.384650947212847, 37.748201967818915 ], [ -122.384670831989453, 37.748303972394424 ], [ -122.384688156495528, 37.748305068501672 ], [ -122.384721007906435, 37.748304543099884 ], [ -122.384738280527714, 37.748303580123398 ], [ -122.384755518322564, 37.748301244247457 ], [ -122.384771026767297, 37.748298936027936 ], [ -122.384788230079309, 37.748295227244739 ], [ -122.384803704040692, 37.748291546118445 ], [ -122.384819160241221, 37.748287178547208 ], [ -122.384850004018801, 37.748275697588227 ], [ -122.384865408317154, 37.748269270660025 ], [ -122.384882471958647, 37.748260070280949 ], [ -122.384896077598697, 37.748250925484513 ], [ -122.384911429637739, 37.748242438930326 ], [ -122.384926799094799, 37.748234639097134 ], [ -122.384942203039174, 37.748228212438939 ], [ -122.384959354081715, 37.748222444285403 ], [ -122.384976521838055, 37.748217362314264 ], [ -122.384993725120907, 37.748213653501011 ], [ -122.385009181639873, 37.748209285899271 ], [ -122.385022856909728, 37.748202886607288 ], [ -122.385036497346164, 37.748195114416852 ], [ -122.385046610116049, 37.748184651746037 ], [ -122.385053264882572, 37.748174244389467 ], [ -122.385059867399946, 37.748161777687201 ], [ -122.385062977084218, 37.748147993403109 ], [ -122.385067868014104, 37.74813624080646 ], [ -122.38507799784864, 37.748126464861393 ], [ -122.385089892189129, 37.748118033594025 ], [ -122.38510529608827, 37.748111606639817 ], [ -122.385120787757828, 37.748108611914709 ], [ -122.385138077744813, 37.748108335328041 ], [ -122.385155454814836, 37.748111490980968 ], [ -122.385169426138901, 37.748116761295172 ], [ -122.385181755211505, 37.748125491789409 ], [ -122.385192373382367, 37.748134935830123 ], [ -122.385204720216592, 37.748144352490229 ], [ -122.385218761226213, 37.748152368866798 ], [ -122.385234478972677, 37.748158297687098 ], [ -122.385250161900544, 37.748162854157655 ], [ -122.385267521563421, 37.748165323071063 ], [ -122.385284846398747, 37.748166419359649 ], [ -122.385307218551446, 37.748161941354901 ], [ -122.385322623132453, 37.748155514361287 ], [ -122.385336298358496, 37.748149114758291 ], [ -122.385351667751635, 37.748141314869592 ], [ -122.385370425465482, 37.748130713860917 ], [ -122.385385847107514, 37.748124973312947 ], [ -122.38540299740022, 37.748119205105795 ], [ -122.385420183219992, 37.748114809781839 ], [ -122.385437403184611, 37.748111787363236 ], [ -122.385454641265781, 37.748109451653981 ], [ -122.385471896059883, 37.748107801852534 ], [ -122.385494373386805, 37.748107442216863 ], [ -122.38551168079205, 37.748107852023772 ], [ -122.385530752036246, 37.748109607060321 ], [ -122.385548128777415, 37.748112762660895 ], [ -122.385617567456492, 37.748122639221975 ], [ -122.385652269381737, 37.748126891038808 ], [ -122.385685225236202, 37.748130484058379 ], [ -122.385719909747124, 37.748134049406957 ], [ -122.385785855632406, 37.748142608581347 ], [ -122.385801503731642, 37.748145791532721 ], [ -122.385816588465147, 37.748146745865732 ], [ -122.385818828224473, 37.748146887748376 ], [ -122.385834354718469, 37.748145265826139 ], [ -122.38585155760299, 37.748141557167763 ], [ -122.385865250211054, 37.74813584422629 ], [ -122.385878890540098, 37.748128071663686 ], [ -122.3858907496043, 37.748118267698949 ], [ -122.385900844474122, 37.748107118511911 ], [ -122.385902260194882, 37.748094734766624 ], [ -122.385907133219177, 37.748082295692257 ], [ -122.385917263620584, 37.748072519389318 ], [ -122.385930956210871, 37.748066806440157 ], [ -122.385953433177363, 37.748066446722468 ], [ -122.385965727831334, 37.748073804232597 ], [ -122.385981463045027, 37.748080419401688 ], [ -122.385998909841959, 37.748086320723502 ], [ -122.38601630437492, 37.74809016297241 ], [ -122.386033664046266, 37.748092631772991 ], [ -122.386050971451041, 37.748093041500702 ], [ -122.386068226580846, 37.748091391880983 ], [ -122.386087192943762, 37.74808902841783 ], [ -122.386104378709106, 37.748084632719518 ], [ -122.386119835135943, 37.748080264972018 ], [ -122.386135256363829, 37.74807452433145 ], [ -122.386150643429275, 37.748067410781196 ], [ -122.386162536953989, 37.748058979691152 ], [ -122.386174396322502, 37.748049175966834 ], [ -122.386184491486219, 37.748038026749811 ], [ -122.386194569220663, 37.74802619108366 ], [ -122.386201171526452, 37.748013724042565 ], [ -122.386204298419131, 37.748000626176299 ], [ -122.386207059358142, 37.747973112895849 ], [ -122.386211932676204, 37.74796067407766 ], [ -122.386218534973267, 37.747948207035471 ], [ -122.386226883695826, 37.747936399040974 ], [ -122.386236996262895, 37.747925936267578 ], [ -122.386250601668095, 37.747916791039664 ], [ -122.38626425935739, 37.747909705429613 ], [ -122.38627966345058, 37.747903278041591 ], [ -122.386295119836348, 37.747898910545544 ], [ -122.386310628142297, 37.747896601848709 ], [ -122.386338292035447, 37.747896159029516 ], [ -122.386357415873647, 37.747899973271664 ], [ -122.386373115890919, 37.747905215772221 ], [ -122.386388851457951, 37.747911831156145 ], [ -122.386404621538247, 37.747919819440014 ], [ -122.386418680056124, 37.747928521847626 ], [ -122.386427603879639, 37.747939366631606 ], [ -122.386439915980972, 37.747947410266093 ], [ -122.386455564081089, 37.74795059367991 ], [ -122.386471037535358, 37.747946912065444 ], [ -122.386789455008412, 37.747884816204298 ], [ -122.3868315118753, 37.747838131816167 ], [ -122.386850251869276, 37.747826844123239 ], [ -122.386870720848805, 37.747815528743104 ], [ -122.386889443052766, 37.747803554601212 ], [ -122.386908148509548, 37.747790893997063 ], [ -122.386942065866194, 37.74776425526499 ], [ -122.386965801028097, 37.74774533356738 ], [ -122.386981135299891, 37.747736160569232 ], [ -122.386994723145222, 37.747726328806948 ], [ -122.387010022542214, 37.747715782908614 ], [ -122.387037163346392, 37.747694746479311 ], [ -122.387050698881637, 37.747682855640441 ], [ -122.38706252285192, 37.747671678660687 ], [ -122.38707605836494, 37.747659787269711 ], [ -122.387087812590266, 37.747645864494586 ], [ -122.387097942431041, 37.747636088094978 ], [ -122.387109818697425, 37.747626970729563 ], [ -122.387123441368203, 37.747618511574053 ], [ -122.387137098912476, 37.747611425587927 ], [ -122.387154231515737, 37.747604970677259 ], [ -122.387171469418391, 37.747602634442131 ], [ -122.387190435960278, 37.747600270521147 ], [ -122.387209419590647, 37.747598593050817 ], [ -122.387226657490075, 37.747596256807626 ], [ -122.387245658900213, 37.747595265774123 ], [ -122.387264642528066, 37.747593588294905 ], [ -122.387281915296896, 37.747592624939976 ], [ -122.387300916705343, 37.747591633897549 ], [ -122.387316296380376, 37.747591387583803 ], [ -122.38733895439411, 37.747591024699865 ], [ -122.387356261689263, 37.747591434235915 ], [ -122.387375280187655, 37.747591129635204 ], [ -122.387394334251837, 37.747592197916667 ], [ -122.387413370533409, 37.74759257975245 ], [ -122.387430694921051, 37.74759367573126 ], [ -122.387449748986683, 37.747594744003763 ], [ -122.38746882014496, 37.747596498726871 ], [ -122.38748616197239, 37.747598281145677 ], [ -122.387505250916419, 37.747600722305499 ], [ -122.387538363228003, 37.747610492846007 ], [ -122.387550745149639, 37.747621282157453 ], [ -122.387563144167856, 37.747632757921238 ], [ -122.38758451981073, 37.747657137719408 ], [ -122.387602472716026, 37.747682945794239 ], [ -122.387611466439651, 37.747696536281474 ], [ -122.387617002189558, 37.747710182158386 ], [ -122.387624284369664, 37.747724486787845 ], [ -122.387629837563409, 37.747738819112165 ], [ -122.387633661769783, 37.747753179131621 ], [ -122.387635983354997, 37.747776490677239 ], [ -122.387636332144282, 37.747790219639235 ], [ -122.387640121821377, 37.747803206756615 ], [ -122.387649063247679, 37.747814737896427 ], [ -122.38765798689127, 37.747825582592974 ], [ -122.38767204553811, 37.747834284851223 ], [ -122.387686034428512, 37.747840241315451 ], [ -122.387703429329918, 37.74784408303541 ], [ -122.387720806101257, 37.747847238315771 ], [ -122.387738148684832, 37.747849020686374 ], [ -122.387757219915159, 37.747850775362728 ], [ -122.387776255919036, 37.747851157145398 ], [ -122.387793563622978, 37.747851566611679 ], [ -122.38781256509084, 37.747850575486822 ], [ -122.387829820125248, 37.747848925609141 ], [ -122.387848786709029, 37.747846561582286 ], [ -122.387866006512709, 37.747843538808695 ], [ -122.387888379097262, 37.747839060028085 ], [ -122.387903835368149, 37.747834692046453 ], [ -122.387921107500148, 37.747833728883549 ], [ -122.38793675597158, 37.747836911546052 ], [ -122.387950727441307, 37.7478421815308 ], [ -122.387968122011031, 37.747846023217228 ], [ -122.387985481697157, 37.747848492005005 ], [ -122.388002823941576, 37.747850274342177 ], [ -122.388020131300777, 37.747850683780733 ], [ -122.388039132419564, 37.747849692624868 ], [ -122.38805637035118, 37.747847356260422 ], [ -122.388073590146575, 37.74784433345652 ], [ -122.388089046753478, 37.747839965445046 ], [ -122.388109620211083, 37.747832768537954 ], [ -122.388109062008056, 37.747810802201109 ], [ -122.388077940175876, 37.747811300839857 ], [ -122.38807409843713, 37.74779625438692 ], [ -122.388108678243654, 37.747795700344511 ], [ -122.388099616701311, 37.74771137804548 ], [ -122.388148028374744, 37.747710602372756 ], [ -122.388152687991848, 37.747825897938156 ], [ -122.388277000893524, 37.747817039049515 ], [ -122.388487762928946, 37.747806794121068 ], [ -122.388506886854486, 37.747810608014518 ], [ -122.388525975547779, 37.747813049289029 ], [ -122.388546793218978, 37.747815462302533 ], [ -122.388565847011719, 37.747816530400094 ], [ -122.388605613450011, 37.747815893090063 ], [ -122.388626326439876, 37.747814187676354 ], [ -122.388645293335259, 37.747811823515768 ], [ -122.388665971425112, 37.747808745199229 ], [ -122.388684903080716, 37.747805008416485 ], [ -122.388703817271136, 37.747800584633623 ], [ -122.388722696221464, 37.747794788231978 ], [ -122.388738135330243, 37.747789733687412 ], [ -122.388758743610779, 37.74778390956282 ], [ -122.388800029962908, 37.747775007094489 ], [ -122.38882243702561, 37.74777190103795 ], [ -122.38884313255457, 37.74776950941277 ], [ -122.388865591959274, 37.747768462417191 ], [ -122.388886322380927, 37.747767443405706 ], [ -122.388908833806198, 37.747768456300328 ], [ -122.388929616574529, 37.747769496350386 ], [ -122.388945212727961, 37.747770619809877 ], [ -122.388964301079568, 37.747773061018961 ], [ -122.388983355206264, 37.747774128768917 ], [ -122.38900242644678, 37.747775883243818 ], [ -122.389021462783674, 37.747776264819827 ], [ -122.389042245569726, 37.747777305399197 ], [ -122.389080318237873, 37.747778068260708 ], [ -122.389137374546209, 37.7477771536037 ], [ -122.389175377760296, 37.747775171186596 ], [ -122.389196090718727, 37.747773465398161 ], [ -122.38926533756586, 37.747775788884091 ], [ -122.389334549507055, 37.747776739433625 ], [ -122.3894037440012, 37.747777003769272 ], [ -122.389542063148724, 37.747774785978237 ], [ -122.389680277530928, 37.747768449063493 ], [ -122.389818387138831, 37.74775799357456 ], [ -122.38988740700772, 37.747751392873859 ], [ -122.38995468041503, 37.747744133414443 ], [ -122.390039173851804, 37.747733851094473 ], [ -122.390066855117027, 37.747734093573278 ], [ -122.390085856531513, 37.747733102356463 ], [ -122.390103128943423, 37.747732138319044 ], [ -122.390122130349909, 37.747731146821835 ], [ -122.390141096830732, 37.747728782426051 ], [ -122.390158334329385, 37.747726446034243 ], [ -122.390177283337934, 37.747723394910331 ], [ -122.390194485555256, 37.747719685348756 ], [ -122.390213417450141, 37.74771594804033 ], [ -122.390230602546296, 37.747711552020206 ], [ -122.390249481354928, 37.747705755373893 ], [ -122.3902666667924, 37.747701359342962 ], [ -122.390283903927951, 37.747699022663753 ], [ -122.390311567723842, 37.747698578911937 ], [ -122.390328910334858, 37.747700360901341 ], [ -122.390344558542523, 37.747703543524345 ], [ -122.390363664733329, 37.747706670948986 ], [ -122.390381024113694, 37.747709139114932 ], [ -122.390398366728832, 37.747710921094118 ], [ -122.390415726118349, 37.747713389529537 ], [ -122.390433121131167, 37.747717230846696 ], [ -122.390448804284702, 37.74772178662581 ], [ -122.390464522011555, 37.747727714754603 ], [ -122.390476782463509, 37.747733698619065 ], [ -122.390494212070166, 37.747738912828105 ], [ -122.390511589281189, 37.747742067691526 ], [ -122.390527184761183, 37.747743190952775 ], [ -122.390653785454447, 37.747824253927604 ], [ -122.390638206813605, 37.747755831079004 ], [ -122.390653872859318, 37.747759700103025 ], [ -122.390669573495856, 37.747764942025796 ], [ -122.390681886034457, 37.74777298549197 ], [ -122.39069250450811, 37.747782429043276 ], [ -122.390701428591996, 37.747793273509437 ], [ -122.390706912858818, 37.747804859892483 ], [ -122.390710737663227, 37.747819219811937 ], [ -122.390717985513646, 37.7478321513547 ], [ -122.390725250834635, 37.747845769344615 ], [ -122.39073249869017, 37.747858700886397 ], [ -122.390741475546321, 37.747871604961333 ], [ -122.390750434923376, 37.747883822038752 ], [ -122.390771776747243, 37.747906828362581 ], [ -122.390782430195571, 37.747917645075368 ], [ -122.39079481229362, 37.747928434050969 ], [ -122.39082296530907, 37.747947210986922 ], [ -122.390837024342559, 37.747955912592879 ], [ -122.390849337269742, 37.747963955761179 ], [ -122.390865002685743, 37.747967825042672 ], [ -122.390880686250455, 37.747972380209411 ], [ -122.3909120177685, 37.747980118201738 ], [ -122.390943314352953, 37.747986483290504 ], [ -122.390960691640942, 37.747989638087581 ], [ -122.390976339590807, 37.747992820632099 ], [ -122.391007601590601, 37.747997812803085 ], [ -122.391024961067359, 37.748000281148649 ], [ -122.391056188138322, 37.748003900686179 ], [ -122.391073512668584, 37.74800499585487 ], [ -122.391089126375263, 37.748006805478177 ], [ -122.391122029339527, 37.748008337920567 ], [ -122.39113764304112, 37.74801014726286 ], [ -122.391155055286944, 37.748014674926367 ], [ -122.3911690619626, 37.748021317424552 ], [ -122.391183121057651, 37.748030019263688 ], [ -122.391193757118117, 37.748040149766119 ], [ -122.391202716589845, 37.748052366808828 ], [ -122.391208200608148, 37.748063953173585 ], [ -122.391241557893906, 37.74808333321856 ], [ -122.391295995830475, 37.748115422483572 ], [ -122.391962189342451, 37.748397274549454 ], [ -122.391983042262396, 37.748401060399672 ], [ -122.392002166513251, 37.748404873451001 ], [ -122.392021325387503, 37.7484100596741 ], [ -122.392042213267686, 37.748415218134042 ], [ -122.392078889429584, 37.748429050561562 ], [ -122.392113924006139, 37.748446342975576 ], [ -122.392131528713293, 37.748458421690032 ], [ -122.39214384116525, 37.748466464458922 ], [ -122.392159577364851, 37.748473079071736 ], [ -122.392175243295199, 37.748476947898624 ], [ -122.392194332280141, 37.748479388578737 ], [ -122.392215132775206, 37.748481114496656 ], [ -122.392234186445535, 37.748482182006597 ], [ -122.392254951984697, 37.748482535297406 ], [ -122.392294719439334, 37.748481896731604 ], [ -122.392336145620007, 37.748478484604256 ], [ -122.392355112221097, 37.748476119852498 ], [ -122.392375790342101, 37.748473040885386 ], [ -122.392394739456975, 37.748469989679933 ], [ -122.392410230561637, 37.748466994002406 ], [ -122.392430943652641, 37.748465288194843 ], [ -122.392449945215546, 37.748464296322425 ], [ -122.392477609283375, 37.748463852062244 ], [ -122.392496645468526, 37.748464233082473 ], [ -122.392534753839612, 37.748466367717036 ], [ -122.392553842833664, 37.748468808338913 ], [ -122.392571185325409, 37.748470589729116 ], [ -122.392588457883463, 37.748469625602191 ], [ -122.392596639186095, 37.748469494208877 ], [ -122.392610934939555, 37.748469264614883 ], [ -122.39262824212247, 37.74846967338226 ], [ -122.392662927124746, 37.748473236687367 ], [ -122.392680287459143, 37.74847570477781 ], [ -122.392695935930789, 37.748478887088204 ], [ -122.392713348381406, 37.748483414521154 ], [ -122.392729031836424, 37.748487969996233 ], [ -122.39274473277321, 37.748493211641936 ], [ -122.392760450846382, 37.748499139463782 ], [ -122.392774457756872, 37.748505781770611 ], [ -122.392790211508157, 37.748513082746427 ], [ -122.392804253398694, 37.748521097944213 ], [ -122.392825263777468, 37.748531061396008 ], [ -122.392842711223665, 37.748536961704282 ], [ -122.39286010621592, 37.748540802942827 ], [ -122.392879212368058, 37.748543929415632 ], [ -122.392898284250904, 37.748545683528903 ], [ -122.392917320797991, 37.748546064201044 ], [ -122.392936339863667, 37.748545758697475 ], [ -122.392953524990631, 37.748541362280918 ], [ -122.392966938977182, 37.748536367729422 ], [ -122.392968945786251, 37.748535620746658 ], [ -122.392982602941643, 37.748528534084265 ], [ -122.392994513945695, 37.748520788741565 ], [ -122.393006389623011, 37.748511670508776 ], [ -122.393016518457316, 37.748501893607475 ], [ -122.39303324918852, 37.748479649545963 ], [ -122.393038138879703, 37.74846789661926 ], [ -122.393043010740925, 37.74845545752526 ], [ -122.393046136785017, 37.748442359198343 ], [ -122.393047533485998, 37.748429288926303 ], [ -122.393054199696095, 37.748283595463981 ], [ -122.393077928476629, 37.748128700431906 ], [ -122.392979444727942, 37.747588651673503 ], [ -122.39297940856946, 37.747588454476606 ], [ -122.392907366368178, 37.747544287652012 ], [ -122.39290993009746, 37.747441237230703 ], [ -122.392849293374297, 37.747437404131951 ], [ -122.392809823765376, 37.747449712490337 ], [ -122.39276850310074, 37.747457243469029 ], [ -122.392735233137245, 37.747441296365679 ], [ -122.392709245973222, 37.747439653574382 ], [ -122.392606956367715, 37.747430308793902 ], [ -122.392589631603045, 37.747429213856059 ], [ -122.392573983004198, 37.747426031261952 ], [ -122.392558282650754, 37.747420789587025 ], [ -122.392545987120343, 37.747413433318528 ], [ -122.392533639816108, 37.747404017146245 ], [ -122.392522986186506, 37.747393200590786 ], [ -122.392515773033679, 37.747381642052915 ], [ -122.392369749857508, 37.747285098201544 ], [ -122.392309356598403, 37.747222889020321 ], [ -122.391563535628293, 37.747006182915136 ], [ -122.391515981789823, 37.747108581714961 ], [ -122.391549059112705, 37.747116978239831 ], [ -122.39154102623057, 37.747141142664127 ], [ -122.391633378020288, 37.747167816090183 ], [ -122.391610658187417, 37.747226552683614 ], [ -122.391284893471251, 37.747135639523535 ], [ -122.391304260773893, 37.747081077170833 ], [ -122.391400018273714, 37.747105635933018 ], [ -122.391414984907726, 37.747082046956919 ], [ -122.391449669204121, 37.747085610619905 ], [ -122.391496995599269, 37.746974288032909 ], [ -122.390841889233045, 37.746787710251105 ], [ -122.390710603266925, 37.746750702923116 ], [ -122.390692063133784, 37.7467454771745 ], [ -122.390583853899699, 37.746707382782333 ], [ -122.390491852370616, 37.746694437487911 ], [ -122.389167167584475, 37.74677199330884 ], [ -122.389007159419478, 37.746805461394153 ], [ -122.38886264165825, 37.746835933506375 ], [ -122.388798600052468, 37.746834213094125 ], [ -122.388745420841317, 37.746851546922535 ], [ -122.388650571528245, 37.746862681307142 ], [ -122.388568244062029, 37.746890096400243 ], [ -122.388501285688704, 37.746909711129156 ], [ -122.388430153337836, 37.746901236873853 ], [ -122.388403030664151, 37.746922960074855 ], [ -122.388383874714961, 37.746923267046867 ], [ -122.388364993671857, 37.746923569610487 ], [ -122.388206416880053, 37.746945339015134 ], [ -122.388203900596949, 37.746982462626271 ], [ -122.388121154182954, 37.746993402651967 ], [ -122.388116562743861, 37.746948838923466 ], [ -122.387896826491271, 37.746946178902249 ], [ -122.387881213437979, 37.746944369124783 ], [ -122.387867242141994, 37.746939099130984 ], [ -122.387854912604922, 37.746930368921483 ], [ -122.387704648799442, 37.746938956647774 ], [ -122.387598167965407, 37.746968818149767 ], [ -122.387589223776885, 37.747025273076481 ], [ -122.387549736768761, 37.747036893214862 ], [ -122.387544863742193, 37.747049332364881 ], [ -122.387534786009468, 37.747061168154005 ], [ -122.38752465665732, 37.747070944861157 ], [ -122.387511034118646, 37.747079403514647 ], [ -122.387495647733758, 37.747086517238138 ], [ -122.387478445182509, 37.747090226411743 ], [ -122.387461451881805, 37.747102172961299 ], [ -122.387268251932909, 37.747106390211968 ], [ -122.387107064056366, 37.74710990881966 ], [ -122.387091486195246, 37.747109471553998 ], [ -122.387075890554399, 37.747108347843543 ], [ -122.387060207744099, 37.747103791889728 ], [ -122.387046201608655, 37.747097148902206 ], [ -122.387033854715085, 37.747087732433343 ], [ -122.387024930905355, 37.74707688769373 ], [ -122.387021159152255, 37.747064586997716 ], [ -122.387005168327306, 37.746911702839881 ], [ -122.385924087590695, 37.746978453708003 ], [ -122.382764926423121, 37.74715258139431 ], [ -122.382708148125133, 37.747164476159931 ], [ -122.382642308174283, 37.747160034224571 ], [ -122.382018857926923, 37.747061489736957 ], [ -122.379659819974563, 37.747207644757545 ], [ -122.379607354913716, 37.746979801452689 ], [ -122.379559186732763, 37.746990183908736 ], [ -122.379533356297898, 37.746994716256566 ], [ -122.379509237470685, 37.74699853457313 ], [ -122.379483389665921, 37.747002380460607 ], [ -122.379459270487843, 37.747006198772453 ], [ -122.379433405660123, 37.74700935819407 ], [ -122.379407523121102, 37.747011831166098 ], [ -122.379383369216924, 37.747014276838193 ], [ -122.379357487013394, 37.747016749519133 ], [ -122.379331587106719, 37.747018536025081 ], [ -122.379307398466224, 37.747019608508175 ], [ -122.379255564276221, 37.747021808862577 ], [ -122.379229629642097, 37.747022222447264 ], [ -122.379144857745686, 37.747021513827882 ], [ -122.379072223061954, 37.747021985338478 ], [ -122.37899789481213, 37.747023857260928 ], [ -122.378925329913201, 37.747027074747926 ], [ -122.378851035672341, 37.747030319213138 ], [ -122.378706009969704, 37.747040872109451 ], [ -122.378631820547639, 37.747048235671635 ], [ -122.378559359727831, 37.747055571081212 ], [ -122.378486933610205, 37.74706427961987 ], [ -122.378414542183847, 37.747074361013084 ], [ -122.378342168091294, 37.747085128811385 ], [ -122.378269828683315, 37.747097269464334 ], [ -122.378197506610775, 37.747110096797023 ], [ -122.378126930483418, 37.747123582435272 ], [ -122.377700185384086, 37.747142744068015 ], [ -122.377451264431812, 37.747148770308641 ], [ -122.377202256724516, 37.747151363774975 ], [ -122.376953162296658, 37.747150524466448 ], [ -122.376703981182786, 37.747146252382528 ], [ -122.376633214042542, 37.747152186453157 ], [ -122.376586583950242, 37.747154989206692 ], [ -122.376541665151564, 37.747157077964779 ], [ -122.376496729013979, 37.747158480255926 ], [ -122.376406822062478, 37.747159911887174 ], [ -122.3763168457685, 37.747158597650483 ], [ -122.376226800142021, 37.747154537545661 ], [ -122.376181759998943, 37.747151821017589 ], [ -122.376136702533032, 37.747148418296995 ], [ -122.376091627724676, 37.747144328560168 ], [ -122.376046535596004, 37.747139552630784 ], [ -122.376003154781813, 37.747134062989552 ], [ -122.375912901223032, 37.747121764971595 ], [ -122.375869469128858, 37.747114215920412 ], [ -122.375824307704988, 37.747106693831739 ], [ -122.375780857600304, 37.747098458034387 ], [ -122.375737390867457, 37.747089535760047 ], [ -122.375693906470275, 37.747079927025247 ], [ -122.375650404755746, 37.747069631824438 ], [ -122.375606885379298, 37.74705865016309 ], [ -122.375565078011306, 37.747046954511831 ], [ -122.375521542024956, 37.747035286357942 ], [ -122.375484921614671, 37.747023508124926 ], [ -122.375446537240038, 37.747010384502651 ], [ -122.375427328249984, 37.747003136228599 ], [ -122.375409847894304, 37.746995860440805 ], [ -122.375390638220011, 37.746988612171734 ], [ -122.375373140891156, 37.746980649922982 ], [ -122.375353914244343, 37.746972715192399 ], [ -122.375283854298274, 37.746938120381792 ], [ -122.375266321996932, 37.746928785222565 ], [ -122.375250518328926, 37.746919422552502 ], [ -122.375232969057322, 37.746909400932758 ], [ -122.375217148425804, 37.746899352077222 ], [ -122.375199598810724, 37.746889330183407 ], [ -122.375183760856842, 37.746878594598741 ], [ -122.37516794023162, 37.746868545461957 ], [ -122.375152084617042, 37.746857123428462 ], [ -122.375137975649949, 37.746846360325264 ], [ -122.375122120743228, 37.74683493855126 ], [ -122.37510799445424, 37.746823488719798 ], [ -122.37509213920427, 37.746812066672646 ], [ -122.375063852016254, 37.746787794649727 ], [ -122.375051437407549, 37.746775631399466 ], [ -122.375037293817897, 37.746763495109327 ], [ -122.375023132917065, 37.746750672641994 ], [ -122.374998269070602, 37.746724972682053 ], [ -122.374960921021042, 37.746684363387303 ], [ -122.374939480511969, 37.746657235495441 ], [ -122.374896530254759, 37.746600233899152 ], [ -122.374887504692197, 37.746585269533512 ], [ -122.374878496108821, 37.746570991622754 ], [ -122.374851418423177, 37.746526098810385 ], [ -122.374837344197417, 37.746516708296284 ], [ -122.374824981280824, 37.746506604102919 ], [ -122.374812601738441, 37.746495813447105 ], [ -122.374801933498034, 37.746484308838191 ], [ -122.374792994225416, 37.746472776721248 ], [ -122.374785749278871, 37.74645984419638 ], [ -122.374780233298765, 37.746446884164222 ], [ -122.374774699654409, 37.746433237687107 ], [ -122.374770895666941, 37.746419563692001 ], [ -122.374768802977741, 37.746405175745409 ], [ -122.374768439251895, 37.74639076029208 ], [ -122.374769821808755, 37.746377003782186 ], [ -122.374772932981244, 37.74636321977102 ], [ -122.374777773805775, 37.74634940824194 ], [ -122.374790947320705, 37.746323103080407 ], [ -122.374915153489738, 37.745898790876815 ], [ -122.374925284686768, 37.745889015246057 ], [ -122.374935381244654, 37.745877866988621 ], [ -122.374943731527424, 37.745866059789378 ], [ -122.374948606585662, 37.745853621157977 ], [ -122.374953463974592, 37.745840496081698 ], [ -122.374954864154603, 37.745827426013051 ], [ -122.374954517717399, 37.745813697009091 ], [ -122.374952459307565, 37.745800681970202 ], [ -122.37494867264158, 37.745787694429573 ], [ -122.374943174004656, 37.745775420853761 ], [ -122.374925295588895, 37.745752356637837 ], [ -122.374169821595103, 37.745013096467311 ], [ -122.374159170981372, 37.745002278247725 ], [ -122.374148554999209, 37.744992832927991 ], [ -122.374136227057974, 37.744984101560632 ], [ -122.374123917125218, 37.74497605663138 ], [ -122.374109912547326, 37.744969412104211 ], [ -122.374095925285644, 37.7449634540258 ], [ -122.374080226064535, 37.744958209898222 ], [ -122.37406629074772, 37.744954311167561 ], [ -122.374048932546074, 37.744951840322948 ], [ -122.374033320242248, 37.744950028435788 ], [ -122.374017742219408, 37.744949589452929 ], [ -122.373998724342499, 37.744949891898301 ], [ -122.37398319825796, 37.744951512262205 ], [ -122.373967707489385, 37.744954505513952 ], [ -122.373952250998556, 37.744958871670036 ], [ -122.373936811825118, 37.74496392454914 ], [ -122.373923118884619, 37.74496963610779 ], [ -122.373909460559076, 37.744976720291163 ], [ -122.373895819549759, 37.744984491197997 ], [ -122.373883942091524, 37.744993607510423 ], [ -122.373863679651151, 37.745013158045801 ], [ -122.373855311981089, 37.745024278719775 ], [ -122.373848673239934, 37.745035371899974 ], [ -122.373842051808168, 37.745047151530216 ], [ -122.37385341216104, 37.745086114521243 ], [ -122.373444301009826, 37.74532404571449 ], [ -122.373430677195785, 37.74533250301748 ], [ -122.373418781971495, 37.745340932837536 ], [ -122.373405123536585, 37.745348017236601 ], [ -122.373391482406376, 37.745355788084566 ], [ -122.373377806658937, 37.745362186029979 ], [ -122.373364148216169, 37.745369270424256 ], [ -122.373350455156967, 37.745374981916001 ], [ -122.373319611498488, 37.745386459860086 ], [ -122.37330588381964, 37.745390798445655 ], [ -122.373274970231165, 37.745399530587065 ], [ -122.373259496653688, 37.745403210470592 ], [ -122.373244005409106, 37.745406203357881 ], [ -122.373226784891003, 37.745409224281886 ], [ -122.373211276683975, 37.7454115307089 ], [ -122.373195750831584, 37.745413150963429 ], [ -122.373178495692287, 37.7454147987048 ], [ -122.373162952885991, 37.745415732773601 ], [ -122.373130102670643, 37.745416254953994 ], [ -122.373114525240069, 37.745415815566226 ], [ -122.373097201225704, 37.745414717488131 ], [ -122.37308160580649, 37.745413591931054 ], [ -122.373065993781964, 37.745411780184988 ], [ -122.373048652458152, 37.745409995374658 ], [ -122.373033005135582, 37.745406810734146 ], [ -122.373017375795953, 37.745404311981943 ], [ -122.372986047234718, 37.74539656950391 ], [ -122.372970365296936, 37.745392011404839 ], [ -122.372956412653693, 37.745387426092684 ], [ -122.372762203193631, 37.745505195897991 ], [ -122.372470578027816, 37.745199439060684 ], [ -122.369079539125323, 37.741643837671482 ], [ -122.367630267152407, 37.740133359644659 ], [ -122.367867173476, 37.739994319504163 ], [ -122.368285236674282, 37.739975330499902 ], [ -122.368274610769845, 37.73982785299647 ], [ -122.371253871422496, 37.739663833776014 ], [ -122.371264036490402, 37.739792777100682 ], [ -122.373407014055843, 37.739660522763742 ], [ -122.373411889309949, 37.739648084177503 ], [ -122.37342198524702, 37.739636936038039 ], [ -122.373432115793747, 37.739627160799976 ], [ -122.373447518947913, 37.739620735634887 ], [ -122.373462992003653, 37.739617055712138 ], [ -122.373518088785445, 37.739607252232659 ], [ -122.373566287640358, 37.739598245135006 ], [ -122.373590404371257, 37.739594428029896 ], [ -122.373616249911393, 37.739590583704633 ], [ -122.373640366284548, 37.739586766320215 ], [ -122.373666246782193, 37.739584294880729 ], [ -122.373690380805215, 37.739581163931668 ], [ -122.373716260600844, 37.739578692217606 ], [ -122.37374042959101, 37.739576934429572 ], [ -122.373766327038652, 37.739575149150085 ], [ -122.373790512990382, 37.739574077808385 ], [ -122.373816427745723, 37.739572978968987 ], [ -122.373890766330462, 37.739571796757524 ], [ -122.373921919428824, 37.739572674766521 ], [ -122.373937443699504, 37.739571054420232 ], [ -122.373952916727561, 37.739567374707711 ], [ -122.373966608670429, 37.739561663140428 ], [ -122.373980265988422, 37.739554578669413 ], [ -122.373992124908327, 37.7395447758934 ], [ -122.374000509598304, 37.739534341645076 ], [ -122.37400713051376, 37.739522561995074 ], [ -122.374012004966914, 37.739510123394709 ], [ -122.37401135577899, 37.739484381479812 ], [ -122.374005858115922, 37.739472108116395 ], [ -122.373998648611916, 37.739460548430131 ], [ -122.373977383644629, 37.739440284566498 ], [ -122.373964927156109, 37.739426404784517 ], [ -122.373936539281573, 37.739398013754517 ], [ -122.373924065496922, 37.739383447517028 ], [ -122.373886618206512, 37.739338719119822 ], [ -122.373874092510491, 37.73932209352359 ], [ -122.373863330238677, 37.739306813334778 ], [ -122.373841788398252, 37.73927556650299 ], [ -122.373820229273036, 37.739243633490574 ], [ -122.373811178157524, 37.739227639083794 ], [ -122.373793059679699, 37.739194964349537 ], [ -122.37378399162607, 37.739178284033066 ], [ -122.373776661019065, 37.739161919174691 ], [ -122.37376932175367, 37.739145210815664 ], [ -122.373761973843884, 37.739128159505157 ], [ -122.373754634592061, 37.73911145141971 ], [ -122.373747286688968, 37.739094400108158 ], [ -122.373741667582067, 37.739077321304478 ], [ -122.373730515575119, 37.739046595957468 ], [ -122.373715767869712, 37.739010433977029 ], [ -122.373701037487336, 37.738974958445688 ], [ -122.373691943857139, 37.738957248164674 ], [ -122.373664687572003, 37.73890514701592 ], [ -122.373643076699025, 37.738871154340984 ], [ -122.373610686734082, 37.738821194992092 ], [ -122.373585652607346, 37.73878863019344 ], [ -122.373573144731495, 37.738772691284012 ], [ -122.373560645155081, 37.738757095055156 ], [ -122.373546408152151, 37.738741183362713 ], [ -122.373533917247101, 37.738725930631098 ], [ -122.373505477884322, 37.738695480140251 ], [ -122.373491266871952, 37.738680598392399 ], [ -122.373459404583869, 37.738651575494011 ], [ -122.373445210895355, 37.73863738019174 ], [ -122.373429288070284, 37.738623211831154 ], [ -122.3734116544736, 37.738609757670034 ], [ -122.37339574066641, 37.738595932799527 ], [ -122.37337984382502, 37.738582794383632 ], [ -122.373362218906536, 37.738569683715227 ], [ -122.373326985681061, 37.738544148008963 ], [ -122.373309377387599, 37.738531723520261 ], [ -122.373290049663908, 37.73851966972861 ], [ -122.37327245903279, 37.738507931680125 ], [ -122.373253139281985, 37.738496221119 ], [ -122.373235557660152, 37.738484826285116 ], [ -122.37321625557793, 37.738473802438271 ], [ -122.373195233367738, 37.738463149022955 ], [ -122.373175939596308, 37.738452468126042 ], [ -122.37315665516681, 37.738442130166042 ], [ -122.373135650277447, 37.738432163191355 ], [ -122.373116382823142, 37.738422511956102 ], [ -122.373074407684399, 37.738403951165793 ], [ -122.373053428763811, 37.738395013578788 ], [ -122.373032458506373, 37.738386419488315 ], [ -122.373011496911786, 37.738378168894329 ], [ -122.372988815182367, 37.738370288453737 ], [ -122.372967870892026, 37.738362724028732 ], [ -122.372945197483872, 37.738355187085482 ], [ -122.372924270503603, 37.738348309104055 ], [ -122.372901615103871, 37.738341458867346 ], [ -122.372878967999199, 37.738334951308275 ], [ -122.372856329555759, 37.738328787245123 ], [ -122.372833699427503, 37.738322966683377 ], [ -122.372811078630633, 37.738317488782812 ], [ -122.372788466148293, 37.738312354383659 ], [ -122.372765862325963, 37.738307563480433 ], [ -122.372743266796775, 37.738303115254908 ], [ -122.372718943193647, 37.738298694765277 ], [ -122.372673787106677, 37.738291171738332 ], [ -122.372649498109226, 37.738288124137178 ], [ -122.372626937542805, 37.738285049061219 ], [ -122.372602656852706, 37.7382823446816 ], [ -122.372578393462533, 37.738280326748381 ], [ -122.372555858502594, 37.738278281341429 ], [ -122.372531604109625, 37.73827660661879 ], [ -122.372507357674976, 37.738275275127862 ], [ -122.37248484935597, 37.738274259373469 ], [ -122.372460620565761, 37.738273614318871 ], [ -122.372436400424391, 37.738273312484985 ], [ -122.37241391770614, 37.738273326399707 ], [ -122.372389714515705, 37.738273711013171 ], [ -122.372365520664644, 37.738274438836385 ], [ -122.372341334769544, 37.738275509891366 ], [ -122.371417572864843, 37.73819782064686 ], [ -122.371336052232962, 37.738188471129725 ], [ -122.371292703605505, 37.738184009138322 ], [ -122.371247643157346, 37.738180261317709 ], [ -122.371204337055175, 37.738177515159229 ], [ -122.371159311524337, 37.738175139928011 ], [ -122.371116023065696, 37.738173080457798 ], [ -122.37107103176993, 37.738172078376202 ], [ -122.371027777876208, 37.738171391502313 ], [ -122.370982812155077, 37.738171418795432 ], [ -122.370937864408404, 37.738172132512091 ], [ -122.370894662370532, 37.738173505218874 ], [ -122.370849740199262, 37.738175248584916 ], [ -122.370806564080581, 37.738177650936933 ], [ -122.370761676121674, 37.738180767178264 ], [ -122.370718534904626, 37.738184542395913 ], [ -122.370673681844693, 37.738189031501626 ], [ -122.370630565847108, 37.738193836375615 ], [ -122.370585739048508, 37.738199355394492 ], [ -122.37054305620137, 37.738152648632216 ], [ -122.370404226449224, 37.73820257996838 ], [ -122.370322939528947, 37.738202496843449 ], [ -122.370241678523712, 37.738203443340097 ], [ -122.37016044308433, 37.738205419463867 ], [ -122.370080971656222, 37.738208740986281 ], [ -122.369999797012667, 37.738213119575086 ], [ -122.369918647931073, 37.738218528065744 ], [ -122.369839254199036, 37.738224938183691 ], [ -122.369758165884022, 37.738232748865137 ], [ -122.369678823605085, 37.738241218785156 ], [ -122.369597795695725, 37.738251431663087 ], [ -122.369570247557576, 37.738256332765289 ], [ -122.369551300103424, 37.738259380031664 ], [ -122.369532343673868, 37.738262084349124 ], [ -122.369494414578227, 37.738266806506552 ], [ -122.369475441227863, 37.738268824632087 ], [ -122.369456458882269, 37.738270498984953 ], [ -122.369437468599656, 37.738271830372412 ], [ -122.369399470072068, 37.738273806697272 ], [ -122.369380461827461, 37.738274451634652 ], [ -122.369342429106254, 37.738275055031856 ], [ -122.369304361157091, 37.738274285523985 ], [ -122.36926627663955, 37.738272829815514 ], [ -122.369228156883779, 37.738270000652726 ], [ -122.369209088902451, 37.738268243244413 ], [ -122.369170934963606, 37.738264041153812 ], [ -122.369151849020255, 37.738261597020717 ], [ -122.369067113471218, 37.738261911373165 ], [ -122.368994202750471, 37.738251049936494 ], [ -122.368911109321047, 37.73824790450054 ], [ -122.36882805041877, 37.73824613163535 ], [ -122.368745017407647, 37.738245388114983 ], [ -122.368662018929072, 37.738246017714694 ], [ -122.36857731722661, 37.738247704629927 ], [ -122.368494370518377, 37.738250393192978 ], [ -122.368411458330385, 37.738254454876298 ], [ -122.368328572028588, 37.738259546453904 ], [ -122.368245711588798, 37.738265667102112 ], [ -122.36816287702834, 37.738272817644742 ], [ -122.368080076965157, 37.738281341033293 ], [ -122.367798933766665, 37.738311550246465 ], [ -122.367519570533148, 37.738343791024903 ], [ -122.367503864887638, 37.738338202509389 ], [ -122.367488228255993, 37.73833536007497 ], [ -122.367472548152278, 37.738330801513577 ], [ -122.367458562672155, 37.738324842640814 ], [ -122.367444551318144, 37.738317854088145 ], [ -122.367432225963285, 37.738309121998832 ], [ -122.367421611792139, 37.73829967606261 ], [ -122.367412700524838, 37.738289173048365 ], [ -122.367405492161083, 37.738277612956487 ], [ -122.367400003950721, 37.738265682239444 ], [ -122.367396227274725, 37.738253037945974 ], [ -122.367394179016159, 37.738240365710134 ], [ -122.367393859886334, 37.738227666344848 ], [ -122.367395269877491, 37.738214939575492 ], [ -122.367400145351439, 37.738202501245944 ], [ -122.367413544289079, 37.738185120751645 ], [ -122.367428767218343, 37.73817148833826 ], [ -122.367445744452965, 37.738158858481917 ], [ -122.367462730293482, 37.738146571300049 ], [ -122.367481470439287, 37.738135286674201 ], [ -122.36750022852209, 37.738124688486586 ], [ -122.367520732277939, 37.73811474935323 ], [ -122.367541261905686, 37.738105839894565 ], [ -122.367561808780295, 37.738097616884474 ], [ -122.367582381528294, 37.738090423549032 ], [ -122.367604708583698, 37.738084232766695 ], [ -122.367627053565442, 37.738078727872157 ], [ -122.367649424083893, 37.738074252931682 ], [ -122.367766437068838, 37.738050766275428 ], [ -122.367843903943097, 37.738036490753885 ], [ -122.367921396310663, 37.738023244315926 ], [ -122.367998923860597, 37.738011370994791 ], [ -122.368076468296522, 37.738000184080214 ], [ -122.368154047223541, 37.737990370018814 ], [ -122.368231651678144, 37.737981585864489 ], [ -122.368311011449208, 37.737973803365058 ], [ -122.368388676621564, 37.737967421684075 ], [ -122.368447213120319, 37.737956879019784 ], [ -122.368493984461352, 37.737959914324698 ], [ -122.368511237973692, 37.737958267267153 ], [ -122.368526753740483, 37.737956304401699 ], [ -122.368543998275101, 37.737954314118795 ], [ -122.368559514040228, 37.737952351249042 ], [ -122.368575012543431, 37.737949701925182 ], [ -122.36859223981395, 37.737947025183189 ], [ -122.368607738314864, 37.737944375855051 ], [ -122.368624947975661, 37.737941012661715 ], [ -122.368655910793635, 37.737934341085214 ], [ -122.368671383403552, 37.737930662345228 ], [ -122.368688576135014, 37.737926612410497 ], [ -122.368719486808203, 37.737917881466693 ], [ -122.368750380211424, 37.737908464062734 ], [ -122.368765818278675, 37.737903412131701 ], [ -122.368781247712349, 37.737898016972643 ], [ -122.368794948383581, 37.737892649505248 ], [ -122.368810368835511, 37.737886911121841 ], [ -122.368825781337947, 37.737880829224856 ], [ -122.368839464732346, 37.737874775025681 ], [ -122.368854868259206, 37.737868350178935 ], [ -122.368868543017058, 37.737861952750357 ], [ -122.368883937913694, 37.737855184948373 ], [ -122.368897604027694, 37.737848444015853 ], [ -122.368911261520921, 37.737841360404865 ], [ -122.368938559214428, 37.737826505902383 ], [ -122.368952199435157, 37.737818735834644 ], [ -122.368960558042616, 37.737807272000303 ], [ -122.368970654743052, 37.73779612423332 ], [ -122.368982505756449, 37.737785978727096 ], [ -122.368996120067735, 37.737777178976209 ], [ -122.369011506288842, 37.737770067382321 ], [ -122.369028672734785, 37.73776498827452 ], [ -122.369045883019595, 37.737761624734098 ], [ -122.369078712268717, 37.737760417244921 ], [ -122.369096068971245, 37.73776288881907 ], [ -122.369113468840041, 37.737767076520647 ], [ -122.369161848333334, 37.73776527896748 ], [ -122.369191211420912, 37.737763783069852 ], [ -122.369249902712198, 37.73775941835428 ], [ -122.369279231606328, 37.737756549525336 ], [ -122.369306822754865, 37.737753364895219 ], [ -122.369336134037468, 37.737749809880221 ], [ -122.369365436669298, 37.73774591108279 ], [ -122.369394721690568, 37.73774132610621 ], [ -122.369422278297634, 37.737736768819744 ], [ -122.369451546734155, 37.737731497366127 ], [ -122.369479077416202, 37.737725909839305 ], [ -122.369508328229003, 37.737719951925108 ], [ -122.369535841646382, 37.737713678482258 ], [ -122.369565066537618, 37.737706690601534 ], [ -122.369592562667947, 37.737699730418903 ], [ -122.36964752037818, 37.737684437405164 ], [ -122.369674981943263, 37.737676104024878 ], [ -122.369702434873361, 37.737667427686809 ], [ -122.369729879161198, 37.737658408116381 ], [ -122.369755577409364, 37.737648729520856 ], [ -122.369783004411687, 37.737639023486132 ], [ -122.369808694010004, 37.737629001653048 ], [ -122.36983436598301, 37.737618293367909 ], [ -122.369861767054431, 37.73760755763697 ], [ -122.369877075781517, 37.737597357165455 ], [ -122.369888995386347, 37.737589957380784 ], [ -122.369902652730687, 37.737582873380028 ], [ -122.369916335982509, 37.737576819055491 ], [ -122.369931756973841, 37.737571080514087 ], [ -122.369945457494808, 37.737565712638037 ], [ -122.369960912683439, 37.737561347002035 ], [ -122.369976376507211, 37.737557324589964 ], [ -122.369991865894718, 37.737554331859151 ], [ -122.370007364616541, 37.737551682615816 ], [ -122.370022880252051, 37.737549719278675 ], [ -122.370060808948153, 37.737544996950575 ], [ -122.370098721055868, 37.737539588147442 ], [ -122.370119388417834, 37.737536169853662 ], [ -122.370138327019674, 37.737532778995096 ], [ -122.370157256636233, 37.737529044913018 ], [ -122.37017617830449, 37.737524967591014 ], [ -122.37021400367405, 37.737516126771574 ], [ -122.370232907361171, 37.737511362724987 ], [ -122.370251803106058, 37.737506255713058 ], [ -122.370270689864256, 37.737500805477644 ], [ -122.370287847523556, 37.73749538296029 ], [ -122.370306725983596, 37.737489589487708 ], [ -122.370325595449458, 37.737483452517054 ], [ -122.370342727177842, 37.737477000039355 ], [ -122.370361588351471, 37.737470520106122 ], [ -122.370378711780674, 37.737463724391766 ], [ -122.370412941358637, 37.737449446778328 ], [ -122.370464233848367, 37.737425970297551 ], [ -122.370498394270641, 37.737408946577332 ], [ -122.370513745375163, 37.737400462163315 ], [ -122.37052385906631, 37.737390000714299 ], [ -122.370534015260773, 37.737381255404934 ], [ -122.370547663865693, 37.737373828103252 ], [ -122.370561364305786, 37.737368460155437 ], [ -122.370576845682166, 37.737365124110752 ], [ -122.370606243142632, 37.737365000764086 ], [ -122.370621879689367, 37.737367842785233 ], [ -122.370637533178453, 37.737371371536177 ], [ -122.370653178706647, 37.737374556499006 ], [ -122.370670526731246, 37.737376684615533 ], [ -122.370687848836141, 37.737377783051812 ], [ -122.370705153660893, 37.737378195033756 ], [ -122.370720694824087, 37.737377261562422 ], [ -122.370737948151799, 37.737375614178688 ], [ -122.370755183506148, 37.737373280351626 ], [ -122.370770656234214, 37.73736960105559 ], [ -122.370787840087672, 37.737365207862915 ], [ -122.370803277557826, 37.737360155669997 ], [ -122.370818689794845, 37.737354073786427 ], [ -122.370832347014144, 37.737346989952236 ], [ -122.370845986935052, 37.737339219115491 ], [ -122.370859609577963, 37.737330762099973 ], [ -122.37087148583683, 37.737321646086173 ], [ -122.370883345501966, 37.737311843608374 ], [ -122.370893458790221, 37.73730138240758 ], [ -122.370905214055995, 37.73728746095329 ], [ -122.370915232622579, 37.737273223985788 ], [ -122.370938760775033, 37.737246068067016 ], [ -122.370952262410057, 37.737232805878257 ], [ -122.370964052918382, 37.737220257585115 ], [ -122.370979300231937, 37.737207654399519 ], [ -122.370992836419262, 37.737195765109583 ], [ -122.371008110346423, 37.737184191861481 ], [ -122.371021663808406, 37.737172989019946 ], [ -122.371038683399732, 37.737162074224159 ], [ -122.371053991182038, 37.737151873609982 ], [ -122.371071037042427, 37.737141988756214 ], [ -122.371088090848829, 37.737132447136844 ], [ -122.371105162626606, 37.737123591955786 ], [ -122.371122242351063, 37.73711508000909 ], [ -122.371141068795652, 37.737107227047161 ], [ -122.371159903532885, 37.737099717313619 ], [ -122.37117875555127, 37.737092894028791 ], [ -122.371197615863039, 37.737086413972314 ], [ -122.371216494148271, 37.737080620353588 ], [ -122.371237109474734, 37.737075142508274 ], [ -122.371256013343697, 37.737070378840897 ], [ -122.371276663229182, 37.737066273617579 ], [ -122.371297321762341, 37.737062511891089 ], [ -122.371316268832857, 37.737059464068786 ], [ -122.371347308485454, 37.737055880822481 ], [ -122.371363160732827, 37.737067303397573 ], [ -122.371385487850503, 37.737061111612277 ], [ -122.371409819958558, 37.737065875598411 ], [ -122.371432414333356, 37.737070323816937 ], [ -122.371456712218176, 37.737073714884438 ], [ -122.371480992125981, 37.737076419506209 ], [ -122.371505255439089, 37.737078437660294 ], [ -122.371529509424818, 37.737080112869066 ], [ -122.371555466903885, 37.73708073037561 ], [ -122.371579678008715, 37.737080689164763 ], [ -122.371603880469053, 37.737080304723065 ], [ -122.371628056995533, 37.737078890598873 ], [ -122.371652224876399, 37.737077133243893 ], [ -122.371676366821816, 37.737074346206427 ], [ -122.371700500120539, 37.737071215938158 ], [ -122.37172460748225, 37.737067055987431 ], [ -122.371748706203064, 37.737062553080534 ], [ -122.371772778971504, 37.737057019942043 ], [ -122.371791673803557, 37.737051912693794 ], [ -122.371807120477257, 37.737047203583948 ], [ -122.371822584094161, 37.737043180929248 ], [ -122.371838065007339, 37.737039844998783 ], [ -122.371853562850688, 37.737037194974249 ], [ -122.371869078682678, 37.737035231662922 ], [ -122.371884611459564, 37.737033954806734 ], [ -122.371907076518241, 37.737033254815913 ], [ -122.371922652170909, 37.737033693814745 ], [ -122.371938237168152, 37.737034476300948 ], [ -122.371953839112081, 37.737035945242191 ], [ -122.371969466994983, 37.737038443858872 ], [ -122.371985103179384, 37.737041285704763 ], [ -122.372000757348985, 37.737044813989243 ], [ -122.372020067187322, 37.7370561815437 ], [ -122.372035876997472, 37.737065887888214 ], [ -122.372049966365637, 37.737075964928742 ], [ -122.372064081677323, 37.737087071645014 ], [ -122.372076467900058, 37.737098205832325 ], [ -122.372088880758042, 37.737110369684729 ], [ -122.372099573180051, 37.737122904509278 ], [ -122.37211027423858, 37.737135782009496 ], [ -122.372119254860294, 37.737149030482428 ], [ -122.372128244823543, 37.737162622169478 ], [ -122.372145506378345, 37.737161318085484 ], [ -122.372167936525273, 37.737159244598097 ], [ -122.372188603686311, 37.73715582594123 ], [ -122.372209253557884, 37.737151721103693 ], [ -122.372228157715924, 37.737146956725766 ], [ -122.372248764338792, 37.737141135477749 ], [ -122.372267624915224, 37.737134655244574 ], [ -122.372283045287503, 37.737128916400529 ], [ -122.372293192944326, 37.737119827982468 ], [ -122.372299822556045, 37.737108391374868 ], [ -122.372301239987792, 37.73709600777574 ], [ -122.372373414633373, 37.737077692981821 ], [ -122.372418232665979, 37.737071830045089 ], [ -122.372464787747589, 37.737066283124271 ], [ -122.372509631380041, 37.737061450384822 ], [ -122.37255449229049, 37.737057303530676 ], [ -122.372599370500893, 37.737053843385567 ], [ -122.372645994751693, 37.737051042199361 ], [ -122.372690898556655, 37.737048611702214 ], [ -122.372735828999197, 37.737047210854271 ], [ -122.372782496496995, 37.737046126017439 ], [ -122.372808401383125, 37.737044683904415 ], [ -122.372830858125084, 37.737043640231676 ], [ -122.372853323170872, 37.737042939785901 ], [ -122.372899999307762, 37.737042197853711 ], [ -122.37292249030402, 37.737042527072028 ], [ -122.372944989951108, 37.737043199511795 ], [ -122.372969218351344, 37.737043844741514 ], [ -122.373014252244417, 37.737046562227299 ], [ -122.373036786152014, 37.737048607558009 ], [ -122.373061049498276, 37.737050625391774 ], [ -122.373083592412328, 37.73705301420835 ], [ -122.37312871282991, 37.73705916390778 ], [ -122.37317385056528, 37.737066000315984 ], [ -122.373196436400818, 37.737070105245131 ], [ -122.373219031568397, 37.737074552835523 ], [ -122.373239897653349, 37.737079028185967 ], [ -122.373285121933037, 37.737089296808776 ], [ -122.373306013982969, 37.737094801824675 ], [ -122.373328651749006, 37.737100966082771 ], [ -122.373370470468529, 37.737113348723689 ], [ -122.373393126235527, 37.737120199135234 ], [ -122.373434996907847, 37.737134641656631 ], [ -122.373455940892711, 37.737142205725576 ], [ -122.373476893541877, 37.737150113291072 ], [ -122.373496125754656, 37.737158391572102 ], [ -122.373538065688621, 37.73717557958782 ], [ -122.373776518618286, 37.737372998626824 ], [ -122.373949450475536, 37.737509653888004 ], [ -122.374125779894442, 37.737643851318353 ], [ -122.374316078561918, 37.737783320091772 ], [ -122.374328378667045, 37.737791021785021 ], [ -122.374342390568998, 37.737798009519793 ], [ -122.374356385166024, 37.737804311076282 ], [ -122.374372082895462, 37.737809555173321 ], [ -122.374387762959685, 37.737814112547987 ], [ -122.374403417067299, 37.737817640792912 ], [ -122.374419053501768, 37.737820482040924 ], [ -122.374434673327585, 37.73782263737381 ], [ -122.374450266821725, 37.73782376248419 ], [ -122.374467562767649, 37.7378238306935 ], [ -122.374483104668272, 37.737822896715045 ], [ -122.3745003576703, 37.737821248786098 ], [ -122.374522744667573, 37.737817458997327 ], [ -122.374650468637824, 37.737875858898875 ], [ -122.374739734976373, 37.737918045764403 ], [ -122.374827316638459, 37.737961976186384 ], [ -122.374913186617448, 37.738006620783011 ], [ -122.374999090980893, 37.738052637675224 ], [ -122.375048414507546, 37.73808824928939 ], [ -122.375108232298459, 37.738128500964891 ], [ -122.375139852148493, 37.738147912836176 ], [ -122.375171464045508, 37.73816698146242 ], [ -122.375203066606062, 37.738185706865586 ], [ -122.375234661212687, 37.738204089023711 ], [ -122.375266237820483, 37.738221784733298 ], [ -122.375299535245929, 37.738239109683342 ], [ -122.375332823679372, 37.738256091403926 ], [ -122.375366094804107, 37.738272386664057 ], [ -122.375399356935574, 37.738288338694765 ], [ -122.375432611110568, 37.738303947479515 ], [ -122.37546757640348, 37.738318842292436 ], [ -122.375502533047822, 37.738333393869439 ], [ -122.375537481043125, 37.738347602210531 ], [ -122.375572411725926, 37.738361124090282 ], [ -122.375609062188403, 37.738374275220636 ], [ -122.375643966907035, 37.738386767402702 ], [ -122.37568059209606, 37.738398888823312 ], [ -122.375717199624106, 37.7384103237871 ], [ -122.375753798499645, 37.738421415514019 ], [ -122.375790388383365, 37.73843216428417 ], [ -122.375828690404418, 37.738442198509603 ], [ -122.375865245990923, 37.738451574074567 ], [ -122.375903521699868, 37.738460578879355 ], [ -122.375941788753465, 37.738469240446264 ], [ -122.375992156916524, 37.738477709334177 ], [ -122.376007733601398, 37.738478148331104 ], [ -122.376025030039884, 37.738478216031723 ], [ -122.376042317820222, 37.738477940778964 ], [ -122.376057859492079, 37.73847700659843 ], [ -122.376075120930508, 37.738475701670041 ], [ -122.376092365729193, 37.738473710277233 ], [ -122.376107872737933, 37.738471403188342 ], [ -122.376125099858029, 37.738468725345385 ], [ -122.376140580868082, 37.738465388575889 ], [ -122.376157790308596, 37.738462024282761 ], [ -122.376188700679592, 37.738453291649634 ], [ -122.376205866785881, 37.738448211222327 ], [ -122.376221296131305, 37.738442814809545 ], [ -122.376265793698082, 37.738424251349997 ], [ -122.376279450587873, 37.738417166611207 ], [ -122.37629309880883, 37.738409738645394 ], [ -122.37632036057704, 37.738393509807281 ], [ -122.376333982797163, 37.738385052434992 ], [ -122.376357734990449, 37.738366819020342 ], [ -122.376369602073851, 37.738357359228573 ], [ -122.376381452512433, 37.738347212973743 ], [ -122.376391573827405, 37.738337094253737 ], [ -122.376401686479809, 37.738326632582023 ], [ -122.376411790448728, 37.738315827134819 ], [ -122.376421885754795, 37.738304678735901 ], [ -122.376430251938501, 37.738293557872694 ], [ -122.376446950667884, 37.738269943226257 ], [ -122.376453571082962, 37.738258163436321 ], [ -122.376017920759935, 37.737991096533946 ], [ -122.37598688059623, 37.737994681015465 ], [ -122.375962730194601, 37.737997125704617 ], [ -122.375940290890341, 37.737998856694041 ], [ -122.375916122804242, 37.738000614653615 ], [ -122.375891946066474, 37.73800202993192 ], [ -122.375869489077928, 37.738003074187837 ], [ -122.375845295342131, 37.738003802450933 ], [ -122.37582109225724, 37.738004187769143 ], [ -122.375798609973742, 37.738004202598695 ], [ -122.375774389906638, 37.738003901450845 ], [ -122.375750161169094, 37.738003256797974 ], [ -122.375727661205985, 37.738002584893898 ], [ -122.37570341480351, 37.738001254060514 ], [ -122.375679160430039, 37.737999579985654 ], [ -122.375656634485836, 37.737997878666114 ], [ -122.375632362435553, 37.737995517861528 ], [ -122.375609819167565, 37.737993130082067 ], [ -122.375585529448685, 37.737990082822328 ], [ -122.37556296919702, 37.737987008302788 ], [ -122.375540391282939, 37.737983247608021 ], [ -122.37551432983625, 37.737978511718602 ], [ -122.375486496320931, 37.737972087487712 ], [ -122.375460382568676, 37.737965292513373 ], [ -122.375432514421007, 37.737957495642242 ], [ -122.375406358052871, 37.737948984242749 ], [ -122.375380184027932, 37.737939786666473 ], [ -122.375353992685788, 37.737929902633333 ], [ -122.375329512792433, 37.737919304628377 ], [ -122.375305015582782, 37.737908020167239 ], [ -122.37528050105756, 37.737896049249933 ], [ -122.375255969224384, 37.737883392151048 ], [ -122.375233148827334, 37.737870020533251 ], [ -122.375210319784216, 37.737856305960051 ], [ -122.375189193529863, 37.73784153419291 ], [ -122.37516805862289, 37.737826419196367 ], [ -122.375146906409697, 37.737810618019523 ], [ -122.375127474300257, 37.737794445826715 ], [ -122.375108024870912, 37.737777586905018 ], [ -122.375090295558422, 37.737760357517622 ], [ -122.375072548933076, 37.737742441676424 ], [ -122.37505479366277, 37.737724182881529 ], [ -122.375038749481291, 37.737705209578436 ], [ -122.375024434427573, 37.737686209306304 ], [ -122.375010102046858, 37.737666522032093 ], [ -122.374995761020472, 37.737646491805087 ], [ -122.374983140446119, 37.737626090835334 ], [ -122.374961338821961, 37.737584547432398 ], [ -122.374950420699136, 37.737563089278161 ], [ -122.374942960095922, 37.737541576104334 ], [ -122.374933762081014, 37.737519747213518 ], [ -122.374928021582775, 37.737497863303837 ], [ -122.374916523276909, 37.737453409032263 ], [ -122.374908906819144, 37.737425717795361 ], [ -122.374901394283526, 37.737402145264888 ], [ -122.374889826731234, 37.737354945185302 ], [ -122.374887491804515, 37.737330946902453 ], [ -122.3748834277893, 37.737306976407964 ], [ -122.374882821609901, 37.737282950341836 ], [ -122.374880487033479, 37.737258952053075 ], [ -122.374882732189576, 37.737210845452722 ], [ -122.374885583514967, 37.737186764643965 ], [ -122.374888443498122, 37.737163027060632 ], [ -122.374893031881015, 37.737139261974114 ], [ -122.37489934935347, 37.73711546937318 ], [ -122.3749056754816, 37.737092019997398 ], [ -122.374921802888267, 37.737045752947004 ], [ -122.374931603466351, 37.737022935008291 ], [ -122.374941413382857, 37.737000460008709 ], [ -122.37495296035803, 37.736978301004505 ], [ -122.374966236069355, 37.736956114489473 ], [ -122.374979529092755, 37.736934614424079 ], [ -122.375009607247023, 37.736892932445095 ], [ -122.375026392362614, 37.736872749981458 ], [ -122.375043186136296, 37.736852911015554 ], [ -122.37504977201327, 37.736839758673845 ], [ -122.375040807874441, 37.736827196605702 ], [ -122.375029742270328, 37.736799903626249 ], [ -122.375025921408564, 37.736785543166128 ], [ -122.37502556634017, 37.73677147091604 ], [ -122.375026931350064, 37.736757027929769 ], [ -122.375028304673904, 37.736742928174571 ], [ -122.375033136164149, 37.736728773387163 ], [ -122.3750397133647, 37.736715277545557 ], [ -122.37504803628174, 37.736702440924056 ], [ -122.375058114591354, 37.736690605907675 ], [ -122.375071641371591, 37.736678372922562 ], [ -122.375085194128815, 37.73666716961273 ], [ -122.375098729567796, 37.736655280124666 ], [ -122.375110518931734, 37.736642731146382 ], [ -122.375122290631623, 37.736629495995757 ], [ -122.375132325623056, 37.736615945119389 ], [ -122.375140614208931, 37.736601735308589 ], [ -122.375147156735764, 37.736586866558262 ], [ -122.375155332379663, 37.736568194818872 ], [ -122.375160085887146, 37.736550950995301 ], [ -122.375166117416924, 37.736515831932394 ], [ -122.375169124525783, 37.736497929449705 ], [ -122.375168232453305, 37.736462576936368 ], [ -122.375163874266519, 37.736426936496883 ], [ -122.375219437861915, 37.736298664625259 ], [ -122.375236617355156, 37.736225597875112 ], [ -122.375493436762397, 37.736054292153611 ], [ -122.375564665724326, 37.73599856352913 ], [ -122.375665547467477, 37.735884334377992 ], [ -122.375736776137472, 37.735828605647917 ], [ -122.375805543594495, 37.735812402863488 ], [ -122.37590130745248, 37.735838004215466 ], [ -122.375948138753657, 37.735843438862048 ], [ -122.375966461137224, 37.735815678053854 ], [ -122.375965386747623, 37.735773118079564 ], [ -122.375936427668094, 37.735722074898895 ], [ -122.375905272384003, 37.735652524496416 ], [ -122.375880455265374, 37.735628540802992 ], [ -122.375898405065016, 37.735586021302886 ], [ -122.375909891231828, 37.735561459614892 ], [ -122.375897018810662, 37.735531105204046 ], [ -122.375855226545227, 37.735519752858821 ], [ -122.375828603150225, 37.735492707640475 ], [ -122.37586986690205, 37.735483123506768 ], [ -122.375876469825457, 37.735470657017984 ], [ -122.375850080018679, 37.735452878901683 ], [ -122.375875629426574, 37.73543736440692 ], [ -122.375902751563189, 37.735415643772811 ], [ -122.37592791070513, 37.735384683844323 ], [ -122.375963949778878, 37.735305136416706 ], [ -122.375989997452365, 37.735240856058539 ], [ -122.376000720711573, 37.735186090510247 ], [ -122.375916941813387, 37.735087162261337 ], [ -122.375874456680464, 37.735048351870503 ], [ -122.37583223555086, 37.735088510886278 ], [ -122.375790902711827, 37.735095349476808 ], [ -122.375731004666164, 37.735120338792314 ], [ -122.375697972699726, 37.73518198337095 ], [ -122.375629431028628, 37.735207109686826 ], [ -122.375573154825574, 37.735238564895731 ], [ -122.37553454675556, 37.735284846828293 ], [ -122.375502844795335, 37.735330675452381 ], [ -122.375460320132888, 37.735358821434986 ], [ -122.375407345243758, 37.735384043468251 ], [ -122.375373074275174, 37.73539660668353 ], [ -122.375319406071526, 37.735394370629407 ], [ -122.375255063184753, 37.735380286724919 ], [ -122.375204090598487, 37.735347791725545 ], [ -122.375165443829161, 37.735324028264564 ], [ -122.37512657258921, 37.735291340362735 ], [ -122.375075747344539, 37.735264680144091 ], [ -122.375062572554327, 37.735222312735722 ], [ -122.375055042872361, 37.735198053755049 ], [ -122.375042101935179, 37.735164953712463 ], [ -122.375037873785985, 37.735134461646254 ], [ -122.375036955812135, 37.735098079446828 ], [ -122.375058051950944, 37.735043149193146 ], [ -122.375007538650593, 37.735028844794947 ], [ -122.3749660498938, 37.735029505033381 ], [ -122.374934543651534, 37.735014555319857 ], [ -122.374908309749543, 37.735002954785188 ], [ -122.374876500793206, 37.734975991875665 ], [ -122.374871744160856, 37.734924563038625 ], [ -122.374892528974101, 37.73485727640653 ], [ -122.374913772355171, 37.7348081807394 ], [ -122.374946666252242, 37.734741044765023 ], [ -122.374988965601105, 37.734703975095854 ], [ -122.375029917257038, 37.734682034854018 ], [ -122.375070713005826, 37.734653916534754 ], [ -122.375104671911529, 37.734628997279636 ], [ -122.375115698854458, 37.734586244981536 ], [ -122.375146199993921, 37.734561380743287 ], [ -122.375129646198275, 37.734522157113517 ], [ -122.375090930945873, 37.734495647813482 ], [ -122.375036267841509, 37.734453940390075 ], [ -122.374981985833443, 37.734427335148574 ], [ -122.374938543580228, 37.734419099017749 ], [ -122.374912994333698, 37.734434613586529 ], [ -122.374893666730827, 37.734422560335261 ], [ -122.374893060571651, 37.734398534257735 ], [ -122.374907614581076, 37.734358472486285 ], [ -122.374894292846008, 37.734310270489409 ], [ -122.374881421402023, 37.734279915955867 ], [ -122.37487704615539, 37.734243588766795 ], [ -122.374869213561681, 37.734207316868407 ], [ -122.374868295688771, 37.734170934936692 ], [ -122.374926339800538, 37.734072496020858 ], [ -122.374952543818168, 37.734014394217503 ], [ -122.374954780508872, 37.73396594408409 ], [ -122.374957241667502, 37.733926418380705 ], [ -122.374963229775304, 37.733889582909434 ], [ -122.374983289721541, 37.733862137955839 ], [ -122.375012218505518, 37.733843479312256 ], [ -122.375069108753891, 37.733836393394171 ], [ -122.375122463708166, 37.733826273440556 ], [ -122.375153432543385, 37.73381994338358 ], [ -122.375171833015472, 37.733795271716147 ], [ -122.375171062228418, 37.733764724622461 ], [ -122.375229769357603, 37.733624041261521 ], [ -122.375288514453459, 37.733553403441164 ], [ -122.375324856119903, 37.733485869092775 ], [ -122.375361353624825, 37.733424512796418 ], [ -122.375375681648336, 37.73337552709593 ], [ -122.375382713915272, 37.733311549522142 ], [ -122.375463619327064, 37.733228197775681 ], [ -122.375509608742206, 37.733200339972562 ], [ -122.375523633451934, 37.73313934134989 ], [ -122.37550722668901, 37.733105952882383 ], [ -122.375651602500071, 37.732933689521552 ], [ -122.375685404494646, 37.732902592027898 ], [ -122.375688325042901, 37.732881256983333 ], [ -122.375650684266844, 37.732897307862871 ], [ -122.375550384562601, 37.732828858101236 ], [ -122.375617693995721, 37.732754993758505 ], [ -122.375573481700997, 37.732716210488881 ], [ -122.375197427066922, 37.732959117287578 ], [ -122.375009435995196, 37.732773602543226 ], [ -122.374988848118562, 37.732780110729863 ], [ -122.374969139909751, 37.732752955276041 ], [ -122.374890774233947, 37.732799869727202 ], [ -122.374867609109913, 37.732772769268017 ], [ -122.374833347919932, 37.732785675832154 ], [ -122.374804918949508, 37.732755568576273 ], [ -122.374609189594366, 37.732880233977106 ], [ -122.374557526391285, 37.732820280340718 ], [ -122.37490487958712, 37.732604958073601 ], [ -122.374821719829242, 37.732530398040169 ], [ -122.37467574043562, 37.732639163620497 ], [ -122.37439309494539, 37.732540308159429 ], [ -122.374310276013688, 37.732547806255845 ], [ -122.374229713731395, 37.732576213850287 ], [ -122.374176359200263, 37.732586333132673 ], [ -122.374120153956625, 37.732620533463049 ], [ -122.374114165533243, 37.73265736889919 ], [ -122.374052159400549, 37.732667282379175 ], [ -122.374002184525267, 37.73267425782587 ], [ -122.373911483788106, 37.732712096999926 ], [ -122.373893083165825, 37.732736768474979 ], [ -122.373883628328045, 37.732773315665987 ], [ -122.373790281780344, 37.732774800286634 ], [ -122.373761509214617, 37.732799636420175 ], [ -122.373753549290342, 37.732826888733754 ], [ -122.373747327007891, 37.732854456775314 ], [ -122.373725625111732, 37.732885361268295 ], [ -122.373694734433712, 37.732894780258938 ], [ -122.373637610789032, 37.732892598419873 ], [ -122.373568854206965, 37.732909142898315 ], [ -122.37354165442683, 37.732927773970779 ], [ -122.373512804196523, 37.732949521278634 ], [ -122.37350146473058, 37.732979917309954 ], [ -122.373503074145475, 37.733043757608968 ], [ -122.373500309404122, 37.733071270654619 ], [ -122.373481674928072, 37.73308667468919 ], [ -122.373435459514155, 37.733105607832456 ], [ -122.373412831615411, 37.733099787091327 ], [ -122.373389322638175, 37.733127629980004 ], [ -122.373370999608952, 37.73315539040528 ], [ -122.373326815604614, 37.733186309201884 ], [ -122.373292553942591, 37.733199214767993 ], [ -122.373255060257023, 37.73322109971145 ], [ -122.373217868644616, 37.733254997012843 ], [ -122.373184748909821, 37.733313208646514 ], [ -122.373147255135009, 37.733335093555283 ], [ -122.373108032325476, 37.733357005665319 ], [ -122.373055135575555, 37.733385315688466 ], [ -122.373026509933439, 37.733415986475677 ], [ -122.372989171414929, 37.733444049131762 ], [ -122.372947104996001, 37.733490385196987 ], [ -122.372903457602277, 37.733542583556414 ], [ -122.372843059429968, 37.73361633669991 ], [ -122.372787475219468, 37.733675248937253 ], [ -122.372660653342237, 37.733789544305665 ], [ -122.372615406285462, 37.73384691842643 ], [ -122.372571792697812, 37.733900489569244 ], [ -122.372542285196062, 37.733964824408801 ], [ -122.372515465283058, 37.733998556633921 ], [ -122.372467598558771, 37.73402060589649 ], [ -122.372390422139858, 37.734046211198297 ], [ -122.372337516324379, 37.734074177664638 ], [ -122.372263676850309, 37.734163595440648 ], [ -122.372229942026564, 37.734197437754013 ], [ -122.37219905926051, 37.734207199576488 ], [ -122.372135400372358, 37.734220228553554 ], [ -122.372066183983833, 37.734218581449781 ], [ -122.37202454003129, 37.734213062859681 ], [ -122.371977485584694, 37.734198702222137 ], [ -122.371931036017173, 37.73420836793948 ], [ -122.371912020534467, 37.734208670054151 ], [ -122.371892468688813, 37.734187692159942 ], [ -122.371850522169254, 37.73417016004948 ], [ -122.371815256975381, 37.734143251243232 ], [ -122.37178360511767, 37.734122465563011 ], [ -122.371757069813924, 37.734098851958706 ], [ -122.371718425134958, 37.734075087082275 ], [ -122.371658811600753, 37.734042727577382 ], [ -122.37159046796063, 37.734007073362946 ], [ -122.371530163390418, 37.733947255979729 ], [ -122.371503472637912, 37.733917463974464 ], [ -122.371452035953411, 37.733866433138324 ], [ -122.371412863920071, 37.733821731652299 ], [ -122.371365343126712, 37.733788836837448 ], [ -122.371306006337434, 37.733698787998705 ], [ -122.37124803587426, 37.73366296856193 ], [ -122.371181508213965, 37.733630718908138 ], [ -122.371142786185317, 37.733603864806447 ], [ -122.371119319714566, 37.733564750701184 ], [ -122.371068652635969, 37.733544266816153 ], [ -122.37104196222009, 37.733514474978968 ], [ -122.371009541074471, 37.733463141702856 ], [ -122.370970292434578, 37.733415350746299 ], [ -122.370945321772282, 37.733385187940364 ], [ -122.370906375642221, 37.733349409875622 ], [ -122.370882676078168, 37.733301028616602 ], [ -122.370853876981954, 37.733256162236223 ], [ -122.370812000355784, 37.733241375562343 ], [ -122.370762102212552, 37.733251438949395 ], [ -122.3707392498319, 37.733236693541137 ], [ -122.370742015947201, 37.733209180555527 ], [ -122.370734029961071, 37.733166730305776 ], [ -122.370713641007328, 37.733112459546398 ], [ -122.370604476976737, 37.73303521894465 ], [ -122.370512089823777, 37.733006126395267 ], [ -122.370444949736466, 37.73294950753936 ], [ -122.370336702208434, 37.732908648655865 ], [ -122.370231912105666, 37.732867735066925 ], [ -122.37017410658585, 37.732838436949166 ], [ -122.370077726716076, 37.732788118918357 ], [ -122.369991114296425, 37.732713610079365 ], [ -122.369927812152071, 37.732672038006164 ], [ -122.369888943911135, 37.73263934837334 ], [ -122.369823835861169, 37.732594714362811 ], [ -122.369764448866945, 37.732571278048333 ], [ -122.369664767427579, 37.732527192896548 ], [ -122.369608556728025, 37.732490658570462 ], [ -122.369587411983062, 37.732476915661685 ], [ -122.369536133374979, 37.732432062044303 ], [ -122.369522426580374, 37.732368414248455 ], [ -122.369524131442745, 37.732298684450967 ], [ -122.369528168991479, 37.732252953067388 ], [ -122.369514764766407, 37.732201317633788 ], [ -122.369460037420595, 37.732156862346898 ], [ -122.369435499832107, 37.732143860523472 ], [ -122.369412699166176, 37.732131174223944 ], [ -122.369391627493243, 37.732118460761214 ], [ -122.369368818907404, 37.732105431490474 ], [ -122.369347729982366, 37.732092031567248 ], [ -122.369305534888653, 37.732064545256826 ], [ -122.36928614837251, 37.732050088222451 ], [ -122.369265033578955, 37.732035658605412 ], [ -122.369208612399049, 37.731992603257169 ], [ -122.36919310687361, 37.731994909435159 ], [ -122.369177583743095, 37.731996529438547 ], [ -122.369162034700395, 37.731997119211783 ], [ -122.369144739776431, 37.731997050503772 ], [ -122.369129147571257, 37.731995924141103 ], [ -122.369113529476451, 37.731993768371993 ], [ -122.369097893772235, 37.731990926153657 ], [ -122.369082241496287, 37.731987397469659 ], [ -122.369068291609253, 37.731982811686983 ], [ -122.369052587205204, 37.731977223921163 ], [ -122.369038602793921, 37.731971265229653 ], [ -122.369026321118199, 37.73196424943503 ], [ -122.36900353818659, 37.731952249503117 ], [ -122.368984376529525, 37.731946716297898 ], [ -122.368965231792913, 37.731941869547697 ], [ -122.368946113651845, 37.731938052736979 ], [ -122.368927003791569, 37.731934578880427 ], [ -122.368907928458668, 37.731932477926101 ], [ -122.368887133122826, 37.731930747340918 ], [ -122.368868091978015, 37.73193001956556 ], [ -122.368847348437356, 37.731930348605978 ], [ -122.368826613520639, 37.731931020594487 ], [ -122.368807642108294, 37.731933038334546 ], [ -122.368788678980067, 37.731935399303374 ], [ -122.368768013114249, 37.731938817366917 ], [ -122.368749101767222, 37.731943237687446 ], [ -122.368730207333343, 37.731948344463113 ], [ -122.368711330849322, 37.731954137677484 ], [ -122.368694217167373, 37.731961276382087 ], [ -122.368680664304932, 37.731972478965581 ], [ -122.368668865613287, 37.731984683814787 ], [ -122.368657084876617, 37.73199757537909 ], [ -122.368648777958526, 37.732011098297363 ], [ -122.368640488989229, 37.732025307656784 ], [ -122.368633936925264, 37.73203983255609 ], [ -122.368629130411534, 37.732055016771099 ], [ -122.368626053219003, 37.732070173558292 ], [ -122.368624712941653, 37.732085646160606 ], [ -122.368625101296246, 37.732101091346223 ], [ -122.368627218283763, 37.732116509115187 ], [ -122.368631063559619, 37.732131899472847 ], [ -122.368636620901697, 37.732146575949926 ], [ -122.368642134756229, 37.73215953657504 ], [ -122.36864418270045, 37.732172208258227 ], [ -122.368644510648082, 37.732185250859203 ], [ -122.368643101337838, 37.732197977925267 ], [ -122.368638226113163, 37.732210416049476 ], [ -122.368633341924749, 37.732222511501767 ], [ -122.368624983881077, 37.732233974774296 ], [ -122.368616599605744, 37.732244408647276 ], [ -122.368606469086217, 37.732254183488791 ], [ -122.368594576099341, 37.732262612829288 ], [ -122.368580928237833, 37.732270039911 ], [ -122.368565516878832, 37.732276121781609 ], [ -122.368551791336984, 37.732280459548285 ], [ -122.368534574353816, 37.732283479507736 ], [ -122.368503527583357, 37.732286718795137 ], [ -122.368474192879688, 37.732289244196302 ], [ -122.368444831940408, 37.732290739916586 ], [ -122.368417182378593, 37.732291521763315 ], [ -122.368387786921161, 37.732291644563965 ], [ -122.368358365231217, 37.732290737683726 ], [ -122.368330655267144, 37.732289116925642 ], [ -122.368301199755848, 37.732286837114728 ], [ -122.368273446651969, 37.732283500211402 ], [ -122.368243956285454, 37.732279847486197 ], [ -122.368216168673811, 37.732275137663905 ], [ -122.368188355181374, 37.73226939815595 ], [ -122.368160533065264, 37.732263315415068 ], [ -122.368141380018642, 37.732258125299396 ], [ -122.368113230055812, 37.732238999945096 ], [ -122.36808681703171, 37.732220190681751 ], [ -122.368058684352292, 37.732201751767072 ], [ -122.36803056030729, 37.7321836557974 ], [ -122.368002444910147, 37.732165903321956 ], [ -122.367974346780599, 37.732148837292527 ], [ -122.367944520376312, 37.73213179865752 ], [ -122.367916439533545, 37.732115419341561 ], [ -122.367886638690265, 37.732099410376478 ], [ -122.367832352327795, 37.732072458330258 ], [ -122.367819906502248, 37.73205892111374 ], [ -122.367804021362375, 37.732046125146958 ], [ -122.367788153134725, 37.73203401563628 ], [ -122.367772302171431, 37.732022592850853 ], [ -122.36775646811256, 37.732011856247048 ], [ -122.36773719473392, 37.732001860615576 ], [ -122.367719666903668, 37.731992524310549 ], [ -122.367700427353682, 37.731983901864261 ], [ -122.367681205751111, 37.731975965856719 ], [ -122.367660281054071, 37.731969086933262 ], [ -122.367641110867112, 37.73196321028319 ], [ -122.367620229304634, 37.731958047484753 ], [ -122.367599364995712, 37.731953571135463 ], [ -122.367576797935783, 37.73195015186301 ], [ -122.367555976757444, 37.731947391638229 ], [ -122.367533461105907, 37.731946031721549 ], [ -122.367512683055082, 37.731944987621269 ], [ -122.367483296703725, 37.731945453417282 ], [ -122.367460850404399, 37.731946839567364 ], [ -122.367440158593624, 37.731949227444112 ], [ -122.367417755407999, 37.731952329443608 ], [ -122.367397106730152, 37.731956433994185 ], [ -122.367376475284885, 37.731961224444852 ], [ -122.367355869716533, 37.731967044845845 ], [ -122.367335281393224, 37.731973551696129 ], [ -122.367316447568555, 37.731981060824729 ], [ -122.367295902357668, 37.73198928380036 ], [ -122.367278831305327, 37.731998138437078 ], [ -122.367261967911546, 37.732015230495207 ], [ -122.367245095194775, 37.732031979335368 ], [ -122.3672282059146, 37.732048041709206 ], [ -122.367209570402153, 37.732063445029034 ], [ -122.36719092591278, 37.732078505124896 ], [ -122.367170544505385, 37.732093249381123 ], [ -122.367151866198881, 37.732106936553961 ], [ -122.367109296757391, 37.732133363410995 ], [ -122.367093954975161, 37.732142190615349 ], [ -122.367075008646182, 37.732145238041312 ], [ -122.367056088868793, 37.732149314858027 ], [ -122.367037194611967, 37.732154421356583 ], [ -122.367020054502376, 37.732160529869304 ], [ -122.367002940956212, 37.732167668322553 ], [ -122.366985852582928, 37.732175836463647 ], [ -122.366968782142251, 37.732184691044218 ], [ -122.366955194489435, 37.732194520522967 ], [ -122.366939895442201, 37.732205063845008 ], [ -122.366921113252403, 37.732214632268928 ], [ -122.366907922208441, 37.732240250159542 ], [ -122.366903055326574, 37.732253031987497 ], [ -122.36689644254804, 37.732265154204406 ], [ -122.366886346633592, 37.732276301798386 ], [ -122.366876207612776, 37.732285733533743 ], [ -122.366862576812395, 37.732293846594757 ], [ -122.366847157024765, 37.732299584734065 ], [ -122.366829956520121, 37.73230329090832 ], [ -122.366814424990764, 37.732304567093777 ], [ -122.366797104132374, 37.732303468361799 ], [ -122.366781459823102, 37.732300282335181 ], [ -122.366765755862758, 37.732294693984812 ], [ -122.366677289399263, 37.732215062245395 ], [ -122.365834112470068, 37.733139703386506 ], [ -122.365856312715465, 37.733197380427903 ], [ -122.365316308712423, 37.733799605173139 ], [ -122.365299125359911, 37.733803997570533 ], [ -122.365281864478533, 37.733805301201542 ], [ -122.365264543279295, 37.733804201695385 ], [ -122.365248890111999, 37.733800672514192 ], [ -122.365233177335227, 37.733794740734439 ], [ -122.365220860913354, 37.733786351644746 ], [ -122.36520850211312, 37.733776246410308 ], [ -122.365199556897281, 37.733764370320301 ], [ -122.365194052497998, 37.733751753307722 ], [ -122.365191987516951, 37.733738394845759 ], [ -122.366541619606664, 37.732183905191341 ], [ -122.366457610712786, 37.732144032787161 ], [ -122.366314210759612, 37.732287082999953 ], [ -122.3662299863946, 37.73223862977143 ], [ -122.365558974179407, 37.732995040740846 ], [ -122.365446339012479, 37.733054852496743 ], [ -122.365330791791507, 37.732998653575926 ], [ -122.365348830518258, 37.732890552295949 ], [ -122.366182259071422, 37.731990790641241 ], [ -122.366150729675482, 37.731974808623058 ], [ -122.366190760220135, 37.731916146203794 ], [ -122.366000047621938, 37.731827832578617 ], [ -122.365157289100338, 37.732769287028631 ], [ -122.365013538239467, 37.732829590952356 ], [ -122.364937337201866, 37.732756287397883 ], [ -122.364966161751269, 37.732664496598098 ], [ -122.365779063978152, 37.731773647061175 ], [ -122.365808723306458, 37.731715149013056 ], [ -122.36565085480737, 37.73162631442078 ], [ -122.364828209515139, 37.732542382802549 ], [ -122.364733415884473, 37.732486198184951 ], [ -122.36510850587311, 37.732065821885968 ], [ -122.363700263748257, 37.731284294325405 ], [ -122.362990310438022, 37.732074612690823 ], [ -122.362876152103269, 37.73214268678057 ], [ -122.362621964702214, 37.732005583479989 ], [ -122.363403772813015, 37.731115242143439 ], [ -122.362852893371198, 37.730800849481362 ], [ -122.362060297076368, 37.731674875973241 ], [ -122.361775005493385, 37.731538605834466 ], [ -122.362457618945527, 37.730761087830871 ], [ -122.36256707070703, 37.730643300895977 ], [ -122.361976423103286, 37.73032884619532 ], [ -122.362085849184908, 37.730210029743688 ], [ -122.362069397962841, 37.730199017017426 ], [ -122.361906454524132, 37.730089941350215 ], [ -122.361876896198638, 37.7300835409455 ], [ -122.361847355773691, 37.730077827250902 ], [ -122.361816112221945, 37.7300731708266 ], [ -122.361786605500626, 37.73006882976096 ], [ -122.361755405286033, 37.7300658891753 ], [ -122.361724221585348, 37.730063635320825 ], [ -122.361693055759957, 37.73006206735193 ], [ -122.361661915051329, 37.730061529615817 ], [ -122.361630792215976, 37.730061677765306 ], [ -122.36159969448822, 37.730062855873037 ], [ -122.361570343233169, 37.730064693102427 ], [ -122.361539288834621, 37.730067587323632 ], [ -122.361508260224696, 37.730071511217581 ], [ -122.361487577348555, 37.730074241551335 ], [ -122.361465200270104, 37.730078372100991 ], [ -122.36144452599406, 37.730081445928768 ], [ -122.361422114524615, 37.730084203562313 ], [ -122.361399676911404, 37.730085931241504 ], [ -122.361377231405925, 37.730087316227653 ], [ -122.361354776950733, 37.730088357713434 ], [ -122.361334025287775, 37.730088341929708 ], [ -122.361311536447275, 37.730088010499266 ], [ -122.361266507191544, 37.730085288263524 ], [ -122.36124396677755, 37.73008289745821 ], [ -122.361223137761826, 37.730079792886535 ], [ -122.361200571564154, 37.73007637239192 ], [ -122.361179716772469, 37.730072238406137 ], [ -122.361157115844946, 37.730067444726025 ], [ -122.361136235265462, 37.730062280776941 ], [ -122.361115337498504, 37.730056430370134 ], [ -122.361094422544639, 37.73004989350558 ], [ -122.361073490411371, 37.73004267045787 ], [ -122.361054278613267, 37.730035076593815 ], [ -122.361035057871703, 37.730027139230472 ], [ -122.361015811356936, 37.73001817245752 ], [ -122.360991310330121, 37.730006541779254 ], [ -122.360878119757459, 37.729906007842899 ], [ -122.360753350678607, 37.729964633086148 ], [ -122.360767411397134, 37.729973682080846 ], [ -122.360779769645887, 37.729983787501872 ], [ -122.360792153340185, 37.729994922882732 ], [ -122.360802816699632, 37.730006428796685 ], [ -122.360811777948271, 37.730018991681831 ], [ -122.360819018860866, 37.730031925100903 ], [ -122.360824539436592, 37.730045229054205 ], [ -122.360830077893482, 37.730059219450361 ], [ -122.360833887418579, 37.730073237154031 ], [ -122.360834600711755, 37.730101724997503 ], [ -122.360833232727501, 37.73011616811506 ], [ -122.360830128237026, 37.730130294747774 ], [ -122.360825286222877, 37.73014410573559 ], [ -122.360820435267328, 37.730157573501607 ], [ -122.360812119233699, 37.73017075290813 ], [ -122.360803785650091, 37.730183245316248 ], [ -122.36079369735269, 37.730194735624472 ], [ -122.360781872558661, 37.730205909995462 ], [ -122.360768293049901, 37.730216082265592 ], [ -122.360754687743039, 37.730225224303872 ], [ -122.360741056659265, 37.73023333693407 ], [ -122.360665462649848, 37.730253072686551 ], [ -122.360627639840885, 37.730261910451617 ], [ -122.360550239838858, 37.730278584111481 ], [ -122.360510654054025, 37.730286076778114 ], [ -122.360471050717251, 37.730292882433631 ], [ -122.360433168073058, 37.730299317816012 ], [ -122.360393539299068, 37.730305094033461 ], [ -122.360353901588383, 37.730310527290548 ], [ -122.36031424736656, 37.730315273520141 ], [ -122.360274575618163, 37.730319333562264 ], [ -122.36023489527426, 37.730323050363999 ], [ -122.360195197398738, 37.730326080703698 ], [ -122.360155491620617, 37.730328767792003 ], [ -122.36011403972519, 37.730330795984656 ], [ -122.360074299227378, 37.730332109868229 ], [ -122.360034550144817, 37.730333080785911 ], [ -122.359994783535413, 37.730333365241471 ], [ -122.359955000437409, 37.730332963218565 ], [ -122.359915208404431, 37.73033221796058 ], [ -122.359854003265156, 37.730305028433676 ], [ -122.359236184689337, 37.730009873800213 ], [ -122.358789557472875, 37.729783434605018 ], [ -122.358957232902597, 37.729711773403928 ], [ -122.358843527027545, 37.729659659273459 ], [ -122.358967948048644, 37.72951794751873 ], [ -122.361421463309, 37.72895351973942 ], [ -122.361888691367042, 37.728828706580281 ], [ -122.361912779413899, 37.728823862451726 ], [ -122.361935121341887, 37.72881835863901 ], [ -122.361959166726493, 37.728811798085822 ], [ -122.361981474603837, 37.72880492162534 ], [ -122.362003764939914, 37.728797358986661 ], [ -122.3620260473499, 37.728789452556619 ], [ -122.362046575060617, 37.728780544041506 ], [ -122.36206882272441, 37.728771264975364 ], [ -122.362089324633246, 37.728761327046321 ], [ -122.362109817923212, 37.728751045337532 ], [ -122.362128556858551, 37.728739761540034 ], [ -122.362149024344589, 37.728728450417933 ], [ -122.362167737129766, 37.728716137213183 ], [ -122.362184713430636, 37.728703507540494 ], [ -122.36220340934922, 37.728690507870553 ], [ -122.362220359498949, 37.7286768487917 ], [ -122.362237301035364, 37.728662846208799 ], [ -122.362250811264033, 37.72864992822533 ], [ -122.362262661390673, 37.728639783385113 ], [ -122.36227275785032, 37.728628636175188 ], [ -122.362281099606278, 37.728616486612424 ], [ -122.362287695612011, 37.728603678193288 ], [ -122.362292545854572, 37.728590210368907 ], [ -122.362295667196847, 37.728576769873541 ], [ -122.36229531457775, 37.728562697566197 ], [ -122.362293242345899, 37.72854899552955 ], [ -122.362289449824587, 37.728535664323587 ], [ -122.362282165799911, 37.728521014856675 ], [ -122.36224367326102, 37.72850308198516 ], [ -122.36222272423764, 37.72849517213659 ], [ -122.362203512030703, 37.728487578468915 ], [ -122.362182580222708, 37.728480355341809 ], [ -122.362161665625351, 37.728473818939591 ], [ -122.36213904001275, 37.728467995754578 ], [ -122.362118159814372, 37.728462831978135 ], [ -122.362095568274697, 37.728458382247503 ], [ -122.36207471387344, 37.728454247869884 ], [ -122.362052148130076, 37.728450827537444 ], [ -122.362029590642308, 37.728447750433155 ], [ -122.362007059652058, 37.728445703269323 ], [ -122.361984536902597, 37.72844399878452 ], [ -122.361962039957774, 37.728443324251103 ], [ -122.361939551266488, 37.728442992945915 ], [ -122.361917071865491, 37.728443004852515 ], [ -122.361894617914601, 37.72844404644146 ], [ -122.361872181160052, 37.728445774480214 ], [ -122.361849752657179, 37.728447845747191 ], [ -122.361830790542825, 37.728450205592154 ], [ -122.36144874592047, 37.728523885066956 ], [ -122.359253585410741, 37.729046466872113 ], [ -122.358871094316868, 37.729171649615353 ], [ -122.35773138480485, 37.729443027877707 ], [ -122.357479163493281, 37.729245451178592 ], [ -122.357874687244575, 37.728949759623752 ], [ -122.360022133800982, 37.7284550828631 ], [ -122.360041044772572, 37.728450663666095 ], [ -122.360061675709247, 37.728445874222452 ], [ -122.360082280872575, 37.728440055093671 ], [ -122.360102877442358, 37.728433892734103 ], [ -122.360121736868166, 37.728427414435657 ], [ -122.360140578770867, 37.728420249959875 ], [ -122.360159404166396, 37.728412398466652 ], [ -122.36017822062847, 37.728404204023278 ], [ -122.360197019904888, 37.728395323122534 ], [ -122.360214082043697, 37.728386126559464 ], [ -122.360231126982725, 37.728376242990407 ], [ -122.360248163333068, 37.728366016466275 ], [ -122.36026519109457, 37.728355446987074 ], [ -122.360282201662045, 37.728344190776504 ], [ -122.36029747473269, 37.728332618361613 ], [ -122.360312739905595, 37.728320702981229 ], [ -122.36033977808566, 37.728295553906939 ], [ -122.360351645599536, 37.728286095712676 ], [ -122.360365302143265, 37.728279012806425 ], [ -122.360378915726486, 37.728270213762769 ], [ -122.360389029601677, 37.728259753167933 ], [ -122.360397388807456, 37.728248290192134 ], [ -122.360404002281641, 37.728236168057407 ], [ -122.360407132887943, 37.728223070833039 ], [ -122.360408534948149, 37.728210000904646 ], [ -122.360406479925388, 37.728196985842978 ], [ -122.360402696345233, 37.728183997528113 ], [ -122.360395481466924, 37.728172094035642 ], [ -122.360384800897904, 37.728159901357934 ], [ -122.360355252076161, 37.728153844345819 ], [ -122.360324001174106, 37.728148844017177 ], [ -122.360292766760338, 37.728144529870931 ], [ -122.360263287371851, 37.728141218642236 ], [ -122.360232104855839, 37.72813896383753 ], [ -122.360200939536938, 37.728137396028139 ], [ -122.360168062497735, 37.728136541413733 ], [ -122.360136940472302, 37.728136689443289 ], [ -122.360105834935908, 37.728137523929909 ], [ -122.360074755867601, 37.72813938835359 ], [ -122.3600437018695, 37.728142282186987 ], [ -122.360012665740157, 37.728145862455676 ], [ -122.359981646088997, 37.728150128906918 ], [ -122.359962709760239, 37.728153518132949 ], [ -122.357157402740128, 37.728825440588068 ], [ -122.357120443323197, 37.728661209162873 ], [ -122.356966039195882, 37.728710340572775 ], [ -122.357700794819991, 37.726282170189641 ], [ -122.358012892774155, 37.726039297958998 ], [ -122.361640904109578, 37.725218727031361 ], [ -122.361254856267323, 37.72416520811381 ], [ -122.357961297733482, 37.724943754212269 ], [ -122.357837451289754, 37.724623976380613 ], [ -122.361242175061918, 37.723839816434847 ], [ -122.361523474456462, 37.723775023602428 ], [ -122.362006156184762, 37.724061314272362 ], [ -122.362085553062059, 37.723986579862476 ], [ -122.364138473489092, 37.725245158496556 ], [ -122.364903800810126, 37.725700019832075 ], [ -122.364922994995325, 37.725706926339846 ], [ -122.364942154395848, 37.72571246021662 ], [ -122.364961297265722, 37.725717307625388 ], [ -122.364980405349158, 37.725720782403215 ], [ -122.364999487582764, 37.725723226947871 ], [ -122.365020272471824, 37.725724614719347 ], [ -122.365041031523262, 37.725724972806269 ], [ -122.365060035904975, 37.725724328578444 ], [ -122.365080734672432, 37.725722284344187 ], [ -122.365099679446047, 37.725719237235722 ], [ -122.365120326525016, 37.725715133358143 ], [ -122.365139219276756, 37.72571002716159 ], [ -122.365158077572545, 37.72570354805417 ], [ -122.365175190160244, 37.725696410130439 ], [ -122.365192276890355, 37.725688241974169 ], [ -122.365209337782844, 37.725679044409119 ], [ -122.365224644000321, 37.725668844532997 ], [ -122.365239933677543, 37.725657958189977 ], [ -122.365253477293393, 37.725646412763744 ], [ -122.365266995070428, 37.725633837929628 ], [ -122.365277047249194, 37.725620974052937 ], [ -122.365288802072243, 37.725607053401404 ], [ -122.365297091312215, 37.725592844257413 ], [ -122.365305371596236, 37.725578292165878 ], [ -122.365311906499173, 37.725563080433261 ], [ -122.365316704663556, 37.725547553385105 ], [ -122.365321493859298, 37.725531682840639 ], [ -122.365324157971415, 37.725500050955006 ], [ -122.365323753109038, 37.725483919287925 ], [ -122.365321628734094, 37.725468158485079 ], [ -122.365319495386515, 37.725452053911503 ], [ -122.365308348911952, 37.725421327973351 ], [ -122.36530105597663, 37.725406335184097 ], [ -122.365293771671986, 37.725391686170454 ], [ -122.365052724436055, 37.725226224132847 ], [ -122.362366609167395, 37.723678947002448 ], [ -122.362750319199407, 37.723258784478411 ], [ -122.359975808223695, 37.721629071078588 ], [ -122.360235314638061, 37.721358523571041 ], [ -122.362997490302945, 37.722979154853967 ], [ -122.363810654823226, 37.722102046578357 ], [ -122.359221672042082, 37.719406711581087 ], [ -122.359190415962686, 37.719401367722426 ], [ -122.359178102953109, 37.719392977976057 ], [ -122.359165764191417, 37.719383558545161 ], [ -122.359156864943031, 37.719373398101943 ], [ -122.359147948527337, 37.719362551202536 ], [ -122.359140734699196, 37.719350647341678 ], [ -122.359135249212571, 37.719338716202891 ], [ -122.359131474551347, 37.719326071336383 ], [ -122.359129420336572, 37.719313055953705 ], [ -122.359129102699868, 37.719300356526816 ], [ -122.359130504470841, 37.719287286600235 ], [ -122.359133643855102, 37.719274532613021 ], [ -122.359136791138639, 37.719262122138936 ], [ -122.359143412603785, 37.719250343285097 ], [ -122.359151771327333, 37.719238880100924 ], [ -122.359815079156419, 37.718522454511614 ], [ -122.359825208614936, 37.718512680409624 ], [ -122.359837083220526, 37.718503565479963 ], [ -122.359848984278528, 37.718495480221421 ], [ -122.359862639071579, 37.718488397362229 ], [ -122.359878056187881, 37.718482660129546 ], [ -122.359891771100081, 37.718477980135759 ], [ -122.359908985921422, 37.718474961146882 ], [ -122.359924497848894, 37.718472999407822 ], [ -122.359940043783581, 37.718472410583125 ], [ -122.359957353082052, 37.718473167366923 ], [ -122.359972959482164, 37.71847498112659 ], [ -122.359988608480634, 37.718478511028351 ], [ -122.360004292526796, 37.718483413828061 ], [ -122.360018273683508, 37.718489373879351 ], [ -122.360032280595263, 37.718496363062989 ], [ -122.360394084962891, 37.718708825628347 ], [ -122.36271365411622, 37.720070891670908 ], [ -122.36303235937622, 37.719710951141145 ], [ -122.363036490990609, 37.719706284726648 ], [ -122.363048348187263, 37.719696483020158 ], [ -122.363061977094034, 37.719688370383778 ], [ -122.363077377690658, 37.719681945993095 ], [ -122.363092812365167, 37.719676895064836 ], [ -122.363110026642786, 37.719673875619748 ], [ -122.363137662964078, 37.719672751789325 ], [ -122.363153270039291, 37.719674565121885 ], [ -122.363173373533897, 37.719648838527299 ], [ -122.363166176233463, 37.71963762109376 ], [ -122.363158953131787, 37.71962537425204 ], [ -122.363155178117267, 37.719612729509564 ], [ -122.363154851195048, 37.719599687141276 ], [ -122.363156260860393, 37.719586960120296 ], [ -122.363161127909819, 37.719574178689925 ], [ -122.363167748765107, 37.719562399610538 ], [ -122.363176106218731, 37.71955093642692 ], [ -122.363656438242259, 37.719054731797513 ], [ -122.362565556645677, 37.718438823432876 ], [ -122.362551540892355, 37.718431490773646 ], [ -122.362539227318422, 37.718423101382719 ], [ -122.362526897237885, 37.718414025524474 ], [ -122.362514558214372, 37.718404606442824 ], [ -122.36250392996385, 37.718394473583345 ], [ -122.36249501352286, 37.718383626930098 ], [ -122.362486088138667, 37.718372437054043 ], [ -122.362478882472217, 37.718360876623265 ], [ -122.362471659607849, 37.718348629736866 ], [ -122.362466165060482, 37.718336355523718 ], [ -122.362462381629214, 37.718323367528868 ], [ -122.362458606799294, 37.718310722761444 ], [ -122.362456543084349, 37.718297364212575 ], [ -122.362455889483016, 37.71827127891747 ], [ -122.362457290995351, 37.718258208943666 ], [ -122.362463550642957, 37.718232014343421 ], [ -122.362473301309748, 37.71820713800021 ], [ -122.362481650470514, 37.718195331904944 ], [ -122.362488271303789, 37.718183552586531 ], [ -122.362498365618194, 37.718172405349378 ], [ -122.362508477828271, 37.718161944830108 ], [ -122.358583730913253, 37.71588288357988 ], [ -122.358723442672868, 37.715731315969869 ], [ -122.362644996220368, 37.718021067053435 ], [ -122.362786346352422, 37.717866035066777 ], [ -122.363866062384275, 37.716726843144961 ], [ -122.359920053051226, 37.714425844522381 ], [ -122.3600361482696, 37.714297997140655 ], [ -122.36397478584415, 37.716580910244524 ], [ -122.364251293111423, 37.716300126312575 ], [ -122.364263175435909, 37.716291354435697 ], [ -122.364276820788504, 37.716283927560291 ], [ -122.364290517794743, 37.716278560323119 ], [ -122.364305977843998, 37.71627453863573 ], [ -122.364321497804667, 37.716272919544586 ], [ -122.364340525947497, 37.716273305108999 ], [ -122.364356149216732, 37.716275805018348 ], [ -122.364370087250265, 37.716280047868423 ], [ -122.364395976814166, 37.716278264915964 ], [ -122.365216452571488, 37.715351584174513 ], [ -122.365237670931208, 37.715301460414111 ], [ -122.365239473467412, 37.715235505999942 ], [ -122.365193066829221, 37.715177525619964 ], [ -122.364773705990487, 37.714932479640773 ], [ -122.364736623334764, 37.714970493365534 ], [ -122.364580089435904, 37.714864468359181 ], [ -122.364552651047106, 37.714804470653064 ], [ -122.364268407924328, 37.714638661242532 ], [ -122.364188831965635, 37.714636830395087 ], [ -122.364013771393857, 37.714550326239625 ], [ -122.364049082949748, 37.714510623951149 ], [ -122.363306902062419, 37.714077710648965 ], [ -122.363268090521188, 37.714115751260778 ], [ -122.363113289075798, 37.714009696947421 ], [ -122.363085852186202, 37.713949698891518 ], [ -122.362801615602848, 37.713783885919405 ], [ -122.362722040595187, 37.71378205408088 ], [ -122.362546983742845, 37.713695547734027 ], [ -122.362582295682941, 37.71365584615441 ], [ -122.361848935833351, 37.713229308027309 ], [ -122.361811844287786, 37.713266977882924 ], [ -122.361655318485532, 37.713160948681605 ], [ -122.361629610933349, 37.71310092296946 ], [ -122.361345380842891, 37.712935106461451 ], [ -122.361265806779613, 37.712933273639017 ], [ -122.361094407643563, 37.712854605021889 ], [ -122.361124337741387, 37.712807091000208 ], [ -122.361139435636801, 37.712788654437141 ], [ -122.361171360606775, 37.712751753157583 ], [ -122.36134313774096, 37.71284552396822 ], [ -122.361365062017143, 37.71289256197857 ], [ -122.361673856292811, 37.713072754562113 ], [ -122.361737876782101, 37.71307483295093 ], [ -122.361918064233436, 37.713159199186485 ], [ -122.361884368625439, 37.713194411838948 ], [ -122.362612508613324, 37.713619658283974 ], [ -122.362644433215863, 37.713582756884641 ], [ -122.362801089987357, 37.713693933186988 ], [ -122.362823024023626, 37.713741313598298 ], [ -122.363131825365173, 37.713921502610397 ], [ -122.363194118414285, 37.713923607543634 ], [ -122.3633743099209, 37.714007971534919 ], [ -122.36334061461109, 37.714043184324609 ], [ -122.364079295520412, 37.714474435984016 ], [ -122.364111219761938, 37.714437534192207 ], [ -122.364267880521169, 37.714548708254327 ], [ -122.36428981575132, 37.714596088660656 ], [ -122.364598624198337, 37.714776273803345 ], [ -122.3646609180052, 37.714778377960677 ], [ -122.364841113248019, 37.714862739696905 ], [ -122.364807418245547, 37.714897952901332 ], [ -122.365388188712686, 37.715236584611482 ], [ -122.364417662979704, 37.716315691686994 ], [ -122.364424868749381, 37.716327252003005 ], [ -122.364428635197243, 37.716339553209288 ], [ -122.36443069025762, 37.716352568505734 ], [ -122.364429280864911, 37.716365295273981 ], [ -122.364446761552514, 37.716372915954452 ], [ -122.364465978782491, 37.716380852784248 ], [ -122.364483468425433, 37.716388816406734 ], [ -122.364500965996967, 37.716397123539672 ], [ -122.364516744604018, 37.716405801242992 ], [ -122.364534251138338, 37.716414451592989 ], [ -122.364551766293047, 37.716423445442487 ], [ -122.364583357274199, 37.716442173479727 ], [ -122.364621964676815, 37.71646491108153 ], [ -122.364637708534104, 37.71647221613857 ], [ -122.364653409330941, 37.716477804506788 ], [ -122.364670803974548, 37.716481993153423 ], [ -122.36468815555574, 37.716484465110796 ], [ -122.364705455483815, 37.716484877975191 ], [ -122.364722720971017, 37.716483917927022 ], [ -122.364739943405979, 37.716481241738855 ], [ -122.364757122787552, 37.716476849410668 ], [ -122.364774250504041, 37.716470397714986 ], [ -122.364791343775195, 37.716462573106803 ], [ -122.364806691205743, 37.716454089407321 ], [ -122.364822022102643, 37.716444919239876 ], [ -122.364837335428504, 37.716435062620917 ], [ -122.364850911876999, 37.716424890408376 ], [ -122.364864471086165, 37.716414031190091 ], [ -122.364878013083185, 37.716402486064425 ], [ -122.364901605717435, 37.716378076804247 ], [ -122.364911648449322, 37.716364869981213 ], [ -122.364916549084953, 37.716353461387165 ], [ -122.364917950128515, 37.716340391380108 ], [ -122.364921087704161, 37.716327637243623 ], [ -122.364924234581224, 37.716315226323587 ], [ -122.364933983827555, 37.716290349774575 ], [ -122.36494722438934, 37.71626679140374 ], [ -122.364953853285272, 37.716255355719817 ], [ -122.364962219394371, 37.716244235619989 ], [ -122.364972322024684, 37.716233431114844 ], [ -122.364982433270342, 37.716222970110884 ], [ -122.364992553124679, 37.716212852333562 ], [ -122.365002690199319, 37.716203421010327 ], [ -122.365014563801225, 37.716194305555454 ], [ -122.365026455321683, 37.716185876818017 ], [ -122.36504008335524, 37.716177763399081 ], [ -122.365052000352904, 37.716170364072397 ], [ -122.365065654230065, 37.716163280882121 ], [ -122.365094741897337, 37.716151145947677 ], [ -122.365110106446139, 37.716143348388663 ], [ -122.365113201618499, 37.716128878372835 ], [ -122.365116304696627, 37.716114751046177 ], [ -122.365122873261583, 37.716100912485444 ], [ -122.365129459055197, 37.716087760653849 ], [ -122.365139510312659, 37.716074896763658 ], [ -122.365149578106625, 37.716062719613106 ], [ -122.365161392080509, 37.716051201814444 ], [ -122.365176644641494, 37.716038942289195 ], [ -122.365188518887109, 37.71602982680561 ], [ -122.365202138268813, 37.716021370414808 ], [ -122.365217494173905, 37.716013229888688 ], [ -122.365231148006444, 37.716006146679064 ], [ -122.365246539040172, 37.715999378773581 ], [ -122.365263666604179, 37.715992927006241 ], [ -122.365279091398932, 37.715987532291955 ], [ -122.365294534108472, 37.71598282401969 ], [ -122.365311721955024, 37.715978774837772 ], [ -122.365328927025729, 37.715975412108293 ], [ -122.365346149321098, 37.715972735831272 ], [ -122.365363388841544, 37.715970746006697 ], [ -122.365380645587578, 37.715969442634552 ], [ -122.365410025637061, 37.715968977361726 ], [ -122.365427334408309, 37.715969733342163 ], [ -122.365444651102152, 37.715970832558476 ], [ -122.365461994328726, 37.715972961443697 ], [ -122.365479354092372, 37.715975776792263 ], [ -122.365495012131262, 37.715979649180539 ], [ -122.365512406698826, 37.715983837428631 ], [ -122.365528089891654, 37.715988739505875 ], [ -122.365543791005862, 37.715994328024976 ], [ -122.36555950900491, 37.716000603002399 ], [ -122.36557523562081, 37.716007221205196 ], [ -122.365589259822642, 37.716014896460429 ], [ -122.365603292648544, 37.71602291521603 ], [ -122.365617342692417, 37.7160316198757 ], [ -122.365631409975279, 37.716041011263187 ], [ -122.365643757615857, 37.716050773249407 ], [ -122.365654385267973, 37.716060905840358 ], [ -122.365666759104258, 37.716071697501043 ], [ -122.365675684345334, 37.716082887145667 ], [ -122.365686355771075, 37.716094735860018 ], [ -122.36572383810848, 37.716141526396989 ], [ -122.365761311532381, 37.716187973699725 ], [ -122.365800496728525, 37.716233707149122 ], [ -122.365839664050739, 37.716278754141264 ], [ -122.365880551762743, 37.716323430505255 ], [ -122.365923158830057, 37.716367736255741 ], [ -122.365965740100123, 37.716411012308278 ], [ -122.366010040727502, 37.716453917744857 ], [ -122.366059638577141, 37.716501202978222 ], [ -122.366081205013529, 37.716533824258086 ], [ -122.366090251696093, 37.716549819043124 ], [ -122.366102754235541, 37.716565759079053 ], [ -122.366113529199154, 37.716581726482502 ], [ -122.366126023477833, 37.716597323283004 ], [ -122.366136789488536, 37.716612947462366 ], [ -122.366161760837542, 37.716643454602135 ], [ -122.366175966176996, 37.71665833756186 ], [ -122.366188442901887, 37.716673247906257 ], [ -122.366216836381071, 37.716702327637208 ], [ -122.36623102450136, 37.716716523860804 ], [ -122.366245204016678, 37.716730377129863 ], [ -122.366261112159151, 37.716744203009718 ], [ -122.366275291685326, 37.716758056275097 ], [ -122.366322963076229, 37.716797474553488 ], [ -122.366340573678841, 37.716810243632011 ], [ -122.36635644703216, 37.716822696320264 ], [ -122.366374040064969, 37.716834778944495 ], [ -122.366389904811129, 37.716846888400809 ], [ -122.366425073654625, 37.716870366632683 ], [ -122.366444377745808, 37.716881735132603 ], [ -122.36646194494493, 37.716892787786946 ], [ -122.366493510758119, 37.716910485903114 ], [ -122.366623549631328, 37.71699392291945 ], [ -122.366755273981596, 37.717075616265298 ], [ -122.367009737276547, 37.717225410385531 ], [ -122.367367636576219, 37.717431936135505 ], [ -122.367722202011066, 37.717643320779338 ], [ -122.367734498100774, 37.717651023186086 ], [ -122.367746786266892, 37.717658382627967 ], [ -122.36776079374863, 37.717665370893641 ], [ -122.367773072942654, 37.717672386836448 ], [ -122.367787080436401, 37.717679375373592 ], [ -122.367799351010589, 37.717686048086428 ], [ -122.367813349884699, 37.717692693393225 ], [ -122.367827331518725, 37.717698652518493 ], [ -122.367841321766008, 37.717704954320148 ], [ -122.367855303397675, 37.717710913167537 ], [ -122.367883249424608, 37.717722144677452 ], [ -122.367898942111211, 37.717727389659409 ], [ -122.367916388621566, 37.717733636645491 ], [ -122.367933775456365, 37.71773748130223 ], [ -122.367951144357875, 37.717740639787564 ], [ -122.367968522563814, 37.717744140937377 ], [ -122.368003243800771, 37.717749770880694 ], [ -122.368020595449934, 37.717752242626815 ], [ -122.368037939165831, 37.717754371132209 ], [ -122.368062204013668, 37.717756733239703 ], [ -122.368254623550371, 37.717776687237738 ], [ -122.368448797013713, 37.717797642645102 ], [ -122.368467860079036, 37.717799400451433 ], [ -122.368488660073098, 37.717801474067137 ], [ -122.368509442812467, 37.717802861224882 ], [ -122.368528488624563, 37.717803932567065 ], [ -122.368549262744196, 37.717804976765201 ], [ -122.368570028222393, 37.717805677183392 ], [ -122.368590785079604, 37.717806034645328 ], [ -122.368609804662938, 37.717806076298423 ], [ -122.368630552892, 37.717806090526203 ], [ -122.368672014835468, 37.717804746062299 ], [ -122.368691009223568, 37.717803758009893 ], [ -122.36871172294353, 37.717802399589416 ], [ -122.368753133102373, 37.717798995459539 ], [ -122.368773820932461, 37.717796607346749 ], [ -122.368818653167253, 37.717791775447523 ], [ -122.368861774362671, 37.71778765768024 ], [ -122.368906640766554, 37.717784198936094 ], [ -122.368949796818114, 37.717781454039603 ], [ -122.368994689457168, 37.717779025212373 ], [ -122.369037870695294, 37.717777309701347 ], [ -122.369082798189922, 37.717776253468948 ], [ -122.369126014299994, 37.717775911103146 ], [ -122.369170967339741, 37.717775884523917 ], [ -122.369202706794994, 37.71780044645373 ], [ -122.369235000726789, 37.717778302338516 ], [ -122.369269687549945, 37.717782559000163 ], [ -122.36928530265682, 37.717784714478952 ], [ -122.369302663340889, 37.717787529532423 ], [ -122.369353034337394, 37.717796687460655 ], [ -122.369368683984078, 37.717800216111328 ], [ -122.369384341918476, 37.717804087992491 ], [ -122.369401728852594, 37.717807932707132 ], [ -122.369417395761204, 37.717812147530914 ], [ -122.36943307096503, 37.717816705859768 ], [ -122.369450475169117, 37.717821237021361 ], [ -122.36948184319013, 37.717831039842252 ], [ -122.369497544990651, 37.717836627832767 ], [ -122.369513237815312, 37.717841872599593 ], [ -122.369527219606752, 37.717847831248413 ], [ -122.36954292970124, 37.717853762465438 ], [ -122.369558648085317, 37.71786003691291 ], [ -122.36957263852355, 37.71786633905797 ], [ -122.369588366230118, 37.717872956442982 ], [ -122.369602365299343, 37.717879601536971 ], [ -122.369618101305662, 37.71788656242515 ], [ -122.369646133989733, 37.717901225512634 ], [ -122.369674183958367, 37.717916575322121 ], [ -122.369702251198532, 37.717932611304448 ], [ -122.369714565153885, 37.717940999952816 ], [ -122.369728616041627, 37.717949704119498 ], [ -122.369740938290732, 37.717958435997602 ], [ -122.369754989198668, 37.717967140710293 ], [ -122.369767320771899, 37.717976215527116 ], [ -122.369804340049498, 37.718004470496631 ], [ -122.369814960605339, 37.718014259471069 ], [ -122.369827317757029, 37.718024364242766 ], [ -122.369837946607149, 37.718034496447622 ], [ -122.369850303765318, 37.718044601216874 ], [ -122.369882215899651, 37.718076027508822 ], [ -122.369892862378947, 37.71808684615722 ], [ -122.36990178884372, 37.718098035472593 ], [ -122.369912443617807, 37.718109197351708 ], [ -122.369930296561293, 37.718131575978724 ], [ -122.36994816678471, 37.718154641056984 ], [ -122.369957110535211, 37.718166516822102 ], [ -122.369967859963296, 37.718181454198835 ], [ -122.36997176593016, 37.718199247125732 ], [ -122.369979594447685, 37.718235519443965 ], [ -122.370002130211063, 37.718306581422858 ], [ -122.370009483835318, 37.718323976252783 ], [ -122.370015117785968, 37.718341741746322 ], [ -122.370022471423681, 37.718359136849926 ], [ -122.370031544728775, 37.71837616073956 ], [ -122.370038898366815, 37.718393555567452 ], [ -122.370047971693708, 37.718410580004878 ], [ -122.370057036030119, 37.718427260670879 ], [ -122.370066109704041, 37.718444284826738 ], [ -122.370075174401222, 37.718460965760372 ], [ -122.370085967071944, 37.718477619260632 ], [ -122.370107466765518, 37.718507493977114 ], [ -122.370126944899795, 37.718525726405055 ], [ -122.370169322597192, 37.718560763475431 ], [ -122.370190485553579, 37.718577252323918 ], [ -122.370213359219747, 37.718593027280086 ], [ -122.370236224957864, 37.718608459268403 ], [ -122.370260801392277, 37.718623176813935 ], [ -122.370285360570904, 37.718637208174954 ], [ -122.370309902493091, 37.718650553351452 ], [ -122.370336155456755, 37.71866318407794 ], [ -122.370362391163113, 37.718675128619182 ], [ -122.370390329287673, 37.718686016031121 ], [ -122.370416530117836, 37.718696587657909 ], [ -122.370444433710631, 37.71870610214912 ], [ -122.370472320036399, 37.718714930179793 ], [ -122.370501917760691, 37.718723044300269 ], [ -122.370529760919823, 37.718730156457141 ], [ -122.370559323753966, 37.718736897386265 ], [ -122.370588852049892, 37.718742265674756 ], [ -122.370618371366675, 37.718747290734377 ], [ -122.370647865465088, 37.718751286094815 ], [ -122.370679070273212, 37.718754567827233 ], [ -122.370708520488662, 37.718756846774177 ], [ -122.370739682448956, 37.718758412075765 ], [ -122.37076908982813, 37.718758975142002 ], [ -122.370800208258856, 37.718758824572994 ], [ -122.370829572444975, 37.718757671489442 ], [ -122.370860647321152, 37.718755804226205 ], [ -122.370891705615989, 37.718753250764479 ], [ -122.37090882433975, 37.718746454957831 ], [ -122.370925978308406, 37.718741032045394 ], [ -122.370944886167507, 37.718736611366033 ], [ -122.370963836875418, 37.718733906823715 ], [ -122.370982814191592, 37.718732231948131 ], [ -122.371005290654622, 37.718732218311914 ], [ -122.371024337093374, 37.718733289519548 ], [ -122.37104342637177, 37.71873607631499 ], [ -122.371062541577928, 37.718739893062697 ], [ -122.371079963024641, 37.718745110167617 ], [ -122.371097419033674, 37.718751700177599 ], [ -122.371113164004626, 37.718759004092 ], [ -122.371128943539134, 37.718767680911924 ], [ -122.371144757299319, 37.718777730917395 ], [ -122.371169489840725, 37.718798626351749 ], [ -122.371180101358092, 37.718808071985954 ], [ -122.371190696288693, 37.71881683115442 ], [ -122.371201281889995, 37.71882524710599 ], [ -122.371213579227003, 37.718832949137195 ], [ -122.37122759590342, 37.718840280490852 ], [ -122.371239875618699, 37.718847296070983 ], [ -122.371253857737614, 37.718853254513917 ], [ -122.371267831218006, 37.718858869728294 ], [ -122.371281796059677, 37.718864141714128 ], [ -122.371297471952232, 37.718868700063226 ], [ -122.37131140222705, 37.718872598863427 ], [ -122.371327043206463, 37.718875784031958 ], [ -122.371342667596267, 37.718878282733641 ], [ -122.371358283000305, 37.718880438211883 ], [ -122.371373872488391, 37.718881564281979 ], [ -122.371383664521929, 37.718882055893282 ], [ -122.371389452976118, 37.718882346579448 ], [ -122.371405016879592, 37.71888244268473 ], [ -122.371420554513023, 37.718881509112791 ], [ -122.371437794199721, 37.718879518405728 ], [ -122.371451465242302, 37.718873120657591 ], [ -122.371465170849277, 37.718868095815367 ], [ -122.371480639690603, 37.718864416415016 ], [ -122.371497879724302, 37.718862425968247 ], [ -122.371520347584678, 37.71886206900686 ], [ -122.371535954687204, 37.718863880954615 ], [ -122.371551596026961, 37.718867066362435 ], [ -122.371567280564975, 37.718871967353337 ], [ -122.371581271363922, 37.718878269258852 ], [ -122.371591935137346, 37.718889773936951 ], [ -122.371604326899728, 37.718901251433785 ], [ -122.371614991032587, 37.718912756378863 ], [ -122.371627374512514, 37.718923890915455 ], [ -122.37163802965712, 37.718935052362468 ], [ -122.371650413137317, 37.718946186622013 ], [ -122.371662779335963, 37.718956634426526 ], [ -122.371676882506705, 37.718967397995137 ], [ -122.371689248373897, 37.718977846076911 ], [ -122.371706869050627, 37.71899095730106 ], [ -122.371720799369825, 37.718994856052753 ], [ -122.371736440738147, 37.718998041161377 ], [ -122.371767706192628, 37.7190037249187 ], [ -122.371798919792468, 37.719007349306651 ], [ -122.371814508961251, 37.719008475049307 ], [ -122.371830090178449, 37.719009257552102 ], [ -122.371845662406855, 37.719009696831492 ], [ -122.371878500616674, 37.719009175012339 ], [ -122.371894038270653, 37.719008241377971 ], [ -122.371925078656488, 37.719005001201246 ], [ -122.371940582079091, 37.719002694647912 ], [ -122.37195607651114, 37.71900004487118 ], [ -122.371971553653992, 37.71899670863877 ], [ -122.371985302469042, 37.7189933998703 ], [ -122.372011244653535, 37.718993674331507 ], [ -122.372032105590733, 37.718998149908998 ], [ -122.372051212270634, 37.719001623269286 ], [ -122.372072029989994, 37.71900438270557 ], [ -122.372092830421707, 37.719006455684564 ], [ -122.372113604920486, 37.719007498979387 ], [ -122.372134362130282, 37.719007855816933 ], [ -122.372155093405652, 37.71900718297038 ], [ -122.372175798752636, 37.719005480714287 ], [ -122.372196486794678, 37.719003091451768 ], [ -122.372215428886747, 37.719000043756004 ], [ -122.372242952424102, 37.718994455566381 ], [ -122.372228495782323, 37.719038292867332 ], [ -122.372270562418365, 37.718992299913033 ], [ -122.372296686505393, 37.718999782068892 ], [ -122.372315810496232, 37.719003942114455 ], [ -122.372334917183963, 37.719007415154145 ], [ -122.372354014888927, 37.719010545244004 ], [ -122.372373104647863, 37.719013332367552 ], [ -122.372411231581538, 37.719016846431828 ], [ -122.372432006094613, 37.719017889945107 ], [ -122.372451034636384, 37.719018274204856 ], [ -122.372470046576993, 37.719017971996969 ], [ -122.372489049518421, 37.7190173262901 ], [ -122.372508043819963, 37.719016337627984 ], [ -122.372528749154483, 37.719014635035279 ], [ -122.372547708522333, 37.719012273465104 ], [ -122.372566659933526, 37.719009568654101 ], [ -122.372585593703946, 37.719006177391961 ], [ -122.372604518825696, 37.719002442899999 ], [ -122.372623426305779, 37.718998021956914 ], [ -122.372640597508592, 37.718993285523204 ], [ -122.372659479381312, 37.718987834613905 ], [ -122.372676624285006, 37.718982068225515 ], [ -122.372693803775505, 37.718977674741716 ], [ -122.372709280880628, 37.718974338412373 ], [ -122.372726511906819, 37.718972004289988 ], [ -122.372754147821666, 37.718970878203621 ], [ -122.372769737688571, 37.718972003808915 ], [ -122.372787072838463, 37.718973788668045 ], [ -122.372804451214719, 37.718977289109326 ], [ -122.372823557579665, 37.718980762349858 ], [ -122.37284089307164, 37.718982546920991 ], [ -122.372859921952113, 37.718982931109217 ], [ -122.372877179265899, 37.718981626639597 ], [ -122.372896130311645, 37.71897892178108 ], [ -122.372913318098071, 37.718974871772126 ], [ -122.372930471966299, 37.718969448293443 ], [ -122.372945853925259, 37.718962336438636 ], [ -122.372961200941234, 37.718953851680254 ], [ -122.37297652269902, 37.718944337228557 ], [ -122.372988361166023, 37.718933848067003 ], [ -122.373153843085163, 37.718881530021171 ], [ -122.373238802575472, 37.718854668953604 ], [ -122.373255964357725, 37.718849588939769 ], [ -122.37327313547901, 37.718844852139163 ], [ -122.373307494324067, 37.718836064994925 ], [ -122.373341870461658, 37.718827964294142 ], [ -122.373376281193742, 37.718821236490271 ], [ -122.37339522352984, 37.718818188324654 ], [ -122.373412437542669, 37.718815167642909 ], [ -122.37344690016738, 37.718810499178815 ], [ -122.37346585979968, 37.718808137455291 ], [ -122.373483108072492, 37.718806489950246 ], [ -122.373502085343517, 37.718804814394282 ], [ -122.373536599865218, 37.718802205264303 ], [ -122.373555594097851, 37.718801216433278 ], [ -122.373572868314369, 37.718800598320655 ], [ -122.373591880194738, 37.718800295931722 ], [ -122.373626463924381, 37.718800432589219 ], [ -122.373645492769242, 37.718800816925153 ], [ -122.373662792940365, 37.718801228479528 ], [ -122.373681839421252, 37.718802298708354 ], [ -122.373699157242569, 37.718803396705297 ], [ -122.373716483716436, 37.718804837926434 ], [ -122.373735538512435, 37.718806251653383 ], [ -122.373752881946515, 37.718808379328088 ], [ -122.373777165315929, 37.718811426700512 ], [ -122.373794552014559, 37.718815270502617 ], [ -122.373811948058801, 37.718819457517874 ], [ -122.373829360718858, 37.718824330994956 ], [ -122.373845054403262, 37.718829575178432 ], [ -122.373862484719027, 37.718835135098523 ], [ -122.373878195029278, 37.718841066016566 ], [ -122.373893923325326, 37.718847682825754 ], [ -122.373909659945298, 37.71885464341419 ], [ -122.373925413867383, 37.718862290179331 ], [ -122.373939439462958, 37.718869964162415 ], [ -122.373953482381623, 37.71887832514637 ], [ -122.373967533942846, 37.718887028806179 ], [ -122.373981594167574, 37.718896075965546 ], [ -122.373995663049072, 37.718905466349945 ], [ -122.374008012263729, 37.718915227454971 ], [ -122.374020370135099, 37.718925331785385 ], [ -122.374032736317702, 37.718935779346666 ], [ -122.374045111848744, 37.718946570122313 ], [ -122.374055767366514, 37.718957731625189 ], [ -122.374066431541209, 37.71896923635375 ], [ -122.374075367055113, 37.718980768858067 ], [ -122.374086048882475, 37.71899295975809 ], [ -122.374103954872169, 37.719017397114996 ], [ -122.374125681340118, 37.719056194989058 ], [ -122.374131204173437, 37.719069498331429 ], [ -122.374142266462783, 37.719096791479657 ], [ -122.374149872102961, 37.719124139622245 ], [ -122.374153683579266, 37.719138156919946 ], [ -122.3741578498839, 37.719166246785271 ], [ -122.374159941681143, 37.71918063453262 ], [ -122.374161014797295, 37.71922319463841 ], [ -122.374159641286965, 37.719237294429277 ], [ -122.374154923616729, 37.719255911162307 ], [ -122.374151882005847, 37.719272441042889 ], [ -122.374149256482738, 37.719305445791825 ], [ -122.374150087278892, 37.719338395550594 ], [ -122.374152239665406, 37.719355186158822 ], [ -122.374156103078988, 37.719371262815855 ], [ -122.374159975148416, 37.71938768269937 ], [ -122.374165558246304, 37.71940338863147 ], [ -122.374172878343202, 37.719419410566459 ], [ -122.374175234931528, 37.719424358448258 ], [ -122.374180181120835, 37.719434745498482 ], [ -122.374187466599793, 37.719449394251313 ], [ -122.374214300358844, 37.719485020571611 ], [ -122.374235611602799, 37.719507343543832 ], [ -122.374246258574956, 37.719518161801837 ], [ -122.374256896895602, 37.719528636832223 ], [ -122.374269254564041, 37.719538741415626 ], [ -122.374281604258542, 37.719548502210912 ], [ -122.374293944962744, 37.719557920058328 ], [ -122.374308005354067, 37.719566967177798 ], [ -122.374322057100812, 37.719575671343499 ], [ -122.374337854486313, 37.719585033911152 ], [ -122.3744195305989, 37.719669918743051 ], [ -122.374421587846186, 37.719682933852702 ], [ -122.374425381745823, 37.719696264692658 ], [ -122.374436392649173, 37.719721498445345 ], [ -122.374441889282195, 37.71973377237201 ], [ -122.374450833933636, 37.719745647518387 ], [ -122.374459769939222, 37.719757179712012 ], [ -122.374468688290634, 37.719768025457228 ], [ -122.37447931836833, 37.719778157235005 ], [ -122.374491667798353, 37.71978791856256 ], [ -122.374503990904699, 37.719796649665334 ], [ -122.374518034054987, 37.71980501030616 ], [ -122.374532059896538, 37.719812684492133 ], [ -122.374546059779846, 37.719819329271196 ], [ -122.374561771037051, 37.719825259811579 ], [ -122.374577455975697, 37.719830160400981 ], [ -122.374594868929591, 37.719835034038724 ], [ -122.374610562881386, 37.719840278119385 ], [ -122.374626299764742, 37.719847238061817 ], [ -122.374642062627359, 37.719855227956486 ], [ -122.37465612311729, 37.71986427503397 ], [ -122.374668489891121, 37.719874722521432 ], [ -122.374679145289875, 37.719885883971763 ], [ -122.374688099006775, 37.719898102595501 ], [ -122.374697069701313, 37.719911007951758 ], [ -122.374702592354737, 37.719924311271022 ], [ -122.374739822583123, 37.719960801838624 ], [ -122.37475222401271, 37.719972622223445 ], [ -122.374766345137616, 37.719984071873611 ], [ -122.374778737572512, 37.719995549034522 ], [ -122.374806962529064, 37.720017761873571 ], [ -122.374835170187708, 37.720039288252636 ], [ -122.374849265365711, 37.720049708213061 ], [ -122.374865089243499, 37.72006010065806 ], [ -122.37487917577208, 37.720070177388315 ], [ -122.374910788226885, 37.720089589372847 ], [ -122.374942383382447, 37.720108314895747 ], [ -122.374958163650305, 37.720116991200911 ], [ -122.37497395257985, 37.720126010730475 ], [ -122.374991452548869, 37.720134316294761 ], [ -122.375007224169792, 37.720142649366764 ], [ -122.375024715142516, 37.720150611705058 ], [ -122.375040478457933, 37.72015860154054 ], [ -122.375057961125222, 37.720166220641822 ], [ -122.375092909153366, 37.7201807723835 ], [ -122.375127822560231, 37.72019395120865 ], [ -122.375147007628541, 37.720200513379581 ], [ -122.375173261961393, 37.720213143025013 ], [ -122.375207993556202, 37.720219114069216 ], [ -122.375227160967086, 37.720224989504935 ], [ -122.375248074399238, 37.720231523871263 ], [ -122.375269005153854, 37.720238744686874 ], [ -122.375280076764881, 37.720243315652858 ], [ -122.375288225222903, 37.720246679460772 ], [ -122.375307453609949, 37.720254957463524 ], [ -122.375326699320624, 37.720263921916157 ], [ -122.375345953350021, 37.720273229597673 ], [ -122.375365216735446, 37.720282880491496 ], [ -122.3753827687447, 37.72029324535653 ], [ -122.37540033807889, 37.720304296671941 ], [ -122.375416187376842, 37.720315718733033 ], [ -122.375433774387304, 37.720327456490914 ], [ -122.375449641361485, 37.720339564994973 ], [ -122.375463797304775, 37.720352387466882 ], [ -122.375479689931566, 37.720365525926404 ], [ -122.375493863198955, 37.720379034573064 ], [ -122.375506317126977, 37.720392914231198 ], [ -122.375520507732517, 37.720407109602149 ], [ -122.375532978645822, 37.720421675715869 ], [ -122.375543729520388, 37.720436612578425 ], [ -122.375556287403313, 37.720454611223573 ], [ -122.375591629223138, 37.720553280549268 ], [ -122.375625259756632, 37.720652664115185 ], [ -122.375655442655059, 37.720752445930557 ], [ -122.375683906273295, 37.720852598477748 ], [ -122.375710658575045, 37.720953464995517 ], [ -122.375751172610691, 37.721120038334149 ], [ -122.375761845674063, 37.721131886137194 ], [ -122.375772510777281, 37.721143390976373 ], [ -122.375784886582679, 37.721154181570967 ], [ -122.375797236053231, 37.721163942215831 ], [ -122.375811288276211, 37.721172646201708 ], [ -122.375827043223865, 37.721180292429615 ], [ -122.375842875795513, 37.721191027973333 ], [ -122.375853514234834, 37.721201502862243 ], [ -122.37586245097873, 37.721213034941265 ], [ -122.375869667665128, 37.721224937774515 ], [ -122.375880696264161, 37.72125085784436 ], [ -122.375882762127716, 37.72126421615711 ], [ -122.375882828626871, 37.721266851037683 ], [ -122.375883125946686, 37.721278631666706 ], [ -122.37587827898912, 37.721292100060857 ], [ -122.375871711967719, 37.721305939209678 ], [ -122.375866881992167, 37.721320094336214 ], [ -122.37586031495924, 37.721333933209785 ], [ -122.375855484972746, 37.721348088061191 ], [ -122.375852374709183, 37.721361872437875 ], [ -122.375847544719377, 37.721376027288905 ], [ -122.375842723382974, 37.721390525091536 ], [ -122.375836520156881, 37.721418779747594 ], [ -122.375830334257259, 37.721447721130588 ], [ -122.375828969677642, 37.721462163887708 ], [ -122.375825876376013, 37.721476634447164 ], [ -122.375821782997832, 37.721519963536267 ], [ -122.375822146806243, 37.721534379045465 ], [ -122.375820790553732, 37.721549165583347 ], [ -122.375822254450057, 37.721607170846063 ], [ -122.375824355645946, 37.721621901779116 ], [ -122.375824719455352, 37.721636317288059 ], [ -122.375830995701023, 37.721679481253183 ], [ -122.375834816633215, 37.721693841711655 ], [ -122.375836908840029, 37.721708229972535 ], [ -122.375840729422237, 37.721722590161676 ], [ -122.375846503274232, 37.721745846994416 ], [ -122.375861785654777, 37.721803288846772 ], [ -122.375867698808605, 37.72183203728941 ], [ -122.375873620283713, 37.721861128963518 ], [ -122.375886199210129, 37.721948486558446 ], [ -122.375891128963588, 37.722006779991005 ], [ -122.37589187393715, 37.722036297459432 ], [ -122.375894433932729, 37.722069219668136 ], [ -122.375899939635701, 37.722081836473912 ], [ -122.375903725267278, 37.722094824309316 ], [ -122.37590923997503, 37.722107784060896 ], [ -122.375913025948279, 37.722120771615856 ], [ -122.375915092187512, 37.722134129920661 ], [ -122.375918886480093, 37.722147460707269 ], [ -122.375920953066782, 37.722160819006419 ], [ -122.375921290909631, 37.722174204834722 ], [ -122.375923357151819, 37.722187563139258 ], [ -122.375923694995222, 37.722200948967497 ], [ -122.375922304438902, 37.722214362319441 ], [ -122.375922642282234, 37.722227748147617 ], [ -122.375921251379538, 37.722241161504989 ], [ -122.375918210730603, 37.722257691412231 ], [ -122.375915160726379, 37.722273878103998 ], [ -122.375910383010535, 37.722290092308178 ], [ -122.375909052749606, 37.722305908524369 ], [ -122.3759060120953, 37.722322438431114 ], [ -122.375902962078825, 37.722338624847808 ], [ -122.375900319899742, 37.722370943166766 ], [ -122.375899007299083, 37.722387445555256 ], [ -122.375899414439516, 37.72240357719398 ], [ -122.375898101492368, 37.722420079587863 ], [ -122.375899331576733, 37.722468817730004 ], [ -122.3759014761321, 37.722485265065941 ], [ -122.375901883280534, 37.722501396978991 ], [ -122.375904027491728, 37.722517844320301 ], [ -122.375908298246003, 37.722550052555519 ], [ -122.375912171213727, 37.722566472367539 ], [ -122.375914306759483, 37.722582576207579 ], [ -122.375918170721874, 37.722598652798467 ], [ -122.375922026023247, 37.722614386162874 ], [ -122.375925889988949, 37.722630462753436 ], [ -122.375931482020547, 37.722646511825495 ], [ -122.3759353376729, 37.72266224518382 ], [ -122.375946504767398, 37.722693656868394 ], [ -122.37595381690933, 37.722709335457893 ], [ -122.375959392311572, 37.72272469779017 ], [ -122.375988606240981, 37.722786038138061 ], [ -122.37599590106781, 37.72280102999747 ], [ -122.376004915302616, 37.722815651110672 ], [ -122.376013938895468, 37.722830615438454 ], [ -122.376030187680101, 37.722857825817606 ], [ -122.376039254253797, 37.722874506280462 ], [ -122.376050040583777, 37.722890815990674 ], [ -122.376059098502594, 37.722907153225577 ], [ -122.376080671185491, 37.722939772641169 ], [ -122.376093177287544, 37.722955711594906 ], [ -122.376103946313975, 37.722971334847365 ], [ -122.376128941223584, 37.723002526570319 ], [ -122.376153918812676, 37.723033031286057 ], [ -122.376166398954496, 37.723047940552881 ], [ -122.376180598856877, 37.723062479064545 ], [ -122.376194807428803, 37.723077360800765 ], [ -122.376223189933157, 37.723105751362802 ], [ -122.37623737252926, 37.723119603414908 ], [ -122.376253283551748, 37.72313342793673 ], [ -122.376285088285584, 37.723160390521265 ], [ -122.37630098199665, 37.723173528583985 ], [ -122.376332751760657, 37.723199118255842 ], [ -122.376350356927531, 37.723211542324023 ], [ -122.37636795274409, 37.723223623174263 ], [ -122.376420715615595, 37.723258836008263 ], [ -122.376438285466264, 37.723269887443685 ], [ -122.376457584424074, 37.723280910784744 ], [ -122.376475145958864, 37.723291618708295 ], [ -122.376513708562953, 37.723312293030197 ], [ -122.376564456486463, 37.723336207150773 ], [ -122.376580211970165, 37.72334385327531 ], [ -122.376595984457055, 37.723352186404895 ], [ -122.376611774265584, 37.723361205435687 ], [ -122.376625852990443, 37.723370938725466 ], [ -122.37663994038509, 37.723381015239809 ], [ -122.37665232535511, 37.723392148965601 ], [ -122.376666438756033, 37.723403255155475 ], [ -122.376677112293109, 37.723415102871243 ], [ -122.376698494734327, 37.723440171193744 ], [ -122.376707475210537, 37.723453419335712 ], [ -122.376716464010698, 37.72346701070871 ], [ -122.376720284514462, 37.723481371145333 ], [ -122.37671721799309, 37.723496871391177 ], [ -122.376707592383568, 37.723526554064598 ], [ -122.376699305900857, 37.723540764010522 ], [ -122.376689273305857, 37.723554315043828 ], [ -122.376679223374595, 37.723567179623807 ], [ -122.376667418664113, 37.723579042064337 ], [ -122.376655545318613, 37.723588158957362 ], [ -122.377080106636114, 37.724240997344516 ], [ -122.377095367932696, 37.724229079787627 ], [ -122.377110646561107, 37.724217848681064 ], [ -122.37712595084453, 37.724207647256506 ], [ -122.377143001604594, 37.724198105004248 ], [ -122.377161806451838, 37.724189564342446 ], [ -122.377180636962038, 37.724182053636206 ], [ -122.377199502834941, 37.724175915820602 ], [ -122.377218385696736, 37.724170464459789 ], [ -122.377239031676282, 37.724166358457559 ], [ -122.377259703667661, 37.724163282404746 ], [ -122.377280401650879, 37.724161235477631 ], [ -122.377302862761439, 37.724160534182147 ], [ -122.377323664781798, 37.724162606235865 ], [ -122.377346194902287, 37.724164650746829 ], [ -122.377366988255417, 37.724166379566732 ], [ -122.377389501730306, 37.724167737606116 ], [ -122.377412006197545, 37.724168752695128 ], [ -122.377432782206725, 37.724169794776564 ], [ -122.377477756104398, 37.724170451485548 ], [ -122.377520967568458, 37.724169762808955 ], [ -122.377543428679331, 37.724169061467578 ], [ -122.377564152674637, 37.724168044443623 ], [ -122.377586596450428, 37.724166656916339 ], [ -122.377609031195107, 37.724164925615 ], [ -122.37762973784686, 37.724163222127238 ], [ -122.377674573698229, 37.724158387131986 ], [ -122.377695245662423, 37.724155310728172 ], [ -122.377717646069129, 37.724152206770718 ], [ -122.377738309358563, 37.724148787133252 ], [ -122.377760692073096, 37.724144996720867 ], [ -122.377801983955891, 37.724136784522699 ], [ -122.377824341339959, 37.724131964408841 ], [ -122.377861378513643, 37.724092230490051 ], [ -122.37790330341987, 37.724109074037422 ], [ -122.377953072363383, 37.724094202731443 ], [ -122.378002859323317, 37.724080017845608 ], [ -122.378052663257023, 37.724066519121855 ], [ -122.378102484525442, 37.724053707103792 ], [ -122.378152322784231, 37.724041581796904 ], [ -122.378202179051058, 37.724030142360959 ], [ -122.378253789425585, 37.724019705304357 ], [ -122.378303679673081, 37.724009639015357 ], [ -122.378375979604911, 37.723996811837594 ], [ -122.378413918203691, 37.723992773262658 ], [ -122.378431150905413, 37.723990438296809 ], [ -122.378450111707437, 37.723988076047718 ], [ -122.378467326705092, 37.723985054355325 ], [ -122.378486270155207, 37.72398200564826 ], [ -122.378503476136444, 37.723978641004621 ], [ -122.378522411247346, 37.723975248785557 ], [ -122.378573978156382, 37.723963095183649 ], [ -122.378592877874951, 37.723958330334597 ], [ -122.378610049829263, 37.723953592485465 ], [ -122.378644375709996, 37.723943431162333 ], [ -122.378661520946679, 37.723937663913084 ], [ -122.378678675540712, 37.723932239601808 ], [ -122.378695812103444, 37.723926129396091 ], [ -122.378711220902375, 37.723920046192298 ], [ -122.378728349122568, 37.723913592475675 ], [ -122.378745468663908, 37.723906795530496 ], [ -122.378760859771077, 37.723900026422747 ], [ -122.378776242185538, 37.723892913537782 ], [ -122.378793344365533, 37.723885430133492 ], [ -122.378808718111543, 37.723877974567344 ], [ -122.378824083164403, 37.723870175223993 ], [ -122.378854795921512, 37.723853890628249 ], [ -122.378885491312118, 37.723836919572342 ], [ -122.378899101889331, 37.723828118382741 ], [ -122.378914431877035, 37.723818946403391 ], [ -122.378928033770805, 37.723809801984345 ], [ -122.378943355765742, 37.723800286764138 ], [ -122.378956948975699, 37.723790799115662 ], [ -122.378970533505296, 37.723780968239559 ], [ -122.378997685199607, 37.72376062003049 ], [ -122.37900953226108, 37.723750473498114 ], [ -122.379023090751858, 37.723739613212317 ], [ -122.37903492981377, 37.723729123165697 ], [ -122.379050155637117, 37.723715832455909 ], [ -122.379063557916822, 37.723698793821882 ], [ -122.379075214748525, 37.72368109629867 ], [ -122.379086879906424, 37.723663742005776 ], [ -122.379098527703903, 37.723645701259585 ], [ -122.379110183827592, 37.723628003743777 ], [ -122.379120103528408, 37.723609990560298 ], [ -122.37913174263177, 37.723591606584641 ], [ -122.379141653299143, 37.723573250178703 ], [ -122.379151555283926, 37.723554550545835 ], [ -122.379159737512083, 37.723536221709345 ], [ -122.379169630463892, 37.723517178854308 ], [ -122.379177804358278, 37.72349850705946 ], [ -122.379185969211122, 37.723479491494309 ], [ -122.379192405639117, 37.723460503774781 ], [ -122.379200561813079, 37.723441145257027 ], [ -122.37921341729573, 37.723402483363635 ], [ -122.379218107928253, 37.723382836762347 ], [ -122.379224535661635, 37.723363505814724 ], [ -122.379233916574677, 37.723324212890873 ], [ -122.379236870433516, 37.723304250354701 ], [ -122.379241561053661, 37.72328460375217 ], [ -122.379250421598357, 37.723224716982607 ], [ -122.379252871777865, 37.723184847614071 ], [ -122.379253905947536, 37.723157361956225 ], [ -122.379253532794493, 37.723142603509906 ], [ -122.379254879369441, 37.723127473715763 ], [ -122.37925797172656, 37.723113003075639 ], [ -122.379262792162919, 37.723098505142787 ], [ -122.379267621960011, 37.723084350150188 ], [ -122.379275925257346, 37.723070826474732 ], [ -122.379284246592633, 37.723057988965195 ], [ -122.379294304689481, 37.723045467662629 ], [ -122.379306117221759, 37.723033947914878 ], [ -122.379319675538511, 37.723023087593674 ], [ -122.379333259872894, 37.723013256399945 ], [ -122.379348598663228, 37.723004427583476 ], [ -122.379363963140094, 37.722996628448691 ], [ -122.379381091436528, 37.722990174630688 ], [ -122.379398245074995, 37.722984750499421 ], [ -122.379417153855258, 37.722980328457844 ], [ -122.379434368594119, 37.722977307172805 ], [ -122.379455083545309, 37.722975946315401 ], [ -122.37947750088145, 37.722973528474888 ], [ -122.379499892178387, 37.722970080951924 ], [ -122.379523994530487, 37.722965919396081 ], [ -122.37954461400976, 37.722960783310853 ], [ -122.379566935863238, 37.722954589966704 ], [ -122.379589240353653, 37.72294771016621 ], [ -122.379609790385288, 37.722939828261154 ], [ -122.379630314379966, 37.722930916948918 ], [ -122.379649092581033, 37.722921346210235 ], [ -122.379669581838826, 37.72291106171236 ], [ -122.379686587876122, 37.72289980269619 ], [ -122.37970530565336, 37.722887829635219 ], [ -122.379722277304509, 37.722875197704134 ], [ -122.379737503175733, 37.722861906898203 ], [ -122.379752711680695, 37.722847929638164 ], [ -122.379767911153763, 37.722833609155607 ], [ -122.379779628445803, 37.722818314142543 ], [ -122.379793065118861, 37.722802648327246 ], [ -122.379812990079841, 37.722770054111137 ], [ -122.379822935192337, 37.722753070549636 ], [ -122.379814676042812, 37.722699980835564 ], [ -122.379867320110051, 37.722593727839261 ], [ -122.379934313833843, 37.722371188860151 ], [ -122.37993733657764, 37.72235397239195 ], [ -122.379942087368576, 37.72233672807188 ], [ -122.379948575592024, 37.722319799663914 ], [ -122.379956801239857, 37.722303186893228 ], [ -122.379965035219655, 37.722286917353493 ], [ -122.37997327788419, 37.722270991313792 ], [ -122.379983257611954, 37.722255380367073 ], [ -122.379994974077178, 37.722240085342186 ], [ -122.380006708591978, 37.72222547675721 ], [ -122.380020188517861, 37.72221152704482 ], [ -122.380035405172549, 37.7221978929784 ], [ -122.380048911140065, 37.722184973215455 ], [ -122.380065900274673, 37.722173027405468 ], [ -122.380082897401252, 37.72216142510468 ], [ -122.38009991257772, 37.722150509242532 ], [ -122.380116944421857, 37.722140279841042 ], [ -122.380135722713177, 37.722130709292628 ], [ -122.380156255096665, 37.722122140839112 ], [ -122.38018021822036, 37.722112487531497 ], [ -122.380200637722609, 37.722099457131471 ], [ -122.380221048535219, 37.722086083501829 ], [ -122.380241450657905, 37.722072366642536 ], [ -122.380260115357089, 37.722058334421121 ], [ -122.38028050009946, 37.72204393110291 ], [ -122.380299156785668, 37.722029555363576 ], [ -122.38031780442914, 37.722014836126135 ], [ -122.380336443389169, 37.721999773934229 ], [ -122.380353345265689, 37.721984396102023 ], [ -122.380371975527709, 37.721968990678377 ], [ -122.380388868360967, 37.721953269620464 ], [ -122.380405753195106, 37.721937205323023 ], [ -122.38043950478324, 37.721904390279654 ], [ -122.380454643491987, 37.721887667118459 ], [ -122.38046977317164, 37.721870601009314 ], [ -122.380498331188051, 37.721837525213786 ], [ -122.38051707392718, 37.721826581710999 ], [ -122.380535826036024, 37.721815981420185 ], [ -122.380554603852772, 37.721806411084629 ], [ -122.380573407703011, 37.721797869875026 ], [ -122.380593957312428, 37.721789987796839 ], [ -122.380614524292966, 37.721782792441729 ], [ -122.380636845696628, 37.721776598619094 ], [ -122.380657456091583, 37.721771119386688 ], [ -122.380679829595536, 37.721766984912172 ], [ -122.380702211442937, 37.721763193939509 ], [ -122.380724628718468, 37.721760775855728 ], [ -122.380747063016599, 37.721759044225237 ], [ -122.380776445603402, 37.721758575115111 ], [ -122.380798931664657, 37.721758902836477 ], [ -122.380821453165254, 37.721760603721208 ], [ -122.380843991677978, 37.721762990510022 ], [ -122.380866547569951, 37.721766064021175 ], [ -122.380887409825149, 37.721770538303247 ], [ -122.380910017489256, 37.721775671167713 ], [ -122.380930914478753, 37.721781517796998 ], [ -122.380951846221805, 37.721788737601223 ], [ -122.380969304166271, 37.72179532613972 ], [ -122.381209663710422, 37.721932611167148 ], [ -122.381595340270607, 37.722141054219321 ], [ -122.381616306935143, 37.722149646808873 ], [ -122.381637264915469, 37.722157896168731 ], [ -122.381659933573118, 37.722165431470607 ], [ -122.381680856812778, 37.722172308193493 ], [ -122.381703500095611, 37.72217881352352 ], [ -122.381718196203238, 37.722182371993462 ], [ -122.381726116975372, 37.722184289451477 ], [ -122.381748725168919, 37.72218942214915 ], [ -122.381771315640577, 37.722193868396147 ], [ -122.38179561782411, 37.722197600566012 ], [ -122.381818182577149, 37.722201017120689 ], [ -122.381842449666692, 37.722203376657269 ], [ -122.381864970966248, 37.722205076798758 ], [ -122.381889211635382, 37.722206406378888 ], [ -122.38191343562309, 37.7222070497657 ], [ -122.381935913473328, 37.722207033764029 ], [ -122.381960093656375, 37.722205960742578 ], [ -122.381984265148091, 37.722204544490268 ], [ -122.382006690514388, 37.722202469399647 ], [ -122.382131855667623, 37.722160639374017 ], [ -122.382053374975868, 37.722202410560982 ], [ -122.382081246609474, 37.722210549386944 ], [ -122.382107407226997, 37.722219401998011 ], [ -122.382135313638244, 37.722228913714801 ], [ -122.38216150904843, 37.7222391397666 ], [ -122.382186002128265, 37.722250422556726 ], [ -122.38221223231281, 37.72226202122625 ], [ -122.382231488067504, 37.722271327773925 ], [ -122.382247234884744, 37.722278630470704 ], [ -122.382264666284939, 37.722284188875534 ], [ -122.382282081008995, 37.722289061364116 ], [ -122.382301180314499, 37.722292189559724 ], [ -122.382316796753315, 37.722294343584274 ], [ -122.382332404500787, 37.722296154380857 ], [ -122.382348055371921, 37.7222996815849 ], [ -122.382362004260912, 37.722304265802613 ], [ -122.382377707967407, 37.722309851797831 ], [ -122.382389988962331, 37.722316866217334 ], [ -122.382402296728699, 37.722324910302142 ], [ -122.382412893137086, 37.722333668461893 ], [ -122.38242351562603, 37.722343456298312 ], [ -122.382432426756893, 37.722353958210256 ], [ -122.382443110446403, 37.72236614862048 ], [ -122.38245541788794, 37.722374192979785 ], [ -122.382471103884711, 37.722379092516256 ], [ -122.382486702960776, 37.722380560066497 ], [ -122.382502223461259, 37.722378938861951 ], [ -122.382529930032874, 37.722380556015445 ], [ -122.382545607695334, 37.722385112585165 ], [ -122.382559626159036, 37.72239244258634 ], [ -122.382571959345043, 37.722401516341982 ], [ -122.382580879888579, 37.72241236145743 ], [ -122.382586386406132, 37.722424977955527 ], [ -122.382590173914764, 37.722437965564282 ], [ -122.382588775856519, 37.722451035493926 ], [ -122.382590834611065, 37.722464050455052 ], [ -122.382598043802759, 37.722475609647852 ], [ -122.382610377359867, 37.722484683668391 ], [ -122.382624352373682, 37.722490297257906 ], [ -122.382641931997384, 37.722501690715291 ], [ -122.38265777418269, 37.72251276857228 ], [ -122.382675345468627, 37.72252381879327 ], [ -122.382692907374491, 37.722534525796839 ], [ -122.382708732877717, 37.722544917184152 ], [ -122.382726277750848, 37.722554937725484 ], [ -122.382745551041126, 37.722564930914963 ], [ -122.382763086877006, 37.722574607955885 ], [ -122.382780614728389, 37.722583942306464 ], [ -122.382799870630677, 37.722593248486184 ], [ -122.382827994635349, 37.722611340684225 ], [ -122.382840310501109, 37.722619727959788 ], [ -122.382856023011854, 37.722625657391347 ], [ -122.382871674315936, 37.722629184245534 ], [ -122.382901057233255, 37.722628714605619 ], [ -122.382920165354051, 37.722632186201139 ], [ -122.382932481579374, 37.722640573461497 ], [ -122.382939690848261, 37.722652132907662 ], [ -122.382943451985241, 37.722664090283487 ], [ -122.382954144152635, 37.722676623878094 ], [ -122.382966546995732, 37.722688443398582 ], [ -122.382978924448281, 37.722699233229207 ], [ -122.382994731944478, 37.722708938137238 ], [ -122.383008785302238, 37.722717641262442 ], [ -122.383026278422236, 37.722725602123852 ], [ -122.383042008015664, 37.722732217987662 ], [ -122.383057685092282, 37.722736774500049 ], [ -122.38307338894937, 37.722742360676712 ], [ -122.38308910115893, 37.722748290082635 ], [ -122.383103093664104, 37.722754590615885 ], [ -122.383131113444662, 37.722768563756851 ], [ -122.383145140734484, 37.722776236913717 ], [ -122.383173212715235, 37.722792269674038 ], [ -122.383185537691887, 37.722801000133508 ], [ -122.383197871022062, 37.722810073823027 ], [ -122.383210213742984, 37.722819490725982 ], [ -122.383220827716869, 37.72282893553853 ], [ -122.383231459072476, 37.722839066252533 ], [ -122.383252652240699, 37.722856582695023 ], [ -122.383275469111652, 37.722869952249027 ], [ -122.383296549234032, 37.722883006473765 ], [ -122.383319349425548, 37.722895689831176 ], [ -122.383342123188228, 37.72290734351234 ], [ -122.383366616328686, 37.722918626335904 ], [ -122.383389364359843, 37.722929250325038 ], [ -122.383413814380745, 37.722938817278958 ], [ -122.383431263763498, 37.722945061956594 ], [ -122.383518693416903, 37.722983494694461 ], [ -122.38360968436416, 37.72302599052874 ], [ -122.383623746538206, 37.723035036256725 ], [ -122.383636106408431, 37.723045139846334 ], [ -122.383646772299514, 37.723056643431036 ], [ -122.383655727872323, 37.723068861366919 ], [ -122.383661243319395, 37.723081821039202 ], [ -122.383666776856799, 37.723095467151623 ], [ -122.383670581632771, 37.723109140906679 ], [ -122.383676097085413, 37.723122100578188 ], [ -122.383683315208287, 37.723134002929086 ], [ -122.383695684140434, 37.723144449457912 ], [ -122.383708017935533, 37.723153523087994 ], [ -122.383722027960033, 37.72316050972421 ], [ -122.383732835965688, 37.72316905039996 ], [ -122.383734379158653, 37.723170269802985 ], [ -122.38373469231658, 37.723182625929454 ], [ -122.383748702349067, 37.723189612562479 ], [ -122.383764362513205, 37.723193482523506 ], [ -122.383781689859717, 37.723194922268853 ], [ -122.383795343242184, 37.723187836915955 ], [ -122.383821435159561, 37.723193943333669 ], [ -122.383828644613416, 37.723205502449808 ], [ -122.383835888866727, 37.723218434468372 ], [ -122.383841404702011, 37.72323139412638 ], [ -122.383848657659414, 37.723244669369848 ], [ -122.383852462137753, 37.723258343398804 ], [ -122.383857987017038, 37.723271646001557 ], [ -122.383861791837163, 37.723285319750062 ], [ -122.383865605358181, 37.723299336724111 ], [ -122.383867681419986, 37.723313038392696 ], [ -122.38387185196801, 37.723341127615335 ], [ -122.383872226038946, 37.723355886046527 ], [ -122.383879757398802, 37.723380144510621 ], [ -122.383887280063988, 37.723404059748461 ], [ -122.383896426763826, 37.723423828636541 ], [ -122.383903627551987, 37.723435044521956 ], [ -122.383914233002187, 37.723444146045374 ], [ -122.383928243093862, 37.723451132382195 ], [ -122.383956011009261, 37.72345515232913 ], [ -122.383982041442252, 37.723458856142138 ], [ -122.384009791963194, 37.723462189624996 ], [ -122.384035805692207, 37.723465206963674 ], [ -122.384063530109799, 37.723467510482209 ], [ -122.384089526103082, 37.723469841637751 ], [ -122.384136280611983, 37.723472527510232 ], [ -122.384158819757118, 37.723474913938858 ], [ -122.384181376305577, 37.723477986814515 ], [ -122.384203958613327, 37.723482089368453 ], [ -122.384224830245174, 37.723486906009427 ], [ -122.38424745675556, 37.723492724672354 ], [ -122.384268380608177, 37.72349960093424 ], [ -122.384289321860564, 37.723507163369192 ], [ -122.384308551747594, 37.72351543990402 ], [ -122.384327808428154, 37.723524745827085 ], [ -122.384347090879899, 37.723535081704128 ], [ -122.384364653265465, 37.723545788456732 ], [ -122.384377022361861, 37.723556234913332 ], [ -122.38438594261595, 37.723567079901137 ], [ -122.384394846160177, 37.723577238425868 ], [ -122.384405469087795, 37.72358702608161 ], [ -122.384417785645866, 37.723595413459996 ], [ -122.384430084788605, 37.72360311383661 ], [ -122.384444086263514, 37.723609757160801 ], [ -122.384458052932075, 37.723615027580706 ], [ -122.384473782841141, 37.723621643252429 ], [ -122.38448780172817, 37.72362897302272 ], [ -122.384501846725257, 37.723637332468307 ], [ -122.384515900428013, 37.723646035137868 ], [ -122.384528251811574, 37.723655795132643 ], [ -122.384538892173168, 37.723666269227522 ], [ -122.384549541240418, 37.723677086547099 ], [ -122.38456021641889, 37.723688933542604 ], [ -122.384570943824258, 37.723702840165593 ], [ -122.384581645111282, 37.723715716561451 ], [ -122.384595785866907, 37.72372785147779 ], [ -122.384609917924237, 37.723739643166766 ], [ -122.384624023876995, 37.723750405177114 ], [ -122.384639831811498, 37.723760109862766 ], [ -122.384657351467936, 37.723769100432129 ], [ -122.384674853030802, 37.723777404558668 ], [ -122.384688837160766, 37.723783361676922 ], [ -122.384702838685783, 37.723790004695601 ], [ -122.384716875034059, 37.72379802088971 ], [ -122.384727472270853, 37.723806778833662 ], [ -122.38473981501231, 37.723816195854965 ], [ -122.384750446723075, 37.723826326704874 ], [ -122.384759367064078, 37.723837171663916 ], [ -122.38476655931882, 37.723848044270227 ], [ -122.384773760272395, 37.723859259827094 ], [ -122.38478439233964, 37.723869390668334 ], [ -122.384795006310796, 37.723878835068398 ], [ -122.384807314596031, 37.723886878899947 ], [ -122.384821316158124, 37.723893522179033 ], [ -122.384835282906707, 37.723898792553967 ], [ -122.384850942931138, 37.723902662375643 ], [ -122.384889238702442, 37.723912694229192 ], [ -122.384901537953482, 37.723920394830778 ], [ -122.38491387167187, 37.723929468064433 ], [ -122.384922801444858, 37.72394065622548 ], [ -122.384935378901247, 37.72395934004836 ], [ -122.384946228617792, 37.723978051514877 ], [ -122.384957095057587, 37.723997449442578 ], [ -122.384966251165253, 37.724017561465779 ], [ -122.384978611028657, 37.724027664643877 ], [ -122.384989269262093, 37.72403882514314 ], [ -122.384998216130384, 37.724050700029551 ], [ -122.385005451957767, 37.724063288474291 ], [ -122.385012696499402, 37.724076220418716 ], [ -122.385016466753711, 37.724088521225767 ], [ -122.38502538751068, 37.724099366158697 ], [ -122.385037712928536, 37.724108096697165 ], [ -122.385053408173405, 37.724113339388623 ], [ -122.385069016362493, 37.724115149547565 ], [ -122.385084528456687, 37.724113184503125 ], [ -122.385101700039968, 37.72410844598258 ], [ -122.385118888340344, 37.724104393921756 ], [ -122.385137831886752, 37.724101343865193 ], [ -122.385156818620402, 37.72410001021359 ], [ -122.385179288343707, 37.72409965064211 ], [ -122.385196616267564, 37.724101089899079 ], [ -122.385215698411002, 37.724103531450261 ], [ -122.385233087637133, 37.724107373824481 ], [ -122.385250510990446, 37.724112588834913 ], [ -122.385267961148685, 37.724118833233817 ], [ -122.385283708655592, 37.724126135522596 ], [ -122.385301210711177, 37.724134439275502 ], [ -122.385316914686456, 37.724140025157403 ], [ -122.38533260125142, 37.724144924586071 ], [ -122.385348261353599, 37.724148794341509 ], [ -122.385363904735826, 37.724151977632673 ], [ -122.385381250095534, 37.724154103588141 ], [ -122.385396840549205, 37.724155227532641 ], [ -122.38541414272278, 37.724155637349959 ], [ -122.385429689989081, 37.72415504515677 ], [ -122.385446939582977, 37.72415339589606 ], [ -122.385464163048326, 37.724150716681571 ], [ -122.385486461018303, 37.724147348627724 ], [ -122.385517561871112, 37.724142651083937 ], [ -122.385562344261174, 37.724135753744811 ], [ -122.385579620308761, 37.724135133861189 ], [ -122.385595245944231, 37.724137630950658 ], [ -122.38560923890941, 37.724143930635698 ], [ -122.385619835954955, 37.724152688504432 ], [ -122.38562873939226, 37.72416284694048 ], [ -122.385639388343563, 37.724173664166216 ], [ -122.38565002928155, 37.724184138154342 ], [ -122.385662389611269, 37.724194241254921 ], [ -122.385674732182835, 37.724203657908639 ], [ -122.385688794837932, 37.724212703663014 ], [ -122.385702840080384, 37.724221062964645 ], [ -122.385716876624841, 37.724229079313623 ], [ -122.385730887033873, 37.724236065435178 ], [ -122.385746617533329, 37.724242680930779 ], [ -122.385762330273252, 37.724248609978716 ], [ -122.385778025598896, 37.724253852573533 ], [ -122.385798932390358, 37.72426004211173 ], [ -122.385816364866457, 37.72426559998376 ], [ -122.385832086325422, 37.724271872247911 ], [ -122.38584781649574, 37.724278487735482 ], [ -122.38586357244958, 37.724286132903025 ], [ -122.385877617725541, 37.724294492183716 ], [ -122.38589340051098, 37.724303167287317 ], [ -122.385905743122947, 37.724312583642103 ], [ -122.385919823251839, 37.72432231609433 ], [ -122.385932192689026, 37.724332762111779 ], [ -122.38594985163823, 37.724347244101757 ], [ -122.385963914360929, 37.724356290097674 ], [ -122.385979679391255, 37.72436427819499 ], [ -122.385995409594287, 37.724370893662766 ], [ -122.386012824706015, 37.72437576560376 ], [ -122.386028493940515, 37.724379978214039 ], [ -122.38604418931267, 37.724385220773271 ], [ -122.386058173659734, 37.724391177453832 ], [ -122.386072175428609, 37.724397820583704 ], [ -122.386086194619651, 37.724405150162887 ], [ -122.386098511495945, 37.724413537089887 ], [ -122.386110837084971, 37.724422267241074 ], [ -122.386121460359277, 37.724432054740767 ], [ -122.386155140875701, 37.724396492269392 ], [ -122.386142558844625, 37.724445794903964 ], [ -122.386158314864247, 37.724453440031894 ], [ -122.386174045447717, 37.724460055470189 ], [ -122.386191469295412, 37.724465270335628 ], [ -122.386208867014332, 37.724469455522041 ], [ -122.386227957996084, 37.724472240134631 ], [ -122.386245295090333, 37.724474022731769 ], [ -122.38626432544568, 37.724474404754595 ], [ -122.386288541146868, 37.724474703747106 ], [ -122.386305877897456, 37.724476486340883 ], [ -122.386321468785383, 37.724477610432025 ], [ -122.386338779051741, 37.724478363075484 ], [ -122.386354352857126, 37.724478800431207 ], [ -122.386371637343302, 37.724478523662484 ], [ -122.386387184323809, 37.724477931348545 ], [ -122.38640445173273, 37.72447696811853 ], [ -122.386419972931165, 37.7244753463929 ], [ -122.386437213858997, 37.724473353487241 ], [ -122.386452717618937, 37.724471044757188 ], [ -122.386469932064344, 37.724468022175898 ], [ -122.386485410039811, 37.724464684034231 ], [ -122.386500878956426, 37.724461002670601 ], [ -122.38651633915967, 37.724456978079473 ], [ -122.386531781598762, 37.724452267315506 ], [ -122.386547242137226, 37.724448242440204 ], [ -122.386564474343317, 37.72444590629047 ], [ -122.386579960337627, 37.724442911647458 ], [ -122.386595429583735, 37.724439229991283 ], [ -122.386610881065096, 37.724434862162283 ], [ -122.386626315119955, 37.724429807880355 ], [ -122.38664173140225, 37.724424067151048 ], [ -122.386657130948578, 37.724417639957707 ], [ -122.386670792994096, 37.724410897498451 ], [ -122.386684437604913, 37.724403468312111 ], [ -122.386698064780759, 37.724395352398709 ], [ -122.386709954455839, 37.724386921220365 ], [ -122.386721827401047, 37.724377803853415 ], [ -122.386733682558045, 37.724367999490731 ], [ -122.386743808927534, 37.724358223089439 ], [ -122.386753901134114, 37.724347073774396 ], [ -122.386760492536993, 37.724334263702232 ], [ -122.386768838521292, 37.724322455623209 ], [ -122.386780684957245, 37.724312308304832 ], [ -122.386796092835809, 37.724306224324238 ], [ -122.386814983740024, 37.72430111465097 ], [ -122.386833900781468, 37.724297034651016 ], [ -122.38685286104193, 37.724294670780772 ], [ -122.386873576231366, 37.724293308893905 ], [ -122.386890817450478, 37.724291315916268 ], [ -122.38690624274291, 37.724285918372097 ], [ -122.386918141436212, 37.724277830392509 ], [ -122.386928250341739, 37.724267367524348 ], [ -122.386934850421213, 37.724254900667695 ], [ -122.386936248094955, 37.724241830684782 ], [ -122.386934179470913, 37.724228472583448 ], [ -122.386932102818292, 37.724214770970946 ], [ -122.386933491079674, 37.72420135749902 ], [ -122.386933168672044, 37.724188658157658 ], [ -122.386929398441154, 37.724176357406598 ], [ -122.386923908138428, 37.72416442757148 ], [ -122.386916706823882, 37.724153211871986 ], [ -122.386907811932304, 37.724143397033281 ], [ -122.38689548628895, 37.724134666690496 ], [ -122.386883203877176, 37.724127652753772 ], [ -122.386867500139488, 37.724122067349683 ], [ -122.386837811685524, 37.724110524813227 ], [ -122.386792314266742, 37.724089278160726 ], [ -122.386769557372673, 37.724078311594091 ], [ -122.386748519865691, 37.724066974120603 ], [ -122.386725745213752, 37.72405532110006 ], [ -122.386704690294678, 37.724043297167768 ], [ -122.386683626669864, 37.724030930006215 ], [ -122.386641482023506, 37.72400550949537 ], [ -122.386620400988434, 37.723992455596928 ], [ -122.386599311255594, 37.723979058743758 ], [ -122.386579941254908, 37.723965290981276 ], [ -122.386544701706455, 37.723939416215046 ], [ -122.386297403385385, 37.72380190986933 ], [ -122.386051808287206, 37.723663345927129 ], [ -122.386034340737112, 37.723656414643614 ], [ -122.385999441189313, 37.723643925509059 ], [ -122.385964559071653, 37.723632122815218 ], [ -122.385936677777778, 37.723623641958845 ], [ -122.385920974203756, 37.723618055878958 ], [ -122.385906946468538, 37.723610383053618 ], [ -122.385894611983545, 37.723601309659934 ], [ -122.385883963077092, 37.723590492456275 ], [ -122.385875024838413, 37.723578961136361 ], [ -122.38586953474902, 37.723567031250973 ], [ -122.385860622648437, 37.723556529881158 ], [ -122.385846603632743, 37.723549199999539 ], [ -122.385827460305421, 37.723544355976919 ], [ -122.385811791258462, 37.723540143339349 ], [ -122.385796095735444, 37.723534900753975 ], [ -122.385780392190739, 37.723529314655281 ], [ -122.385764662184897, 37.723522699157897 ], [ -122.385750651900182, 37.723515712764971 ], [ -122.385738361343229, 37.723508355751683 ], [ -122.385731151556087, 37.723496796478393 ], [ -122.385722248191556, 37.723486638323564 ], [ -122.385708220501641, 37.723478965474406 ], [ -122.385692534045461, 37.723474065820646 ], [ -122.385680182539247, 37.72346430594763 ], [ -122.385666111318983, 37.723454916965551 ], [ -122.385652048810016, 37.723445871207367 ], [ -122.385637977596772, 37.723436482221878 ], [ -122.385609870011095, 37.723419077148201 ], [ -122.38559409650658, 37.723410745500026 ], [ -122.385580051429457, 37.723402386184311 ], [ -122.385548521852172, 37.723386409328988 ], [ -122.385534494199106, 37.723378736459033 ], [ -122.385510008939335, 37.723367797318083 ], [ -122.385494374422848, 37.723364957271542 ], [ -122.385459753720795, 37.72336345119556 ], [ -122.385444119898509, 37.723360611131262 ], [ -122.385430153207864, 37.723355340828022 ], [ -122.385416142986116, 37.723348354395121 ], [ -122.385403808604508, 37.723339280949688 ], [ -122.385391492330285, 37.723330893943086 ], [ -122.385375701117368, 37.723321876094445 ], [ -122.385359927998408, 37.723313544134655 ], [ -122.385342434828871, 37.723305583340405 ], [ -122.385326695857486, 37.723298624564244 ], [ -122.385309246571239, 37.723292379887567 ], [ -122.385291822714692, 37.723287164896192 ], [ -122.385263732678311, 37.723270446190739 ], [ -122.38524797700147, 37.723262800941718 ], [ -122.385232229687915, 37.723255498921759 ], [ -122.385216491083142, 37.723248540125276 ], [ -122.385185048704614, 37.723235995428482 ], [ -122.385169353635689, 37.723230752753828 ], [ -122.385151929803385, 37.723225537741719 ], [ -122.385134524075497, 37.723221009167226 ], [ -122.385117126370531, 37.723216824101435 ], [ -122.385101466469777, 37.723212954040122 ], [ -122.385082366457212, 37.723209826029851 ], [ -122.385064995564079, 37.723206670622204 ], [ -122.385047580442674, 37.723201798545674 ], [ -122.38502841148815, 37.723195924710531 ], [ -122.385010953200691, 37.723189336769465 ], [ -122.384993460097732, 37.72318137592324 ], [ -122.384977677662462, 37.723172700972079 ], [ -122.384946044204682, 37.723152605241658 ], [ -122.384924989829145, 37.723140580989593 ], [ -122.384905663878186, 37.723128529078224 ], [ -122.384884618220184, 37.723116848044533 ], [ -122.384842544338781, 37.723094172691695 ], [ -122.384800505291054, 37.723072869951821 ], [ -122.384779494472909, 37.7230625615273 ], [ -122.384742788674473, 37.723047010916545 ], [ -122.384730489577436, 37.723039310022727 ], [ -122.384716444674581, 37.723030950878183 ], [ -122.384704119127363, 37.723022220310114 ], [ -122.38469349658682, 37.723012432674857 ], [ -122.384682864654536, 37.723002301824017 ], [ -122.38467394442489, 37.722991456857699 ], [ -122.384663217109889, 37.722977550517093 ], [ -122.384654296194697, 37.722966705560324 ], [ -122.384643682371646, 37.722957261146163 ], [ -122.384633093968816, 37.722948846419143 ], [ -122.384619101304366, 37.722942546342381 ], [ -122.384596345081988, 37.722931579353954 ], [ -122.384578721543591, 37.722918470060556 ], [ -122.384546896507018, 37.722890823537078 ], [ -122.384530966582233, 37.722876313408833 ], [ -122.384518537006088, 37.722863464381859 ], [ -122.38443411130757, 37.722807129900666 ], [ -122.384347983418735, 37.722751852133769 ], [ -122.384239081476991, 37.722684921079754 ], [ -122.384207605050619, 37.722671003487143 ], [ -122.384176119229906, 37.722656742122247 ], [ -122.384144625418941, 37.722642137786686 ], [ -122.384113113527988, 37.722626847002253 ], [ -122.384083322047019, 37.722611185329136 ], [ -122.384051793126986, 37.722595208071212 ], [ -122.384021983580084, 37.722578859942075 ], [ -122.38399213993786, 37.722561138891301 ], [ -122.383974473094511, 37.722546313377947 ], [ -122.383955077860932, 37.722531515778066 ], [ -122.383937428078781, 37.722517376441559 ], [ -122.383918050598027, 37.722503265006914 ], [ -122.383884593268888, 37.722479421152507 ], [ -122.383868863653973, 37.722472805400912 ], [ -122.383854862444593, 37.722466162007116 ], [ -122.383839115090979, 37.722458859805528 ], [ -122.383825087796367, 37.722451187005468 ], [ -122.383809323735065, 37.722443198062706 ], [ -122.383795270342418, 37.722434495307176 ], [ -122.383782945009273, 37.722425764916487 ], [ -122.383768882931093, 37.722416719206592 ], [ -122.383744181117109, 37.722397198772512 ], [ -122.383731812655114, 37.72238675251657 ], [ -122.38372613997241, 37.722367614518575 ], [ -122.383705303481563, 37.722364170691534 ], [ -122.383691206623396, 37.722353751794557 ], [ -122.383675390420279, 37.722343704028198 ], [ -122.383659608655421, 37.72233502861922 ], [ -122.383642115552547, 37.722327067576785 ], [ -122.3836246492464, 37.722320136472625 ], [ -122.383605471580864, 37.722313918910281 ], [ -122.383586328372033, 37.722309074528077 ], [ -122.383570607863348, 37.722302801956744 ], [ -122.383553080331694, 37.722293467992337 ], [ -122.383537272159586, 37.722283763169607 ], [ -122.383521447287507, 37.722273371882082 ], [ -122.383507350472314, 37.722262952962978 ], [ -122.383491507867944, 37.722251875225332 ], [ -122.383477384968415, 37.722240426625198 ], [ -122.38346325337578, 37.72222863479751 ], [ -122.383445508101758, 37.722210720451898 ], [ -122.383434894533281, 37.722201275653106 ], [ -122.383422587021329, 37.722193231670488 ], [ -122.383410305264974, 37.722186217644108 ], [ -122.38339632153793, 37.722180260372568 ], [ -122.383380653254989, 37.722176047130667 ], [ -122.383364967234144, 37.722171147440534 ], [ -122.383350966126613, 37.722164503986562 ], [ -122.38333693893793, 37.722156831128018 ], [ -122.383322885647786, 37.722148128041155 ], [ -122.383310552066504, 37.722139054369293 ], [ -122.383298209445869, 37.722129637475824 ], [ -122.383282367246764, 37.722118559704285 ], [ -122.38326655080327, 37.722108511888187 ], [ -122.383249023002975, 37.722099177609202 ], [ -122.383231530690935, 37.722091216494434 ], [ -122.383212327035437, 37.722083969464926 ], [ -122.383193157822831, 37.722078095341168 ], [ -122.383172277957286, 37.72207293529052 ], [ -122.383156635797775, 37.722069751696246 ], [ -122.383140949814091, 37.722064851976235 ], [ -122.383123517701506, 37.722059293437333 ], [ -122.383107814683271, 37.722053707530257 ], [ -122.383076390550301, 37.722041848445443 ], [ -122.383058941409402, 37.722035603714303 ], [ -122.383027482510172, 37.72202237171301 ], [ -122.383013472765484, 37.722015384992908 ], [ -122.382981979115939, 37.722000780625166 ], [ -122.382967960677476, 37.721993450399175 ], [ -122.382952196466633, 37.721985461621244 ], [ -122.382938160650923, 37.72197744521457 ], [ -122.382922396446673, 37.721969456432632 ], [ -122.382897807697603, 37.721954398035997 ], [ -122.382881913081334, 37.721941260860625 ], [ -122.382867729471926, 37.721927409605762 ], [ -122.38285353717319, 37.721913215123287 ], [ -122.382839327490771, 37.72189833418733 ], [ -122.38282855685857, 37.721882711553377 ], [ -122.382816049838553, 37.721866773306338 ], [ -122.382806990215869, 37.721850436593726 ], [ -122.382797922594165, 37.721833756643434 ], [ -122.382790609101846, 37.721818078751127 ], [ -122.382783313008133, 37.721803087584632 ], [ -122.382772577517116, 37.721788837568752 ], [ -122.382763570078581, 37.721774560207898 ], [ -122.382752843642237, 37.721760653685102 ], [ -122.382740405865931, 37.721747461242323 ], [ -122.382731494418593, 37.721736959358161 ], [ -122.382724293971776, 37.721725743398046 ], [ -122.382720523870901, 37.721713442518464 ], [ -122.382720202193767, 37.721700743160483 ], [ -122.382723346326571, 37.72168833177593 ], [ -122.382726481072993, 37.721675577176406 ], [ -122.382729581733628, 37.721661449662143 ], [ -122.38273230785866, 37.721632563445375 ], [ -122.382731603643052, 37.721604762147862 ], [ -122.382733369644583, 37.721586614972047 ], [ -122.382734347844632, 37.721576562371538 ], [ -122.38274367451254, 37.721535209801523 ], [ -122.382746792545248, 37.72152176846371 ], [ -122.382751629924911, 37.721507956556103 ], [ -122.382756484345322, 37.721494831105609 ], [ -122.382763041407543, 37.721480648347587 ], [ -122.382782164842624, 37.721416476839273 ], [ -122.382798370882199, 37.721373640576992 ], [ -122.382806482416456, 37.721352565673556 ], [ -122.382814602294815, 37.721331834000935 ], [ -122.382824442541889, 37.721310731465771 ], [ -122.382834299480933, 37.721290315392572 ], [ -122.382844148411394, 37.721269556081531 ], [ -122.382854005339539, 37.721249140006542 ], [ -122.382865600022583, 37.721229039519947 ], [ -122.382877185659027, 37.721208595811795 ], [ -122.382900408735608, 37.721169767752777 ], [ -122.38290693965736, 37.721154555308274 ], [ -122.382913479271252, 37.721139686089295 ], [ -122.382921747600108, 37.721124789237969 ], [ -122.382931761341311, 37.72111055121686 ], [ -122.382941783773603, 37.721096656420762 ], [ -122.382951814897126, 37.721083104849697 ], [ -122.382963583082613, 37.721069868876654 ], [ -122.382977097024437, 37.721057291727 ], [ -122.382988899981882, 37.721045428655017 ], [ -122.383004168370334, 37.721033853552548 ], [ -122.383019462839854, 37.721023308125787 ], [ -122.383034765654699, 37.721013105928478 ], [ -122.383050086547513, 37.721003590169914 ], [ -122.383070574806197, 37.7209933050774 ], [ -122.383087649800032, 37.720984791368565 ], [ -122.383102978684576, 37.720975618840036 ], [ -122.383116562158349, 37.720965787756029 ], [ -122.383131839552021, 37.72095455585724 ], [ -122.383143650811689, 37.7209430357264 ], [ -122.383155445374214, 37.720930829406058 ], [ -122.383167222202275, 37.720917936912819 ], [ -122.383198904587886, 37.720871762618749 ], [ -122.38322729544646, 37.720832165418933 ], [ -122.383257414279257, 37.720792540037081 ], [ -122.383305971799075, 37.720729958050264 ], [ -122.38333258199772, 37.720688328826199 ], [ -122.383344140985599, 37.72066685539815 ], [ -122.383355691961356, 37.720645038731924 ], [ -122.383365505527735, 37.720622906477054 ], [ -122.383373590728709, 37.720600801854324 ], [ -122.383381667228008, 37.720578354005049 ], [ -122.383389734679795, 37.720555562934777 ], [ -122.383394337405079, 37.720532483893628 ], [ -122.383400668139274, 37.720509377224332 ], [ -122.383403542162711, 37.720486326096186 ], [ -122.383407970241009, 37.720456382272516 ], [ -122.38340677875901, 37.720409360597294 ], [ -122.383402539659841, 37.720378525251974 ], [ -122.383398682545547, 37.720362792132271 ], [ -122.383398428098104, 37.720361252706262 ], [ -122.383396641447277, 37.720350463627156 ], [ -122.383387721377815, 37.72033961856436 ], [ -122.383358200220172, 37.720334596711098 ], [ -122.383344547327056, 37.720341682291192 ], [ -122.38333615741675, 37.720351774011149 ], [ -122.383322539304771, 37.720360232492368 ], [ -122.383310275938157, 37.720353904619685 ], [ -122.383304777801996, 37.720341631382666 ], [ -122.38331139553371, 37.720329851172949 ], [ -122.383307625413451, 37.720317550583985 ], [ -122.383293624653192, 37.720310906846613 ], [ -122.383277974162851, 37.720307380041632 ], [ -122.383265710124405, 37.720301052449905 ], [ -122.383253377195246, 37.720291978489243 ], [ -122.38324619420213, 37.720281449010265 ], [ -122.383240704778117, 37.720269518996041 ], [ -122.38324039171458, 37.720257162862467 ], [ -122.383243535008134, 37.72024475147218 ], [ -122.383250135348419, 37.720232284813868 ], [ -122.383254981599535, 37.720218816377724 ], [ -122.383258090442638, 37.720205031803125 ], [ -122.38325945354886, 37.720190588682506 ], [ -122.383259097001115, 37.720176516419151 ], [ -122.383255283408985, 37.720162499423914 ], [ -122.383249759553038, 37.720149196500621 ], [ -122.3832425157008, 37.720136264439603 ], [ -122.383233560549201, 37.720124046466523 ], [ -122.38322290383195, 37.720112885790329 ], [ -122.383210553208443, 37.720103125653154 ], [ -122.383196395976469, 37.720090304111586 ], [ -122.383073889931538, 37.72003217363779 ], [ -122.382849809825458, 37.71992313205017 ], [ -122.382825447811499, 37.719916997234385 ], [ -122.38279933973088, 37.719910203866348 ], [ -122.382774952002876, 37.719903039905788 ], [ -122.382750537499561, 37.719894845998688 ], [ -122.382727834641599, 37.719885937725351 ], [ -122.382703394420673, 37.719876714399525 ], [ -122.382680656108263, 37.719866433224148 ], [ -122.382657909806966, 37.719855809081899 ], [ -122.382635145779759, 37.719844498488762 ], [ -122.382614092714974, 37.719832473817299 ], [ -122.382593030963804, 37.71982010591605 ], [ -122.382571951833512, 37.71980705155903 ], [ -122.382552583665785, 37.719793283125171 ], [ -122.382533206466661, 37.719779171467643 ], [ -122.382517347496844, 37.719767407137013 ], [ -122.382329598519163, 37.719659157154716 ], [ -122.382140156862491, 37.71955230738498 ], [ -122.382084189621324, 37.71952710586983 ], [ -122.382026520507765, 37.719502961888537 ], [ -122.382009045965773, 37.719495686772042 ], [ -122.381991562743806, 37.719488068701423 ], [ -122.381975799169183, 37.719480079789612 ], [ -122.381960018217541, 37.719471404423579 ], [ -122.381944228233777, 37.719462385834824 ], [ -122.381928430255144, 37.719453024006853 ], [ -122.381912623244801, 37.719443318956195 ], [ -122.381898535881675, 37.719433243065936 ], [ -122.381884431142637, 37.719422480721789 ], [ -122.381872072119776, 37.719412377217125 ], [ -122.381859773582747, 37.719404676299234 ], [ -122.381847484429258, 37.719397318595092 ], [ -122.381833501358983, 37.719391361409976 ], [ -122.381802095947549, 37.719380188981518 ], [ -122.381786358477399, 37.719373229447925 ], [ -122.381770594949188, 37.719365240508537 ], [ -122.381756533687849, 37.719356194279435 ], [ -122.38174418338258, 37.719346433987333 ], [ -122.381731807013125, 37.719335644015629 ], [ -122.381721141599613, 37.719324139981623 ], [ -122.381712186795909, 37.719311921891311 ], [ -122.381704943292732, 37.719298989734028 ], [ -122.381695910985357, 37.719283682596497 ], [ -122.381688693554523, 37.719271780116451 ], [ -122.381681484814919, 37.719260220862054 ], [ -122.381663628063038, 37.719237844020014 ], [ -122.381645788699373, 37.719216153627443 ], [ -122.381624527445553, 37.719195891351333 ], [ -122.381612168150028, 37.71918578782455 ], [ -122.381601529187748, 37.719175313452254 ], [ -122.381592592151165, 37.719163782073863 ], [ -122.381583646069373, 37.719151906924999 ], [ -122.381576411292528, 37.719139317985587 ], [ -122.381570896501387, 37.71912635820749 ], [ -122.381567092315478, 37.719112684375858 ], [ -122.381559735915829, 37.719095290544253 ], [ -122.38155422912088, 37.719082673727875 ], [ -122.381548731721296, 37.719070400675434 ], [ -122.381541505639575, 37.719058154685285 ], [ -122.38153600789127, 37.719045881363151 ], [ -122.38150713837662, 37.718998271399208 ], [ -122.381498201369013, 37.718986739738739 ], [ -122.381490992686665, 37.71897518047215 ], [ -122.381473118684809, 37.718952117147957 ], [ -122.381464190375866, 37.718940928710964 ], [ -122.381455270757456, 37.718930083499401 ], [ -122.381446342115154, 37.718918895341112 ], [ -122.38143742284764, 37.718908050122621 ], [ -122.381416144356564, 37.718887101081044 ], [ -122.381407233439191, 37.718876599091892 ], [ -122.381385972354465, 37.718856337046212 ], [ -122.381373613486502, 37.71884623321376 ], [ -122.381352369787336, 37.718826657339626 ], [ -122.381327686843449, 37.718807823394606 ], [ -122.38131535405293, 37.718798749234402 ], [ -122.38129421463421, 37.718783292338109 ], [ -122.381275038076012, 37.718777074392875 ], [ -122.381252413579233, 37.718771255149179 ], [ -122.381231552150709, 37.71876678120416 ], [ -122.381208979780382, 37.718763021309094 ], [ -122.381188161789552, 37.718760263487212 ], [ -122.381165632510005, 37.718758219720186 ], [ -122.381143129982078, 37.718757205616299 ], [ -122.381106826627473, 37.718757441991308 ], [ -122.381084384557454, 37.718758830464949 ], [ -122.380998020790415, 37.718762269763332 ], [ -122.380954864960344, 37.718765019067327 ], [ -122.380911726497644, 37.718768454807901 ], [ -122.380818588404082, 37.718777496255818 ], [ -122.380801331270163, 37.71877880161415 ], [ -122.380782345824386, 37.718780134839598 ], [ -122.380765070988232, 37.718780754294905 ], [ -122.380746051141955, 37.718780714329604 ], [ -122.380728750590777, 37.7187803038209 ], [ -122.380709712691541, 37.718779577682966 ], [ -122.380692386433651, 37.718778137484804 ], [ -122.380673314144289, 37.718776038430633 ], [ -122.380655961489964, 37.718773568553999 ], [ -122.380638600152778, 37.718770755448638 ], [ -122.380621221455968, 37.718767256162863 ], [ -122.380603834063052, 37.71876341309914 ], [ -122.380569024561694, 37.718754354608322 ], [ -122.380515107712881, 37.718741824128088 ], [ -122.380459506326716, 37.71873103733904 ], [ -122.380442119303254, 37.718727194520504 ], [ -122.380426442886844, 37.718722637662651 ], [ -122.380409012106568, 37.718717078713624 ], [ -122.380393292279919, 37.718710805720228 ], [ -122.380374046360402, 37.718701842093019 ], [ -122.380356511396428, 37.718692164421441 ], [ -122.38034421348118, 37.718684463338931 ], [ -122.380331889520718, 37.718675732576422 ], [ -122.380321267831235, 37.718665944545648 ], [ -122.380312339384403, 37.718654756026375 ], [ -122.380301657268987, 37.718642565404615 ], [ -122.380291009195389, 37.71863174769787 ], [ -122.380280353133841, 37.718620586752877 ], [ -122.380271407679629, 37.71860871177239 ], [ -122.380262453207322, 37.71859649384507 ], [ -122.380255227383529, 37.718584247775084 ], [ -122.380248018933486, 37.718572688431699 ], [ -122.380240793121359, 37.718560442635365 ], [ -122.380231848026369, 37.718548567646252 ], [ -122.38022120032204, 37.718537749927506 ], [ -122.380208832990292, 37.718527303020664 ], [ -122.380196491707878, 37.718517885791279 ], [ -122.380182448162131, 37.718509525825596 ], [ -122.380168421983186, 37.718501852310723 ], [ -122.380152693540609, 37.718495236058757 ], [ -122.380136999827513, 37.718489992709728 ], [ -122.380119595168225, 37.718485463396448 ], [ -122.380103953548627, 37.718482279400568 ], [ -122.380086617999027, 37.718480495897992 ], [ -122.380053754382303, 37.718479990320766 ], [ -122.380034708231022, 37.718478920841939 ], [ -122.380017337959387, 37.718475764424113 ], [ -122.37999994233742, 37.718471578313881 ], [ -122.379982511302273, 37.718466019307044 ], [ -122.379966765867707, 37.718458716572137 ], [ -122.379950994048144, 37.718450384161848 ], [ -122.379936915819798, 37.718440651261687 ], [ -122.379924539863453, 37.718429861098564 ], [ -122.379912120161947, 37.71841735480826 ], [ -122.379903227227103, 37.718407539426167 ], [ -122.379890903011727, 37.718398808348084 ], [ -122.379878596858461, 37.718390763984829 ], [ -122.379866307723006, 37.718383406078345 ], [ -122.379852316321873, 37.718377105430825 ], [ -122.379838350963936, 37.718371834460527 ], [ -122.379822683339711, 37.718367620748374 ], [ -122.379808770066504, 37.718364409132271 ], [ -122.379793145500187, 37.71836191155316 ], [ -122.379777565026231, 37.718361130092418 ], [ -122.379746464146947, 37.718361969759833 ], [ -122.379729146346136, 37.71836087292629 ], [ -122.379715198352471, 37.718356288119374 ], [ -122.379701189609946, 37.718349301001297 ], [ -122.379690576729757, 37.718339856139472 ], [ -122.379683377077711, 37.718328640261959 ], [ -122.3796778796832, 37.718316366577113 ], [ -122.37967239098387, 37.718304436667452 ], [ -122.37966348037574, 37.718293934270854 ], [ -122.379652884528355, 37.718285176138238 ], [ -122.379638884477515, 37.718278531964394 ], [ -122.379623199871318, 37.718273631767524 ], [ -122.379609182480792, 37.718266301686668 ], [ -122.379598560938021, 37.718256513315531 ], [ -122.379589606611773, 37.718244295061801 ], [ -122.379568259413119, 37.718220600422896 ], [ -122.379555875206677, 37.718209466714256 ], [ -122.379543499344152, 37.718198676510717 ], [ -122.3795311408429, 37.718188572758478 ], [ -122.379517062719074, 37.718178839807734 ], [ -122.379503001963329, 37.71816979358254 ], [ -122.379487230257041, 37.718161461109773 ], [ -122.379473169494304, 37.718152414331819 ], [ -122.379462538975446, 37.718142283276592 ], [ -122.3794518917869, 37.718131465482102 ], [ -122.37944294651696, 37.718119590163212 ], [ -122.379435729559873, 37.718107687542933 ], [ -122.379424700187641, 37.718081767792796 ], [ -122.379422659465391, 37.718069439219867 ], [ -122.379417153461716, 37.718056822570574 ], [ -122.379409936521796, 37.718044920223178 ], [ -122.37940101731057, 37.718034074854529 ], [ -122.379390386804573, 37.718023943243416 ], [ -122.379378072089409, 37.71801555560107 ], [ -122.37936745929791, 37.718006110709609 ], [ -122.379346164299292, 37.71798447511302 ], [ -122.379333796843824, 37.717974028393506 ], [ -122.379323167053869, 37.717963897039802 ], [ -122.379310817292421, 37.717954136215845 ], [ -122.379298475880205, 37.717944719171612 ], [ -122.379286143826207, 37.717935644792249 ], [ -122.379272083137607, 37.717926598264555 ], [ -122.379261435662016, 37.717915780457993 ], [ -122.379250796867041, 37.717905305876819 ], [ -122.379240166752524, 37.717895174521026 ], [ -122.379229553995728, 37.71788572961696 ], [ -122.379217221621232, 37.717876655510366 ], [ -122.379203178306753, 37.717868295427088 ], [ -122.379190871970053, 37.717860250996829 ], [ -122.379175109041569, 37.717852261708209 ], [ -122.379164469922188, 37.717841787124641 ], [ -122.379152137908591, 37.717832713005684 ], [ -122.379138137994644, 37.717826069046431 ], [ -122.379125875056587, 37.717819740741156 ], [ -122.379111857793731, 37.717812410326019 ], [ -122.379101270749828, 37.717803995094904 ], [ -122.379090667046114, 37.717794893399073 ], [ -122.379078291320113, 37.717784103145959 ], [ -122.379062641223001, 37.717780576059667 ], [ -122.379047051849412, 37.717779451006763 ], [ -122.379033086660868, 37.717774179940491 ], [ -122.379022465271206, 37.717764391791221 ], [ -122.379016976365222, 37.717752461580901 ], [ -122.379009785541115, 37.717741588612981 ], [ -122.378990609802273, 37.71773537083854 ], [ -122.378971451059471, 37.717729838970079 ], [ -122.378953994246785, 37.717723250131236 ], [ -122.378936512100381, 37.717715631599603 ], [ -122.37891900323838, 37.7177069833972 ], [ -122.378903197337848, 37.717697277934541 ], [ -122.37888387343952, 37.717685225304997 ], [ -122.378864602279094, 37.717675231470452 ], [ -122.378847076429409, 37.717665896799019 ], [ -122.378827830621148, 37.717656932923234 ], [ -122.378808602859749, 37.717648655486073 ], [ -122.378778909235265, 37.717636768235245 ], [ -122.378761435795425, 37.717629492629342 ], [ -122.378726453548339, 37.717613569064291 ], [ -122.378708953409784, 37.717605264056957 ], [ -122.378693173583002, 37.717596588245186 ], [ -122.378675665123012, 37.717587940000953 ], [ -122.378659867262996, 37.717578577742898 ], [ -122.37864235048211, 37.71756958626176 ], [ -122.378594931951909, 37.717540469771926 ], [ -122.378579117109084, 37.717530421044614 ], [ -122.3785509613637, 37.717510954911866 ], [ -122.378491401169214, 37.717480315188894 ], [ -122.37843182436778, 37.717448988971746 ], [ -122.37837222957846, 37.717416976282458 ], [ -122.378314346472195, 37.717384249540096 ], [ -122.378221298936523, 37.717328391303198 ], [ -122.378163571723618, 37.717301842568197 ], [ -122.378104150956304, 37.717276694266459 ], [ -122.37804646718476, 37.717251861606229 ], [ -122.377987080837755, 37.717228086156695 ], [ -122.377882351983473, 37.717188895399786 ], [ -122.377451299846371, 37.716962278497022 ], [ -122.377409136350764, 37.716935824700762 ], [ -122.377366990222555, 37.71691005734241 ], [ -122.37732312451665, 37.716884660739723 ], [ -122.37727928449992, 37.716860293805809 ], [ -122.377192593728324, 37.716850687700834 ], [ -122.377174053804566, 37.716801195276375 ], [ -122.377135442741164, 37.716778462058606 ], [ -122.377117882304205, 37.716767754227781 ], [ -122.377098594291084, 37.716757073924335 ], [ -122.377077577665531, 37.716746421163919 ], [ -122.377058306652586, 37.716736427312505 ], [ -122.377035544432545, 37.716725115631768 ], [ -122.377004002182673, 37.716708449744992 ], [ -122.376974170891216, 37.716691070132001 ], [ -122.376942602330686, 37.716673374829035 ], [ -122.376912754080166, 37.716655308741679 ], [ -122.376882896832043, 37.716636899425616 ], [ -122.376853030939387, 37.716618147149923 ], [ -122.376824875984553, 37.716598680327252 ], [ -122.376794983771219, 37.716578898087818 ], [ -122.376766811521605, 37.716558745072504 ], [ -122.376740359241694, 37.716538221557123 ], [ -122.376712169684112, 37.71651738180077 ], [ -122.376685699750382, 37.716496171550673 ], [ -122.376645065755298, 37.716461795731668 ], [ -122.376629260077664, 37.716452090242093 ], [ -122.376613463055463, 37.71644272742784 ], [ -122.376597691693803, 37.716434394571444 ], [ -122.376583692278402, 37.716427750581751 ], [ -122.376567912942647, 37.716419074209107 ], [ -122.376553835548819, 37.716409341176096 ], [ -122.376541451404279, 37.716398207158385 ], [ -122.376530778896253, 37.716386359416987 ], [ -122.376520053711957, 37.71637245232575 ], [ -122.376509415869748, 37.716361977488937 ], [ -122.376498794675413, 37.716352189390022 ], [ -122.37648645456278, 37.716342771488634 ], [ -122.376474122785964, 37.71633369736724 ], [ -122.37646180833417, 37.716325309423283 ], [ -122.376449502196934, 37.716317264435602 ], [ -122.376435485481252, 37.716309933700259 ], [ -122.376365488584341, 37.716276712265071 ], [ -122.376304211373494, 37.7162464421762 ], [ -122.376232373365212, 37.716208786249759 ], [ -122.376216559470649, 37.716198737197637 ], [ -122.376202464831138, 37.716188317394391 ], [ -122.376190080782948, 37.716177183613944 ], [ -122.37617768876666, 37.716165706594467 ], [ -122.376165279082414, 37.716153543125806 ], [ -122.376154588659077, 37.716141009182088 ], [ -122.3761438902538, 37.71612813145051 ], [ -122.376134902445671, 37.716114540017813 ], [ -122.376127616916719, 37.716099891652185 ], [ -122.376121444571496, 37.716060846115461 ], [ -122.376121115383214, 37.71604780350129 ], [ -122.376125312585643, 37.716008593078577 ], [ -122.376128439914226, 37.715995495685426 ], [ -122.376133304145654, 37.715982713442855 ], [ -122.376143049597545, 37.715957835965099 ], [ -122.376159466184788, 37.715923238019322 ], [ -122.376179356242673, 37.715889271474957 ], [ -122.376189309582273, 37.715872631433676 ], [ -122.376201000523864, 37.715856307079349 ], [ -122.37621269978483, 37.715840326230605 ], [ -122.376226135941366, 37.715824660529996 ], [ -122.376239589425921, 37.715809681555776 ], [ -122.376254771155516, 37.715794675051384 ], [ -122.376271646475075, 37.715778268109382 ], [ -122.376283440655172, 37.715766062477954 ], [ -122.376310486193518, 37.715741596141669 ], [ -122.376322263732177, 37.715728704316476 ], [ -122.376334049571057, 37.715716155173126 ], [ -122.376345826755966, 37.715703263351031 ], [ -122.376369363764837, 37.715676792426088 ], [ -122.376381123602442, 37.715663213872432 ], [ -122.376401186771318, 37.715636111823081 ], [ -122.376411209340475, 37.715622217575891 ], [ -122.376441252415276, 37.715579505126925 ], [ -122.376454523861156, 37.715557318367054 ], [ -122.37646974881784, 37.715544027967823 ], [ -122.376484964758959, 37.715530394345414 ], [ -122.376515380332151, 37.715502440624682 ], [ -122.376528859694105, 37.715488491296732 ], [ -122.376542321721558, 37.715473855513849 ], [ -122.376557511986263, 37.71545919219632 ], [ -122.37656924576747, 37.715444584217934 ], [ -122.376582699107203, 37.715429604929049 ], [ -122.37659614379038, 37.715414282961056 ], [ -122.376619576292114, 37.715383693270141 ], [ -122.376631284392559, 37.715368055325236 ], [ -122.376654682556946, 37.715336092989432 ], [ -122.376664653392297, 37.715320139354375 ], [ -122.376682927469105, 37.715290662203351 ], [ -122.376687808896733, 37.715278566664409 ], [ -122.376690936088593, 37.715265468980213 ], [ -122.376688878566242, 37.715252453901009 ], [ -122.376681679659114, 37.715241237559951 ], [ -122.376662556398827, 37.715237078495178 ], [ -122.37664688961523, 37.715232864358583 ], [ -122.376639690716317, 37.715221648014925 ], [ -122.376644563481292, 37.715209209250951 ], [ -122.376652953380841, 37.715199118279322 ], [ -122.376664860393532, 37.715191374275555 ], [ -122.376687422784229, 37.715194791816721 ], [ -122.376687067504449, 37.715180719522259 ], [ -122.376702422323845, 37.715172577492581 ], [ -122.376716031573253, 37.715163776542923 ], [ -122.376729623488316, 37.715154289138269 ], [ -122.376741469833547, 37.715144142814424 ], [ -122.376755035744793, 37.715133625726743 ], [ -122.37676513617842, 37.715122820763163 ], [ -122.376776948189416, 37.715111301248839 ], [ -122.376787014292304, 37.715099123096479 ], [ -122.376797028396751, 37.715084885583089 ], [ -122.376822345285078, 37.715060446663202 ], [ -122.376847653490671, 37.715035664511078 ], [ -122.376871224781212, 37.715010566664418 ], [ -122.376894778723212, 37.714984782359565 ], [ -122.376916604418071, 37.714959025588243 ], [ -122.376960238083626, 37.714906825585267 ], [ -122.376997080800365, 37.714859540886621 ], [ -122.377010663964072, 37.714849710496978 ], [ -122.37702423844344, 37.714839536329912 ], [ -122.377036076031359, 37.714829046749252 ], [ -122.377059716529033, 37.714806694677584 ], [ -122.377071528105475, 37.714795175413244 ], [ -122.377101725785408, 37.714758640881662 ], [ -122.377110046572668, 37.71474580378316 ], [ -122.37712317899306, 37.714718125317994 ], [ -122.377131300077295, 37.714697394009583 ], [ -122.377141149035509, 37.714676635164444 ], [ -122.377151007346924, 37.714656219534078 ], [ -122.377160873636086, 37.714636147415113 ], [ -122.377172468820078, 37.71461604719299 ], [ -122.377182335436814, 37.714595974791997 ], [ -122.377193938592001, 37.714576218079934 ], [ -122.377207270307977, 37.714556433818551 ], [ -122.377218882809402, 37.714537020319568 ], [ -122.377232223179533, 37.714517579281953 ], [ -122.37725892123467, 37.71447938365538 ], [ -122.377277350893181, 37.714456084488674 ], [ -122.377283856371662, 37.71443984265948 ], [ -122.377292090065524, 37.714423573286055 ], [ -122.377300340753251, 37.714407990645519 ], [ -122.377310329000593, 37.714392723126743 ], [ -122.377322053797371, 37.714377771844191 ], [ -122.37733379557335, 37.714363506744739 ], [ -122.377347274568308, 37.714349557046042 ], [ -122.377360770908837, 37.714336294348335 ], [ -122.377376004460587, 37.714323346775984 ], [ -122.37739125500535, 37.714311085935115 ], [ -122.37740648820791, 37.714298138638888 ], [ -122.377421729728198, 37.714285534572831 ], [ -122.377436980603278, 37.714273273720465 ], [ -122.377453959342105, 37.714260985325403 ], [ -122.377469218191379, 37.7142490679811 ], [ -122.377486214595891, 37.714237465754614 ], [ -122.3775014911119, 37.714226234579385 ], [ -122.37751849583654, 37.714214975854986 ], [ -122.377549126867919, 37.714195602534218 ], [ -122.377599993609977, 37.714155991753785 ], [ -122.377650877623338, 37.714117066855323 ], [ -122.37770177893016, 37.714078828662608 ], [ -122.377754425395366, 37.714041249630476 ], [ -122.377808826358589, 37.714004672148562 ], [ -122.377878556048842, 37.713958923045773 ], [ -122.37803805055384, 37.713839292710567 ], [ -122.378311443052539, 37.713642992366779 ], [ -122.378326710994585, 37.713631417851289 ], [ -122.37834196991345, 37.713619500112657 ], [ -122.378355483282817, 37.713606923478181 ], [ -122.378367251103185, 37.713593687948453 ], [ -122.378379009900755, 37.713580109196364 ], [ -122.378389032514391, 37.713566214765343 ], [ -122.378399037086837, 37.713551633891143 ], [ -122.378409033673563, 37.71353670977841 ], [ -122.378415564843792, 37.713521497564329 ], [ -122.378423815534646, 37.713505914562745 ], [ -122.378428575143985, 37.713489014049621 ], [ -122.378438562344869, 37.713473746443995 ], [ -122.378446830724755, 37.713458850163093 ], [ -122.378458563459517, 37.713444241448215 ], [ -122.378468586039958, 37.713430347010117 ], [ -122.378482073340123, 37.713416740955331 ], [ -122.378495569294984, 37.713403477576485 ], [ -122.37854455933747, 37.713358058816908 ], [ -122.378586757641585, 37.713317555466887 ], [ -122.378660976502815, 37.71324426535471 ], [ -122.378686622123027, 37.713232868634442 ], [ -122.378712250040763, 37.713220785460798 ], [ -122.378736140733594, 37.713208386350885 ], [ -122.378760006099483, 37.713194958094263 ], [ -122.378783853401998, 37.713180842841368 ], [ -122.378805955855427, 37.713166068959936 ], [ -122.378828040611339, 37.71315060890111 ], [ -122.378850116669099, 37.713134805062303 ], [ -122.378897499585833, 37.713094218893794 ], [ -122.378902259061135, 37.713077318360412 ], [ -122.378913939946415, 37.713060650508481 ], [ -122.378933827973057, 37.713026683209065 ], [ -122.378963633962542, 37.712974702985242 ], [ -122.3789800308884, 37.712939418456834 ], [ -122.378988220659366, 37.712921432553166 ], [ -122.378994682251076, 37.712903474492308 ], [ -122.379002872021474, 37.712885488862113 ], [ -122.379010931305004, 37.712862354837071 ], [ -122.37901923419868, 37.712848831146545 ], [ -122.379027554095487, 37.712835993914254 ], [ -122.379037619176003, 37.712823815570687 ], [ -122.379047693627413, 37.712811980716452 ], [ -122.379059495902879, 37.712800118022507 ], [ -122.37908614901481, 37.712760205563576 ], [ -122.379114530283019, 37.712720265802361 ], [ -122.379142928880469, 37.712681012761955 ], [ -122.379173064293639, 37.712642075095069 ], [ -122.379203208344947, 37.71260348037233 ], [ -122.379256878689148, 37.712538071449124 ], [ -122.379268637502918, 37.712524492600444 ], [ -122.379278650439701, 37.712510254875795 ], [ -122.379298659638835, 37.712481092959536 ], [ -122.379306927729047, 37.71246619634131 ], [ -122.379315186793136, 37.712450956501357 ], [ -122.379321709005382, 37.712435401007788 ], [ -122.37932825724657, 37.712420875193772 ], [ -122.379336368787747, 37.712399800499135 ], [ -122.379346199816894, 37.712378355003281 ], [ -122.379365879212997, 37.712336150462143 ], [ -122.379377455409823, 37.712315364122553 ], [ -122.379389040962025, 37.71229492072279 ], [ -122.379400617477728, 37.712274133826106 ], [ -122.379412211349106, 37.712254033656116 ], [ -122.37943383579011, 37.712220382468807 ], [ -122.379443961457966, 37.712210606401335 ], [ -122.379452350984806, 37.712200515220019 ], [ -122.379460722794221, 37.71218973704115 ], [ -122.379467357765066, 37.712178643485373 ], [ -122.379472247213258, 37.71216689105173 ], [ -122.379480610345027, 37.712155769919313 ], [ -122.379490683937206, 37.712143934762395 ], [ -122.379499030060259, 37.712132127444399 ], [ -122.379507358465077, 37.712119633128815 ], [ -122.379513950039424, 37.712106823711594 ], [ -122.3795205329195, 37.712093670518172 ], [ -122.379525370285052, 37.712079858722241 ], [ -122.379530172590734, 37.712064674025001 ], [ -122.379539812945708, 37.712035677519864 ], [ -122.379548106627041, 37.712021810569162 ], [ -122.379556408637853, 37.712008286850036 ], [ -122.379568185022265, 37.711995394692678 ], [ -122.379580030469796, 37.711985247803753 ], [ -122.379591867242681, 37.711974757961542 ], [ -122.37960195849513, 37.711963609242559 ], [ -122.379612041066054, 37.71195211729605 ], [ -122.379622114962288, 37.711940282396583 ], [ -122.379630451657874, 37.711928131304077 ], [ -122.379638780377292, 37.711915637522473 ], [ -122.379645371896999, 37.711902827548315 ], [ -122.379650226245587, 37.711889702480249 ], [ -122.379656800410586, 37.711876206326664 ], [ -122.379659918603238, 37.711862765324433 ], [ -122.379666440684801, 37.711847209535733 ], [ -122.379678077818568, 37.711828825746096 ], [ -122.379688004133726, 37.711811155438397 ], [ -122.37969966729311, 37.7117938013265 ], [ -122.379726467250435, 37.711759723844118 ], [ -122.379741621412023, 37.711743687200766 ], [ -122.379749992782422, 37.711732909006074 ], [ -122.379758304094665, 37.711719728487729 ], [ -122.379768369250002, 37.711707550074067 ], [ -122.379780179921312, 37.711696030807062 ], [ -122.379792016612967, 37.71168554066967 ], [ -122.379807344332391, 37.711676368550826 ], [ -122.379822698086315, 37.711668226109936 ], [ -122.379838086216196, 37.711661456853747 ], [ -122.379855237891832, 37.711656032360494 ], [ -122.379872414919589, 37.711651637830329 ], [ -122.379889557917664, 37.711645870380011 ], [ -122.379908402687462, 37.71163904594512 ], [ -122.379923765095569, 37.711631246443076 ], [ -122.379940837953981, 37.711622733183106 ], [ -122.379956157314652, 37.71161321808723 ], [ -122.379969722126845, 37.711602700623473 ], [ -122.379983278248133, 37.711591839656897 ], [ -122.37999507983497, 37.71157997687245 ], [ -122.380006864748808, 37.711567427622455 ], [ -122.380016912482191, 37.711554562733966 ], [ -122.380025223388486, 37.711541382476511 ], [ -122.380036947182674, 37.711526430642408 ], [ -122.38004519730535, 37.711510847247801 ], [ -122.380061679847557, 37.711478994558078 ], [ -122.380068175776742, 37.711462409340825 ], [ -122.380072943900714, 37.711445851702329 ], [ -122.380077702996331, 37.711428950842468 ], [ -122.380080724916397, 37.711411734346029 ], [ -122.380091216381629, 37.711348044590686 ], [ -122.38010580681599, 37.711241368202799 ], [ -122.380111373878989, 37.711188057730013 ], [ -122.380119034347572, 37.71108080577428 ], [ -122.380121136424947, 37.711027206969042 ], [ -122.38012151036925, 37.71097363602329 ], [ -122.380118923524051, 37.71087135474918 ], [ -122.380110379014539, 37.710806938200108 ], [ -122.380106523093488, 37.71079120494867 ], [ -122.380104387317047, 37.710775100874208 ], [ -122.380100531751495, 37.710759367891555 ], [ -122.380096667493106, 37.710743291132871 ], [ -122.380092811923888, 37.710727557875288 ], [ -122.380087228225392, 37.710711852202415 ], [ -122.380081653209785, 37.710696489755954 ], [ -122.380077797646152, 37.710680756497752 ], [ -122.380070494504992, 37.710665421635404 ], [ -122.38005934448995, 37.710634696740314 ], [ -122.380050209064109, 37.710615270740703 ], [ -122.380041299331083, 37.710604768634425 ], [ -122.380032397935238, 37.710594609759674 ], [ -122.38002177779228, 37.710584821958371 ], [ -122.38001116562711, 37.710575376844702 ], [ -122.379989959370192, 37.710557173605956 ], [ -122.379977637144137, 37.710548442789609 ], [ -122.379965323255277, 37.71054005520417 ], [ -122.379940729859655, 37.710524652941764 ], [ -122.379928442370812, 37.710517295301628 ], [ -122.379914435085283, 37.710510308200178 ], [ -122.379886455233503, 37.710497706624587 ], [ -122.379872473994169, 37.710491749198276 ], [ -122.379856825041841, 37.710488221944338 ], [ -122.379827508004084, 37.710491093407484 ], [ -122.379813839223587, 37.710497492136078 ], [ -122.379798416283975, 37.71050288903816 ], [ -122.379782897858064, 37.710504509895109 ], [ -122.379767309667471, 37.710503385490924 ], [ -122.379749941954842, 37.710500228744046 ], [ -122.379735969404862, 37.71049461452828 ], [ -122.379723664231022, 37.710486570144241 ], [ -122.37971305247035, 37.710477125272625 ], [ -122.37970236260378, 37.710464591359482 ], [ -122.37969344425926, 37.710453745999907 ], [ -122.379682806125587, 37.710443271450828 ], [ -122.379672177364711, 37.710433140116493 ], [ -122.379661556600993, 37.710423352293517 ], [ -122.379649225750256, 37.710414277941311 ], [ -122.379636903242243, 37.710405547094624 ], [ -122.379624598093869, 37.71039750270014 ], [ -122.379610573502859, 37.710389829108948 ], [ -122.379596566278167, 37.710382842244165 ], [ -122.379582567720405, 37.710376198055286 ], [ -122.379566867083199, 37.710370611396797 ], [ -122.37955117512638, 37.710365367962943 ], [ -122.379535500182058, 37.71036081098601 ], [ -122.379504186047228, 37.710353069916337 ], [ -122.379490239583589, 37.71034848562612 ], [ -122.37947454763686, 37.710343242182041 ], [ -122.379460575130224, 37.710337627658895 ], [ -122.379444865487201, 37.710331697762861 ], [ -122.379430875636984, 37.710325397057247 ], [ -122.379416868434376, 37.710318409896438 ], [ -122.379404589708813, 37.710311395428178 ], [ -122.379390565156754, 37.710303721810703 ], [ -122.379378268729113, 37.710296020617108 ], [ -122.379364226828372, 37.710287660542946 ], [ -122.379351913051934, 37.710279272893054 ], [ -122.379341310038157, 37.710270170939822 ], [ -122.379328978913207, 37.71026109683396 ], [ -122.379307738212361, 37.710241520839027 ], [ -122.37929710884022, 37.710231389481542 ], [ -122.379288208275057, 37.710221230264345 ], [ -122.379275772698335, 37.710208037437084 ], [ -122.379261548615801, 37.710192469588307 ], [ -122.379247341892423, 37.710177588191321 ], [ -122.379231407401903, 37.710162734359407 ], [ -122.379215489925031, 37.710148566984365 ], [ -122.379199589806944, 37.710135086060731 ], [ -122.379181961577132, 37.710121632706517 ], [ -122.379164350706091, 37.710108865803193 ], [ -122.379145029076398, 37.710096812921883 ], [ -122.379125716135945, 37.710085103538738 ], [ -122.379106411517995, 37.710073736835547 ], [ -122.379081871200697, 37.710060393742431 ], [ -122.379067829377789, 37.710052033632635 ], [ -122.379053770213616, 37.710042987342149 ], [ -122.37904143915452, 37.710033912931294 ], [ -122.379027362638922, 37.710024179909425 ], [ -122.379015013896463, 37.710014419322256 ], [ -122.379004376612457, 37.710003944700169 ], [ -122.378992010871215, 37.709993497651439 ], [ -122.378981364572482, 37.709982679805925 ], [ -122.378970709601532, 37.709971518732665 ], [ -122.378961774072408, 37.709959986863232 ], [ -122.378943885326493, 37.709936236674181 ], [ -122.378934932808065, 37.709924018618082 ], [ -122.378927716720895, 37.709912115676609 ], [ -122.378920448592652, 37.709898153648354 ], [ -122.378914899558595, 37.709883820830655 ], [ -122.378911070654652, 37.709869117207219 ], [ -122.378908969518022, 37.709854386021547 ], [ -122.378906859361621, 37.709839311614516 ], [ -122.37890825816865, 37.709826241422213 ], [ -122.378906182713109, 37.709812539922396 ], [ -122.378898593625834, 37.709785878500057 ], [ -122.37889311469489, 37.709774291484649 ], [ -122.378882494466538, 37.709764503310346 ], [ -122.378852995161623, 37.709760166773435 ], [ -122.378837381455881, 37.709758012285448 ], [ -122.378821663310447, 37.709751739078932 ], [ -122.378811043440322, 37.709741950892628 ], [ -122.378800232043204, 37.709724611725996 ], [ -122.378791192829524, 37.709708961390213 ], [ -122.378764047778134, 37.709660979621674 ], [ -122.378756718985287, 37.709644614994865 ], [ -122.378747662435089, 37.709628277927287 ], [ -122.378733004866319, 37.709595548670947 ], [ -122.378727395179027, 37.709578813530399 ], [ -122.378716350309503, 37.709552206945055 ], [ -122.378707440892299, 37.709541704736111 ], [ -122.378700242233577, 37.709530488508285 ], [ -122.378694754332813, 37.709518558261863 ], [ -122.378690976843657, 37.709505914002577 ], [ -122.378687217401875, 37.709493956460406 ], [ -122.378676596888084, 37.709484167998021 ], [ -122.378662607269405, 37.709477867474909 ], [ -122.378646941924686, 37.709473653320337 ], [ -122.378632917608854, 37.70946597961165 ], [ -122.378620586358139, 37.709456905436006 ], [ -122.37861166863793, 37.709446059987314 ], [ -122.378602715880561, 37.709433841635963 ], [ -122.378598947091831, 37.709421540874992 ], [ -122.378593433533567, 37.709408580662952 ], [ -122.378584489118467, 37.709396705817099 ], [ -122.378573843310107, 37.709385887928249 ], [ -122.378559775644788, 37.709376497801813 ], [ -122.378545751356285, 37.709368824082631 ], [ -122.378531770436666, 37.709362866496143 ], [ -122.37851595734179, 37.709352817747309 ], [ -122.378503583104418, 37.709342027419368 ], [ -122.378491191524603, 37.709330550636324 ], [ -122.378478773584177, 37.709318044176833 ], [ -122.378469795190981, 37.709304796129004 ], [ -122.3784625272081, 37.709290834071133 ], [ -122.378455250555135, 37.709276528785921 ], [ -122.378449692984333, 37.709261852718043 ], [ -122.378447583629097, 37.709246778290328 ], [ -122.37844546525632, 37.709231360641176 ], [ -122.378445040296995, 37.709214542798215 ], [ -122.378446447493673, 37.70920181556793 ], [ -122.378445805707855, 37.709176416778014 ], [ -122.378447212565007, 37.70916368982774 ], [ -122.378446882999313, 37.709150647205846 ], [ -122.378444834357168, 37.709137975366076 ], [ -122.378444192579394, 37.709112576850501 ], [ -122.378433947648276, 37.709049217403461 ], [ -122.378430178900032, 37.709036916361775 ], [ -122.378428130263899, 37.709024244521487 ], [ -122.378424361863509, 37.709011943474067 ], [ -122.378420584791698, 37.708999299199597 ], [ -122.378413047997185, 37.708974697103997 ], [ -122.378407551172273, 37.708962423896338 ], [ -122.378403791789637, 37.708950465794935 ], [ -122.37839829531363, 37.708938192581272 ], [ -122.37839280715248, 37.708926262050589 ], [ -122.378381883920852, 37.708904460882493 ], [ -122.37837105540082, 37.708886435220357 ], [ -122.37835849948857, 37.708868437105671 ], [ -122.378344223820761, 37.708850809781346 ], [ -122.378331693592017, 37.708833841349971 ], [ -122.378315707193991, 37.708816928035041 ], [ -122.378301466234504, 37.708800673613098 ], [ -122.378285505520822, 37.708784789980257 ], [ -122.378262511753192, 37.708764211389848 ], [ -122.378217043865007, 37.708743647822331 ], [ -122.378194318256277, 37.708733709264415 ], [ -122.378169882609328, 37.708724484976287 ], [ -122.378147174694149, 37.708715232583032 ], [ -122.378108766623569, 37.708700393880235 ], [ -122.378089549231376, 37.708692459277344 ], [ -122.378072043283993, 37.708683810925692 ], [ -122.378056239066638, 37.708674105341039 ], [ -122.378040425836915, 37.708664056532776 ], [ -122.378029762871009, 37.708652552139604 ], [ -122.378012273597136, 37.70864459051851 ], [ -122.377996469734569, 37.708634884645676 ], [ -122.37798069155609, 37.708626209006241 ], [ -122.377964922044868, 37.708617876317049 ], [ -122.377947441795172, 37.708610257633161 ], [ -122.377929987553088, 37.708603668352943 ], [ -122.377912541998256, 37.708597422846282 ], [ -122.3778951224499, 37.708592206743326 ], [ -122.377875983484813, 37.708587361142648 ], [ -122.37785687054604, 37.708583545768889 ], [ -122.377837783259466, 37.708580759529298 ], [ -122.377818705342307, 37.708578316777135 ], [ -122.377799653089951, 37.708576903708312 ], [ -122.37778062684724, 37.708576520317315 ], [ -122.377751275466451, 37.708578018636814 ], [ -122.37773407231694, 37.708581382915298 ], [ -122.377718632623825, 37.708586092812681 ], [ -122.377701481846131, 37.708591516991923 ], [ -122.377687821894156, 37.70859825842814 ], [ -122.377674179284952, 37.708605686591305 ], [ -122.377657141190483, 37.70861557244023 ], [ -122.377638365993562, 37.708625142614181 ], [ -122.377621302228775, 37.708633998771425 ], [ -122.37760422910678, 37.708642511984849 ], [ -122.377585411236822, 37.708650365729795 ], [ -122.377547740133352, 37.708664700862904 ], [ -122.377527150486301, 37.708670866291307 ], [ -122.377508279906351, 37.708676660947582 ], [ -122.377487664247838, 37.708681796688104 ], [ -122.377468768348663, 37.708686561646054 ], [ -122.377448126680292, 37.708690667698683 ], [ -122.377432642914897, 37.708693661434552 ], [ -122.377360540414671, 37.708713695820649 ], [ -122.377290182950702, 37.708734389078231 ], [ -122.37721985977025, 37.708756455207251 ], [ -122.377122130511736, 37.708788572304698 ], [ -122.377099960038464, 37.708800600058829 ], [ -122.377076061124569, 37.708812655354983 ], [ -122.377053899648615, 37.708825026321882 ], [ -122.377031746485883, 37.70883774051714 ], [ -122.376984053287501, 37.708865969789912 ], [ -122.376966919370915, 37.708872080046966 ], [ -122.376949742820514, 37.708876474429971 ], [ -122.37693425933503, 37.708879467820125 ], [ -122.376896466671624, 37.708888997566206 ], [ -122.376879298426118, 37.708893734896868 ], [ -122.376863901249948, 37.70890016082808 ], [ -122.376850267175342, 37.708907932397054 ], [ -122.376836667745323, 37.708917076323402 ], [ -122.376824822757797, 37.708927222935884 ], [ -122.376814748831492, 37.70893905787635 ], [ -122.376802877136896, 37.70894817426737 ], [ -122.376791014809598, 37.708957634422354 ], [ -122.376755452394264, 37.708987043484797 ], [ -122.376745335469863, 37.7089971622786 ], [ -122.376733490104598, 37.709007308612669 ], [ -122.376716755060258, 37.709029207270859 ], [ -122.376711908706653, 37.709042675731048 ], [ -122.376710535868128, 37.709056775574453 ], [ -122.37670739161139, 37.709069186817985 ], [ -122.37670251024899, 37.709081282375145 ], [ -122.376694138728411, 37.709092060083194 ], [ -122.376684004106508, 37.709101492422995 ], [ -122.376670361304676, 37.709108920469312 ], [ -122.376656744500607, 37.709117378469699 ], [ -122.376650118041127, 37.709128814824965 ], [ -122.376645245682482, 37.709141253875728 ], [ -122.376642127052065, 37.709154694529374 ], [ -122.376632417316515, 37.709180944983316 ], [ -122.376619233705384, 37.709206564055854 ], [ -122.376610896477217, 37.709218714945962 ], [ -122.376602550229492, 37.709230522339361 ], [ -122.376592476565378, 37.709242356980148 ], [ -122.376582384885396, 37.709253505451606 ], [ -122.376570661100516, 37.709268456941743 ], [ -122.376557330163322, 37.709288241147618 ], [ -122.376542262116743, 37.709307709937875 ], [ -122.376527177411774, 37.709326491711906 ], [ -122.376510355603088, 37.709344958344019 ], [ -122.37649688600834, 37.709359250635856 ], [ -122.376465576896948, 37.709420181699592 ], [ -122.37643425907072, 37.709480769527424 ], [ -122.376389592497333, 37.709560455358435 ], [ -122.376388193936847, 37.709573525235768 ], [ -122.376391962028805, 37.709585826347244 ], [ -122.376399160344661, 37.709597042716048 ], [ -122.376402928439646, 37.70960934382714 ], [ -122.376401512215111, 37.709621727530589 ], [ -122.376396631112286, 37.709633823068486 ], [ -122.376388241812876, 37.709643914305353 ], [ -122.376374607552179, 37.709651685818365 ], [ -122.376360903976007, 37.709656711239063 ], [ -122.376340270633293, 37.709661160049372 ], [ -122.376319628632046, 37.709665265903617 ], [ -122.376300706073636, 37.70966900099792 ], [ -122.376281774504847, 37.709672392867645 ], [ -122.376261106515926, 37.709675469305139 ], [ -122.376242166965341, 37.709678517655895 ], [ -122.376221481647946, 37.709680907632375 ], [ -122.376202524423789, 37.709683269528199 ], [ -122.376181830441382, 37.709685316270686 ], [ -122.376162855890229, 37.709686991706079 ], [ -122.376142153236586, 37.70968869493997 ], [ -122.37612144191985, 37.709690054943209 ], [ -122.376102441041382, 37.709690700967826 ], [ -122.376060983764248, 37.70969204832312 ], [ -122.376041966245552, 37.709692007598299 ], [ -122.376021220279497, 37.709691994675758 ], [ -122.375997000772998, 37.709691350345274 ], [ -122.375979685047099, 37.709690252959057 ], [ -122.375962360653403, 37.709688812068713 ], [ -122.375946764362084, 37.709687343377091 ], [ -122.375929430969819, 37.709685559534897 ], [ -122.375913817710057, 37.709683404653902 ], [ -122.375896475997124, 37.709681277299751 ], [ -122.375880853380082, 37.709678778923745 ], [ -122.375863494692936, 37.709675965105127 ], [ -122.375830496078862, 37.709669966721727 ], [ -122.375814856497584, 37.709666782151935 ], [ -122.375799199596415, 37.709662911125946 ], [ -122.375781814588834, 37.709659067619612 ], [ -122.375766157697925, 37.7096551968638 ], [ -122.375750492134401, 37.709650982329691 ], [ -122.37571914370605, 37.709641867350243 ], [ -122.37570345217442, 37.709636623403227 ], [ -122.375687769305102, 37.709631722681216 ], [ -122.375672068772147, 37.709626135508472 ], [ -122.375626688017107, 37.709609003209117 ], [ -122.375612698633404, 37.70960270232392 ], [ -122.375586491256968, 37.709591788341328 ], [ -122.375574203661955, 37.709584430256932 ], [ -122.375561908094213, 37.709576728658583 ], [ -122.375549603516987, 37.7095686835628 ], [ -122.375539018050162, 37.709560268000558 ], [ -122.375526696511997, 37.709551536717242 ], [ -122.375505491645058, 37.709533332668286 ], [ -122.375494871897089, 37.709523544188201 ], [ -122.375485980256698, 37.709513728189755 ], [ -122.375468179326063, 37.709493410016719 ], [ -122.375457507973294, 37.709481561890541 ], [ -122.375445047568775, 37.709467338970569 ], [ -122.375432604141196, 37.709453802508946 ], [ -122.37541844161953, 37.70944063678396 ], [ -122.375402568663233, 37.709428185022126 ], [ -122.375386712684005, 37.709416419717819 ], [ -122.375370874027013, 37.709405340865558 ], [ -122.375353324589767, 37.709394975980821 ], [ -122.375334064026845, 37.709385325068311 ], [ -122.3753165495785, 37.709376333080996 ], [ -122.375297332662143, 37.709368398292526 ], [ -122.375276404964978, 37.709361177469411 ], [ -122.37525895944836, 37.709354931295927 ], [ -122.375243233032052, 37.709348314384421 ], [ -122.375227498651867, 37.709341354232684 ], [ -122.375196011900385, 37.709326747754233 ], [ -122.375180259522494, 37.709319101152943 ], [ -122.375166235593625, 37.709311427031338 ], [ -122.375150475248759, 37.709303436913331 ], [ -122.375122392776206, 37.709286715752803 ], [ -122.375108342887259, 37.709278011942899 ], [ -122.375092564902388, 37.709269335642915 ], [ -122.375080234468939, 37.709260261365458 ], [ -122.375066167268656, 37.709250870821613 ], [ -122.375046820209405, 37.709237787590567 ], [ -122.374989178668883, 37.709214326304803 ], [ -122.374933247603437, 37.709190151032686 ], [ -122.374831814752426, 37.709144037952456 ], [ -122.374807448289985, 37.709137558790196 ], [ -122.374784792602327, 37.709130365112337 ], [ -122.374762119621366, 37.709122485524915 ], [ -122.374739428974408, 37.709113918935145 ], [ -122.374716721719778, 37.709104666150246 ], [ -122.374694005469692, 37.70909507013927 ], [ -122.374673000016784, 37.709084760438706 ], [ -122.374651977245378, 37.709073763730864 ], [ -122.374630937176775, 37.709062080839466 ], [ -122.374611616554063, 37.709050027212591 ], [ -122.374592286937002, 37.709037630360818 ], [ -122.374572932059905, 37.709024204087896 ], [ -122.37455530492376, 37.709010749764424 ], [ -122.374537660498376, 37.708996609533031 ], [ -122.374519998756611, 37.708981782295425 ], [ -122.374504056473583, 37.708966584874155 ], [ -122.37448810553569, 37.708951043948915 ], [ -122.374473874034791, 37.708935132017182 ], [ -122.374445393756574, 37.708902622243208 ], [ -122.37441087248213, 37.708836215748391 ], [ -122.374376333954515, 37.708769122513743 ], [ -122.374372557576578, 37.708756477834406 ], [ -122.374371908539288, 37.708730736067942 ], [ -122.374373316424055, 37.708718008885349 ], [ -122.374376452056026, 37.708705254481714 ], [ -122.374381325118193, 37.708692815793029 ], [ -122.374386206487088, 37.708680720336844 ], [ -122.374392824593912, 37.708668940606316 ], [ -122.374401188091994, 37.708657819828403 ], [ -122.374411296980753, 37.708647358002679 ], [ -122.374421423174923, 37.708637582630523 ], [ -122.374446851154033, 37.708617606150035 ], [ -122.374463828756802, 37.708605318455056 ], [ -122.374482543776409, 37.708593346196544 ], [ -122.374499530354001, 37.708581401168907 ], [ -122.374518253325192, 37.708569772142909 ], [ -122.374535257553518, 37.708558513833601 ], [ -122.374562508759965, 37.708542285323816 ], [ -122.374586545781455, 37.70853572218347 ], [ -122.374610592144961, 37.708529502254436 ], [ -122.374634646468323, 37.708523625558676 ], [ -122.374658710134312, 37.7085180920742 ], [ -122.374682781760811, 37.708512901823013 ], [ -122.374706862737568, 37.708508055057699 ], [ -122.374732662777703, 37.708502837010279 ], [ -122.374853593864671, 37.708499538871287 ], [ -122.374919053196592, 37.70849025581817 ], [ -122.374984547145971, 37.708482345911996 ], [ -122.375051786483155, 37.708475095187325 ], [ -122.375117314688779, 37.708468558121517 ], [ -122.375182869540055, 37.708463050415169 ], [ -122.375307152797603, 37.708455577784022 ], [ -122.375370892619628, 37.708446665496233 ], [ -122.375436334529738, 37.708436695975841 ], [ -122.375501750445025, 37.708425696737649 ], [ -122.375594677055204, 37.708408765528524 ], [ -122.375613633621171, 37.708406403460977 ], [ -122.375651599745083, 37.708403738663016 ], [ -122.375689617134853, 37.708403133226682 ], [ -122.375705187517212, 37.708403572265745 ], [ -122.375746670063037, 37.708403254716799 ], [ -122.375789863380334, 37.70840222372631 ], [ -122.375831311282568, 37.708400533239043 ], [ -122.375872750535976, 37.708398500059232 ], [ -122.375914172451246, 37.708395779861441 ], [ -122.375955577054981, 37.708392373743997 ], [ -122.376026281020401, 37.708385410092347 ], [ -122.376043553148961, 37.708384791885535 ], [ -122.376081570871463, 37.708384186317168 ], [ -122.376098868977905, 37.708384597508989 ], [ -122.376117894810292, 37.708384980902565 ], [ -122.376136930009963, 37.708385708058287 ], [ -122.376154236772265, 37.708386462194504 ], [ -122.376192341117545, 37.708389288861419 ], [ -122.376221804728033, 37.708392253162685 ], [ -122.376289356067019, 37.708397357901482 ], [ -122.376356881066656, 37.708401432376654 ], [ -122.376424388753932, 37.708404820633483 ], [ -122.37649187011074, 37.708407179175936 ], [ -122.376561053904155, 37.708408480459845 ], [ -122.376628483974059, 37.708408779550602 ], [ -122.376747729724002, 37.70840722314199 ], [ -122.376763213450403, 37.708404229221443 ], [ -122.376778714166832, 37.708401922033076 ], [ -122.376794232219382, 37.708400301571331 ], [ -122.376809767242023, 37.708399367018018 ], [ -122.376832232606262, 37.708399009032 ], [ -122.376847802648896, 37.708399447925551 ], [ -122.376863390008594, 37.708400572721949 ], [ -122.376878994361022, 37.708402384250476 ], [ -122.376901555046999, 37.708405801748796 ], [ -122.376925852133638, 37.708409534936841 ], [ -122.376951859969793, 37.708412554126937 ], [ -122.376977850476194, 37.708414886857213 ], [ -122.37700382331353, 37.708416533407728 ], [ -122.377029779497036, 37.708417492938302 ], [ -122.377055709343722, 37.708417423062144 ], [ -122.377081630523975, 37.70841700995323 ], [ -122.377110981861648, 37.708415512075135 ], [ -122.377140437198108, 37.708418132914076 ], [ -122.377199313216423, 37.708422001936356 ], [ -122.377228733890291, 37.708423249845112 ], [ -122.377258145890991, 37.708424154244938 ], [ -122.377289277310766, 37.70842468814115 ], [ -122.37734804933055, 37.708424438364865 ], [ -122.377379146073082, 37.708423599054704 ], [ -122.37742059395805, 37.708421908282823 ], [ -122.377622787821593, 37.70841902848273 ], [ -122.377643542101708, 37.708419384350222 ], [ -122.377662585641644, 37.708420454217361 ], [ -122.377704146218846, 37.708423225296556 ], [ -122.37772493517798, 37.708424954057655 ], [ -122.37774400438326, 37.708427053598058 ], [ -122.377768215169155, 37.708427354337005 ], [ -122.378000106843373, 37.708436705199382 ], [ -122.37830619390914, 37.708440408092009 ], [ -122.37833376512657, 37.708436878380915 ], [ -122.378363081750692, 37.708434007008506 ], [ -122.378390687645833, 37.708431849917247 ], [ -122.378420038963, 37.708430351712977 ], [ -122.378463249251951, 37.708430005927042 ], [ -122.378492652956893, 37.708430567335327 ], [ -122.378520354243449, 37.708432185435299 ], [ -122.378549800963029, 37.708434462694896 ], [ -122.37857753695242, 37.708437453963704 ], [ -122.378607018369593, 37.70844110411668 ], [ -122.378634797731564, 37.7084458115066 ], [ -122.378662594444492, 37.708451205343785 ], [ -122.378692136242478, 37.70845725806938 ], [ -122.378711232196324, 37.708460387122912 ], [ -122.378730310465116, 37.708462829999633 ], [ -122.378768431943271, 37.708466342017964 ], [ -122.378787467182775, 37.708467068470803 ], [ -122.378808221481876, 37.708467424133083 ], [ -122.37882723903445, 37.708467464405793 ], [ -122.378846230556476, 37.708466474720126 ], [ -122.378866950150183, 37.708465457189874 ], [ -122.378885915308302, 37.708463438097219 ], [ -122.378904872467956, 37.708461075214444 ], [ -122.378923820612812, 37.708458369381802 ], [ -122.378949637703641, 37.708453837413678 ], [ -122.378975437088471, 37.708448618717021 ], [ -122.379001245829258, 37.708443742956021 ], [ -122.379028799657206, 37.708439526353885 ], [ -122.379054625403654, 37.708435337315045 ], [ -122.379080468498444, 37.708431834724301 ], [ -122.379108048344705, 37.708428647784281 ], [ -122.379133899764923, 37.708425488414207 ], [ -122.379161496965466, 37.708422988190016 ], [ -122.379201182372455, 37.708419951449862 ], [ -122.379266840650459, 37.708418560198723 ], [ -122.379358446131135, 37.708417785256238 ], [ -122.379379209096214, 37.708418484044785 ], [ -122.37939999809295, 37.708420212510255 ], [ -122.379420813122252, 37.708422970652627 ], [ -122.379439934791137, 37.708427129548738 ], [ -122.379460810565476, 37.708432290272043 ], [ -122.379479983944307, 37.708438507979139 ], [ -122.379497455985685, 37.70844578347802 ], [ -122.379516681782491, 37.708454060534727 ], [ -122.379532477472964, 37.708463422971533 ], [ -122.379550018242554, 37.708473443739265 ], [ -122.379562332087886, 37.708481831365319 ], [ -122.379578066691991, 37.708488790938986 ], [ -122.379593775956252, 37.708494720818962 ], [ -122.37961118692283, 37.708499593443946 ], [ -122.379628563179082, 37.708503093158996 ], [ -122.379654614203474, 37.708507827892014 ], [ -122.379678955199253, 37.708513276640822 ], [ -122.379705041297058, 37.708519384539102 ], [ -122.379729416669221, 37.708526206190314 ], [ -122.379762215471303, 37.708524308990917 ], [ -122.379786946339379, 37.708545202935731 ], [ -122.379809654745344, 37.70855445473304 ], [ -122.379834099571553, 37.70856402217715 ], [ -122.379856842014789, 37.70857464688364 ], [ -122.379891828930511, 37.70859091336267 ], [ -122.379907538241355, 37.708596843200731 ], [ -122.37992494057292, 37.708601372552437 ], [ -122.379945781718234, 37.708605160557006 ], [ -122.379964929495586, 37.708610348773604 ], [ -122.379985822717444, 37.708616195857346 ], [ -122.380006741975436, 37.708623072343208 ], [ -122.380025941841694, 37.708630319910732 ], [ -122.380045167406379, 37.708638597161041 ], [ -122.380062691631167, 37.708647931936689 ], [ -122.380080223835478, 37.708657609398351 ], [ -122.380097782783579, 37.708668316801365 ], [ -122.380111807100121, 37.70867599033663 ], [ -122.380127559503322, 37.708683636284732 ], [ -122.380141575145288, 37.708690966589629 ], [ -122.380173045244604, 37.708704885568586 ], [ -122.380187043533539, 37.708711529414458 ], [ -122.380202769909488, 37.708718145672115 ], [ -122.380218478926409, 37.708724075474095 ], [ -122.380234196281208, 37.708730348506272 ], [ -122.380249896974746, 37.708735935346311 ], [ -122.380267325396161, 37.708741494053129 ], [ -122.380283025396338, 37.708747080625194 ], [ -122.380298717408834, 37.708752323957377 ], [ -122.380316128481965, 37.708757196477961 ], [ -122.380331802444843, 37.708761753363198 ], [ -122.380349205186434, 37.708766282646621 ], [ -122.380364870817246, 37.708770496295159 ], [ -122.380399640892449, 37.708778181953583 ], [ -122.380415288819378, 37.708781709147395 ], [ -122.380450024177094, 37.708788021883869 ], [ -122.380467383521719, 37.708790835015982 ], [ -122.380502084159204, 37.708795774830023 ], [ -122.380519425451766, 37.708797901511986 ], [ -122.380554091366136, 37.708801468403678 ], [ -122.380571407305098, 37.708802565386677 ], [ -122.38058873123596, 37.708804005604904 ], [ -122.38062334505976, 37.708805513115699 ], [ -122.380640643641911, 37.708805923909587 ], [ -122.380657932836172, 37.708805990936078 ], [ -122.380699406909102, 37.70880532869085 ], [ -122.380744406973307, 37.708807357325021 ], [ -122.38079115213398, 37.708810044256637 ], [ -122.380837914326918, 37.708813417903293 ], [ -122.38088296649677, 37.70881750557038 ], [ -122.380929755096815, 37.708821908855221 ], [ -122.380974841668888, 37.708827369399565 ], [ -122.381019936932205, 37.708833173153394 ], [ -122.38105859232931, 37.708838506457845 ], [ -122.381066777313606, 37.708839635749648 ], [ -122.381111907677337, 37.708846812369579 ], [ -122.381195264075259, 37.708861619200029 ], [ -122.381216079294731, 37.708864377024973 ], [ -122.381238613917688, 37.708866764017813 ], [ -122.381259411768738, 37.708868835381693 ], [ -122.381280183563462, 37.708869877061808 ], [ -122.381300946672837, 37.708870575511568 ], [ -122.381323420152597, 37.708870559906792 ], [ -122.381342429462208, 37.708870256266636 ], [ -122.381404605870372, 37.708867889625047 ], [ -122.381505512521713, 37.708893060219943 ], [ -122.381586019961446, 37.708863618143027 ], [ -122.381762346029831, 37.708863204692321 ], [ -122.381781407118979, 37.708864960346808 ], [ -122.381802213679833, 37.708867375116121 ], [ -122.381821317860044, 37.708870846628407 ], [ -122.381842167859006, 37.708874977249344 ], [ -122.381859579414566, 37.708879849810799 ], [ -122.381875262525128, 37.708884749437118 ], [ -122.381890971365024, 37.708890679021408 ], [ -122.381904969842452, 37.708897322662949 ], [ -122.38191898569994, 37.708904652756104 ], [ -122.381933027626729, 37.708913012527532 ], [ -122.381945359191491, 37.708922086357219 ], [ -122.381957699102628, 37.708931503417737 ], [ -122.381968327967215, 37.70894163482285 ], [ -122.381980685608269, 37.708951738328693 ], [ -122.381993034210964, 37.708961498337537 ], [ -122.382005374141627, 37.708970915667607 ], [ -122.382017705026641, 37.70897998922608 ], [ -122.382045788934036, 37.708996708743506 ], [ -122.382059822203018, 37.709004725273097 ], [ -122.382073838096019, 37.709012055347692 ], [ -122.382089582428222, 37.709019357800898 ], [ -122.382105309038593, 37.709025973804216 ], [ -122.382136727169851, 37.709037833178158 ], [ -122.382152419374435, 37.709043076263157 ], [ -122.382168102538699, 37.709047975850353 ], [ -122.382185504767932, 37.709052504873313 ], [ -122.382201170908758, 37.709056718271931 ], [ -122.382218547417111, 37.709060217604623 ], [ -122.382234178116121, 37.709063058378014 ], [ -122.382251537592452, 37.70906587124707 ], [ -122.382268878998048, 37.70906799767139 ], [ -122.382286203707906, 37.709069437354287 ], [ -122.382303519050552, 37.709070534368244 ], [ -122.382320826380379, 37.709071287592842 ], [ -122.382341580865045, 37.709071642632544 ], [ -122.382365730359041, 37.709069540125881 ], [ -122.382388178510126, 37.709068494352529 ], [ -122.382412363104777, 37.709067764462617 ], [ -122.38243483664391, 37.709067748645822 ], [ -122.382459065046888, 37.709068735148399 ], [ -122.382481573697518, 37.709070092223556 ], [ -122.382505827816885, 37.709072107852691 ], [ -122.382528371242771, 37.709074838099873 ], [ -122.38255092334812, 37.709077911020174 ], [ -122.382573501192169, 37.709082013896044 ], [ -122.382596088421835, 37.709086459983112 ], [ -122.382618692692688, 37.709091592524558 ], [ -122.382641314350906, 37.70909741151484 ], [ -122.382662225311549, 37.709103944851186 ], [ -122.382677899491284, 37.709108501423991 ], [ -122.382700504120081, 37.709113633944185 ], [ -122.382724827799791, 37.709118395340859 ], [ -122.382747414358349, 37.709122841409943 ], [ -122.382771729703904, 37.70912725983942 ], [ -122.382794299234817, 37.7091310197154 ], [ -122.382818588161342, 37.709134408460983 ], [ -122.382842868390057, 37.709137453700393 ], [ -122.38286542018875, 37.709140526840578 ], [ -122.382889683387347, 37.709142885886266 ], [ -122.382938191710934, 37.709146917520584 ], [ -122.38296070039398, 37.709148274504173 ], [ -122.382986665264852, 37.70914957622869 ], [ -122.383007411087661, 37.709149588199111 ], [ -122.383029884990066, 37.709149571988654 ], [ -122.383050648193986, 37.709150270129996 ], [ -122.383073139146191, 37.709150940644498 ], [ -122.383093919739352, 37.709152325231301 ], [ -122.383116428772482, 37.709153682179597 ], [ -122.383158007351824, 37.709157137787358 ], [ -122.383180542125842, 37.709159524408562 ], [ -122.38322217288038, 37.709165039352904 ], [ -122.383244725048755, 37.709168112414922 ], [ -122.383265557820081, 37.709171556330674 ], [ -122.38330031099926, 37.709178554953908 ], [ -122.383319389589161, 37.709180996537953 ], [ -122.383354090598218, 37.709185935511563 ], [ -122.383373151814638, 37.709187691182962 ], [ -122.383407818040695, 37.709191256960054 ], [ -122.383426861522594, 37.709192326175256 ], [ -122.38344417758799, 37.709193422461318 ], [ -122.383463212713679, 37.709194148164016 ], [ -122.383497809392168, 37.709194968651609 ], [ -122.383516826773814, 37.709195007623549 ], [ -122.38353410806306, 37.709194731264901 ], [ -122.38355310841149, 37.709194084321595 ], [ -122.383570380651364, 37.709193464462061 ], [ -122.383603179656703, 37.709191566467979 ], [ -122.383625618791854, 37.709190177512419 ], [ -122.383660189372748, 37.709189967998213 ], [ -122.383684400085329, 37.709190267526687 ], [ -122.383706900098034, 37.709191281141187 ], [ -122.383729426202848, 37.709193324430878 ], [ -122.383751960667553, 37.709195711222868 ], [ -122.383774513205751, 37.709198783903318 ], [ -122.383797074104677, 37.709202200086082 ], [ -122.383819661098414, 37.709206645943979 ], [ -122.383842256453889, 37.709211435304148 ], [ -122.383863141444834, 37.709216938198551 ], [ -122.383887517772791, 37.709223758983043 ], [ -122.383918823190285, 37.709231155662387 ], [ -122.383950120607025, 37.709238209095858 ], [ -122.384012679973182, 37.709250943042996 ], [ -122.384043941921391, 37.709256623556676 ], [ -122.38407519587382, 37.709261961099109 ], [ -122.384137668283756, 37.709271262440524 ], [ -122.384168886754026, 37.709275226788684 ], [ -122.384201816616198, 37.709278477019389 ], [ -122.384233018039538, 37.70928175489211 ], [ -122.384265929816848, 37.709284318663009 ], [ -122.384297105498632, 37.709286567108421 ], [ -122.384329991519081, 37.709288100901972 ], [ -122.384361149451607, 37.709289662608477 ], [ -122.384394018088159, 37.7092905104804 ], [ -122.384452807809836, 37.709290943068623 ], [ -122.384475299515429, 37.709291613578934 ], [ -122.384496080167082, 37.709292997643757 ], [ -122.384516886928907, 37.709295411658836 ], [ -122.384534272309892, 37.7092992541508 ], [ -122.384549981442476, 37.709305183105528 ], [ -122.384600688269401, 37.709327720626654 ], [ -122.384651368684075, 37.709349228726715 ], [ -122.384702031710773, 37.709370049802885 ], [ -122.384754405467419, 37.709390157025624 ], [ -122.384806761855017, 37.709409578046774 ], [ -122.384859100858179, 37.709428312317186 ], [ -122.384913150236486, 37.709446332461404 ], [ -122.384967174216499, 37.709463322615903 ], [ -122.385028162503517, 37.709482261754836 ], [ -122.385061327139894, 37.709494778863174 ], [ -122.385077071522119, 37.709502080922022 ], [ -122.385092833321409, 37.709510069706113 ], [ -122.385106884415976, 37.70951877205021 ], [ -122.385135021443745, 37.709537550188017 ], [ -122.38516131723388, 37.709551894035449 ], [ -122.385185875889178, 37.70956592259045 ], [ -122.385212163333733, 37.709579922920014 ], [ -122.385240161144154, 37.709593209410606 ], [ -122.385266422163951, 37.7096061806036 ], [ -122.385294402578083, 37.709618780353921 ], [ -122.38532064620027, 37.709631064807468 ], [ -122.385376554860102, 37.709654205466649 ], [ -122.385427183484424, 37.709673653599111 ], [ -122.385474486504066, 37.709698305432774 ], [ -122.385520087565695, 37.709724014590961 ], [ -122.385565697364569, 37.70975006695771 ], [ -122.385611324607254, 37.709776805759368 ], [ -122.385656969295042, 37.709804230995893 ], [ -122.385720426192663, 37.709852316346286 ], [ -122.38574142470155, 37.709862281398394 ], [ -122.38576260604151, 37.709879453650188 ], [ -122.385783769984741, 37.709895939720084 ], [ -122.385806662054534, 37.709912398391943 ], [ -122.385829545420535, 37.709928513558424 ], [ -122.385852419736807, 37.709944285225092 ], [ -122.385908633553967, 37.709979438551144 ], [ -122.385924326223261, 37.709984681132887 ], [ -122.385940009841704, 37.709989580491779 ], [ -122.385955658638977, 37.709993107217954 ], [ -122.385971289669953, 37.709995947220456 ], [ -122.38598863209009, 37.709998073085792 ], [ -122.386004211215408, 37.709998853446052 ], [ -122.386023237864435, 37.70999923550869 ], [ -122.386043957793987, 37.709998216990876 ], [ -122.386064686430998, 37.709997541695692 ], [ -122.386085397651371, 37.709996179944298 ], [ -122.386126802680138, 37.709992770252597 ], [ -122.386147487765797, 37.709990378536858 ], [ -122.386169900968881, 37.70998795941798 ], [ -122.386190577350149, 37.709985224742994 ], [ -122.386231912690491, 37.709979068929542 ], [ -122.386250834828786, 37.709975332240148 ], [ -122.386271485083554, 37.709971568146692 ], [ -122.386292126613185, 37.709967460274193 ], [ -122.386312759445275, 37.709963009720973 ], [ -122.386333383551687, 37.709958215388703 ], [ -122.386352270849088, 37.709953106052509 ], [ -122.386372886247685, 37.709947968761632 ], [ -122.386393492926942, 37.709942487966288 ], [ -122.386412353741648, 37.709936348947188 ], [ -122.386432951711981, 37.709930525193258 ], [ -122.386451804494854, 37.709924042655906 ], [ -122.386489491932494, 37.709910390856137 ], [ -122.386508326593912, 37.709903221868281 ], [ -122.386545979522182, 37.709888197414408 ], [ -122.386564797097478, 37.709880341959447 ], [ -122.386583605612742, 37.709872143280762 ], [ -122.386602406104558, 37.709863601361754 ], [ -122.386624601143666, 37.709852601505517 ], [ -122.386648585957673, 37.709843976811243 ], [ -122.386694774483402, 37.709824694919647 ], [ -122.386716987264919, 37.709814381492933 ], [ -122.386739173906818, 37.709803038383235 ], [ -122.386759623723719, 37.709791379725885 ], [ -122.386781783879641, 37.709779007209534 ], [ -122.386809006718778, 37.709761745916552 ], [ -122.386819140491724, 37.709752312701141 ], [ -122.386825765435574, 37.70974087550043 ], [ -122.386828898974457, 37.709728120767494 ], [ -122.386826848894813, 37.709715449349289 ], [ -122.386819640282908, 37.709703890391729 ], [ -122.386817598557442, 37.709691561655937 ], [ -122.386819004336886, 37.70967883460122 ], [ -122.386823901170089, 37.709667425084099 ], [ -122.386834025525516, 37.709657648652097 ], [ -122.386847676124134, 37.709650562655604 ], [ -122.386868282692944, 37.709645082051537 ], [ -122.386895766825091, 37.709638117800075 ], [ -122.386923224816215, 37.709630123863455 ], [ -122.386948937619863, 37.709621471147983 ], [ -122.386974623942265, 37.70961178902828 ], [ -122.387000301531728, 37.709601763127544 ], [ -122.387025961350744, 37.709591051048854 ], [ -122.387051595722909, 37.709579309549376 ], [ -122.387075492913056, 37.709567251961815 ], [ -122.387099363971075, 37.709554165239872 ], [ -122.38712149784719, 37.709540762431281 ], [ -122.387143614994557, 37.709526673704133 ], [ -122.387172522192103, 37.709507668506873 ], [ -122.387191252472988, 37.709496380689082 ], [ -122.38723213436316, 37.70947237676026 ], [ -122.387250838140105, 37.709460059259776 ], [ -122.387271261641757, 37.709447370834297 ], [ -122.387308635352881, 37.709421363170897 ], [ -122.38732731330154, 37.709408015699388 ], [ -122.387344254439029, 37.70939435296458 ], [ -122.387362914960519, 37.709380319584099 ], [ -122.387379847018508, 37.709366313348852 ], [ -122.387396771054185, 37.709351964148425 ], [ -122.387413685684905, 37.70933727200498 ], [ -122.387447498167859, 37.709307200423432 ], [ -122.387477837364472, 37.709276498309869 ], [ -122.387504772282938, 37.709247910664018 ], [ -122.387518335595743, 37.709237392327147 ], [ -122.387531890183013, 37.709226530487904 ], [ -122.387555525398113, 37.709204176295842 ], [ -122.387565597996186, 37.70919234043189 ], [ -122.387577389623033, 37.709180133651593 ], [ -122.387587444438822, 37.709167611338806 ], [ -122.387595770813661, 37.709155116725697 ], [ -122.387605817253487, 37.709142251179543 ], [ -122.387614126544804, 37.709129070381714 ], [ -122.387625726420353, 37.709109312619674 ], [ -122.38763581573356, 37.709098163213035 ], [ -122.387647651248827, 37.709087672276503 ], [ -122.387659495137399, 37.7090775248451 ], [ -122.387671356453438, 37.709068063864919 ], [ -122.387684954578489, 37.709058918688022 ], [ -122.387698570117223, 37.709050459412794 ], [ -122.387713905033536, 37.709041629487615 ], [ -122.387727520579759, 37.70903317075819 ], [ -122.387741127400233, 37.709024368526379 ], [ -122.387754716779028, 37.70901487956597 ], [ -122.38776828872976, 37.709004704426171 ], [ -122.387780123872801, 37.708994213756277 ], [ -122.387790213492849, 37.708983064330674 ], [ -122.387800294400918, 37.708971571952546 ], [ -122.387820421322658, 37.708947213465045 ], [ -122.387827011176498, 37.708934403301733 ], [ -122.387835268108802, 37.708919163130588 ], [ -122.387845322493249, 37.708906640526244 ], [ -122.387855368863313, 37.708893775232887 ], [ -122.387863686784897, 37.708880937093966 ], [ -122.387870259192908, 37.708867440475665 ], [ -122.387876822882276, 37.708853600630782 ], [ -122.387881684640561, 37.70884081843792 ], [ -122.387890037417037, 37.708829353201914 ], [ -122.387898407291956, 37.708818574972398 ], [ -122.387908532074746, 37.708808798161094 ], [ -122.387920428182127, 37.708800710060288 ], [ -122.387934078526868, 37.708793624211502 ], [ -122.387949491811682, 37.708787883291222 ], [ -122.387963124704001, 37.708780110437473 ], [ -122.387974994657682, 37.708770992927079 ], [ -122.387986838098541, 37.708760845193225 ], [ -122.38799691929168, 37.70874935279231 ], [ -122.388003535248131, 37.708737572297345 ], [ -122.388025477290896, 37.708716618335004 ], [ -122.388016549225114, 37.708705430376419 ], [ -122.388024919406419, 37.708694651857606 ], [ -122.388035061251031, 37.708685561767766 ], [ -122.388048711556735, 37.70867847563099 ], [ -122.388064142243053, 37.708673421147999 ], [ -122.388079642671812, 37.708671112747226 ], [ -122.388100414499817, 37.708672152950157 ], [ -122.388116071494025, 37.708676022621809 ], [ -122.388131781471785, 37.708681951088387 ], [ -122.388159762030639, 37.708694550434529 ], [ -122.388173769748903, 37.708701536557498 ], [ -122.388201802628828, 37.708716195250794 ], [ -122.388214108081286, 37.708724238756957 ], [ -122.388226422945536, 37.708732625476948 ], [ -122.388238746184868, 37.708741355427378 ], [ -122.388251078145075, 37.708750428602698 ], [ -122.388266944735889, 37.708762535402698 ], [ -122.388279294146272, 37.708772295301998 ], [ -122.388293362910787, 37.708781683719387 ], [ -122.38830914233246, 37.708790358251797 ], [ -122.388323176244768, 37.708798374310007 ], [ -122.388338920792876, 37.708805675659121 ], [ -122.388354647568491, 37.708812290833862 ], [ -122.388372085684821, 37.70881819183667 ], [ -122.388387786655741, 37.70882377732292 ], [ -122.388405189556963, 37.70882830542164 ], [ -122.388422575029637, 37.70883214734004 ], [ -122.388439943052433, 37.70883530225435 ], [ -122.388457293652749, 37.708837771262928 ], [ -122.388476354886436, 37.708839525559505 ], [ -122.388493670259848, 37.708840621388994 ], [ -122.388512688251666, 37.708840659817909 ], [ -122.38852998653293, 37.708841069184182 ], [ -122.388547319691853, 37.708842851452602 ], [ -122.388564687729385, 37.708846006623098 ], [ -122.388580362562081, 37.708850562405146 ], [ -122.388611781644997, 37.70886241977783 ], [ -122.38865901579085, 37.708884324521037 ], [ -122.38867304103168, 37.70889199703673 ], [ -122.388704565133736, 37.708907973092835 ], [ -122.388718607824089, 37.708916332055367 ], [ -122.38873438732395, 37.708925006530642 ], [ -122.388748438741189, 37.708933708715719 ], [ -122.388776559026368, 37.708951799533132 ], [ -122.388804696766371, 37.708970576796062 ], [ -122.388818774369312, 37.708980308925696 ], [ -122.38883113260205, 37.708990411718339 ], [ -122.38884521891903, 37.709000486521759 ], [ -122.388857576813109, 37.70901058931716 ], [ -122.388869944129638, 37.709021035600863 ], [ -122.388894695509904, 37.709042614078506 ], [ -122.388910640750538, 37.709057809551815 ], [ -122.388972423353252, 37.709107980227031 ], [ -122.389081727973931, 37.709191381909299 ], [ -122.389101024813158, 37.709202403484106 ], [ -122.389122041028727, 37.709213054112247 ], [ -122.389141320435243, 37.709223389228221 ], [ -122.389162319218002, 37.709233353396939 ], [ -122.389183309291042, 37.709242974610376 ], [ -122.389223526102853, 37.709260871022344 ], [ -122.389313124685856, 37.70931711930168 ], [ -122.389481987883741, 37.709431155180901 ], [ -122.389492653071912, 37.709442658255767 ], [ -122.389505019851313, 37.709453104208613 ], [ -122.389517378601511, 37.709463206922976 ], [ -122.38952971956148, 37.709472623189463 ], [ -122.389543753727182, 37.709480638826818 ], [ -122.389557892592236, 37.709492773449732 ], [ -122.389586187763769, 37.709517728318737 ], [ -122.389598615991517, 37.709530577112993 ], [ -122.389612772309832, 37.709543397632146 ], [ -122.389625208918304, 37.709556589380568 ], [ -122.389644750565139, 37.709577221189377 ], [ -122.389655398357277, 37.709588038071757 ], [ -122.389667747741427, 37.709597797829758 ], [ -122.389681790670352, 37.709606156676571 ], [ -122.389697518418998, 37.709612771385522 ], [ -122.389713219657295, 37.709618356694392 ], [ -122.389730605029726, 37.709622198150228 ], [ -122.389747947470156, 37.709624323462215 ], [ -122.389765245594901, 37.709624732652614 ], [ -122.389782500792251, 37.709623425973788 ], [ -122.389799720389789, 37.709620746124841 ], [ -122.389816888318393, 37.709616006631549 ], [ -122.389835749113217, 37.709609867058475 ], [ -122.389863163150096, 37.709600156306408 ], [ -122.389890559721536, 37.709589758821316 ], [ -122.389917938840725, 37.709578675152393 ], [ -122.389945300499932, 37.709566905025042 ], [ -122.389970907526418, 37.709554132948654 ], [ -122.389996506509206, 37.709541017629583 ], [ -122.390020350865882, 37.709526900637606 ], [ -122.39004417774683, 37.709512096639571 ], [ -122.390067995898818, 37.709496949685239 ], [ -122.390091787861351, 37.709480773048014 ], [ -122.390113842650052, 37.709464281192048 ], [ -122.390139232126714, 37.709442928142842 ], [ -122.390159716218918, 37.709432641798621 ], [ -122.390178454754334, 37.709421696731738 ], [ -122.3901989126541, 37.709410380702636 ], [ -122.39021589655448, 37.70939843369046 ], [ -122.390234600516706, 37.709386115979576 ], [ -122.390251558562568, 37.709373139004065 ], [ -122.39026850788207, 37.709359819074663 ], [ -122.390285439740609, 37.709345812690756 ], [ -122.390300643497767, 37.709331834039105 ], [ -122.390315821066409, 37.709316825707447 ], [ -122.390329270534636, 37.709301845108946 ], [ -122.390344421562602, 37.709285807101061 ], [ -122.390361327552213, 37.709270771022531 ], [ -122.39037995255471, 37.709255363985214 ], [ -122.39039175211181, 37.709243500154884 ], [ -122.390403604724284, 37.709233695668296 ], [ -122.390415483172134, 37.70922492086406 ], [ -122.390429115893767, 37.709217148000036 ], [ -122.390442766075893, 37.709210061861029 ], [ -122.390456442426085, 37.709204004849276 ], [ -122.390471873057805, 37.709198950051309 ], [ -122.390487338262247, 37.709195268435437 ], [ -122.390504549691016, 37.709192244971604 ], [ -122.39052006760221, 37.7091906224273 ], [ -122.390549453543258, 37.709190494110466 ], [ -122.390566778448914, 37.709191932850082 ], [ -122.390582401104382, 37.709194429009507 ], [ -122.390598058337744, 37.709198298350977 ], [ -122.390613742436898, 37.709203196808069 ], [ -122.390626048230899, 37.70921124006167 ], [ -122.390650826717163, 37.709233847842071 ], [ -122.390663202699358, 37.709244636894077 ], [ -122.390679017412822, 37.709254684012365 ], [ -122.390694814671889, 37.709264044676523 ], [ -122.390710585401109, 37.709272375666167 ], [ -122.39072806745979, 37.70927999244968 ], [ -122.390745513912535, 37.709286236337753 ], [ -122.39076120677656, 37.709291478275702 ], [ -122.390820887340325, 37.709326917004176 ], [ -122.390880550507589, 37.709361669524867 ], [ -122.390955975777842, 37.709404409471233 ], [ -122.390984166616704, 37.709425245293367 ], [ -122.391043969973325, 37.709465489065806 ], [ -122.391073854047875, 37.709484924766009 ], [ -122.39110372905418, 37.709504016963635 ], [ -122.391135324127831, 37.70952273789505 ], [ -122.391198478718835, 37.709558807388859 ], [ -122.391230038228016, 37.709576155676679 ], [ -122.391263317811934, 37.70959313297017 ], [ -122.391294851500007, 37.709609451557228 ], [ -122.391328104225451, 37.709625399165667 ], [ -122.391384067146049, 37.709650596329034 ], [ -122.391403364798364, 37.709661617794914 ], [ -122.39142438147357, 37.709672268011516 ], [ -122.391443670051999, 37.70968294597585 ], [ -122.391473405843797, 37.709696546184524 ], [ -122.391490739272712, 37.709698328019577 ], [ -122.391506239801757, 37.709696018893702 ], [ -122.39153878556094, 37.709684165139144 ], [ -122.391567892571629, 37.709673053334001 ], [ -122.391595262737894, 37.70966162604946 ], [ -122.391624352264017, 37.709649827778549 ], [ -122.391716621681155, 37.709607142187203 ], [ -122.39187696505121, 37.709454172098226 ], [ -122.392088496086032, 37.709274627293134 ], [ -122.392100330316836, 37.709264136195202 ], [ -122.392112147763783, 37.709252958633222 ], [ -122.392122219297448, 37.709241122385279 ], [ -122.392130554000019, 37.709228970672129 ], [ -122.3921406164459, 37.70921679120223 ], [ -122.392147205586284, 37.70920398107237 ], [ -122.392155514411016, 37.709190799399607 ], [ -122.392160357630971, 37.709177330310062 ], [ -122.392166946757442, 37.709164519904434 ], [ -122.392190188120423, 37.709126719606594 ], [ -122.392215174675471, 37.709089577998483 ], [ -122.392281983011671, 37.708997512609393 ], [ -122.392295589286405, 37.70898870985144 ], [ -122.392309213031425, 37.708980593543679 ], [ -122.39232284551727, 37.708972820734765 ], [ -122.392336495460057, 37.708965733826894 ], [ -122.3923518734928, 37.7089586194272 ], [ -122.392365540911214, 37.708952219242256 ], [ -122.392380936412536, 37.708945791290532 ], [ -122.392396349039899, 37.708940049794052 ], [ -122.392411779830567, 37.708934994736204 ], [ -122.39242892962109, 37.708929568690095 ], [ -122.392432645117751, 37.708928100915109 ], [ -122.392656793824756, 37.709119608424643 ], [ -122.391332097355985, 37.710140738310088 ], [ -122.390887824662656, 37.71036523380814 ], [ -122.390835880106437, 37.711169771421694 ], [ -122.392609027560681, 37.711272141276474 ], [ -122.393916838957196, 37.711294747317396 ], [ -122.394130547970391, 37.711308547209811 ], [ -122.394301164504668, 37.711283892996612 ], [ -122.394415018271332, 37.711243467479711 ], [ -122.394533636579439, 37.711181739957787 ], [ -122.394789228222862, 37.711029491236808 ], [ -122.395699524288574, 37.710911289111898 ], [ -122.395804130724926, 37.711357784012904 ], [ -122.395984840101519, 37.711902635542479 ], [ -122.396209567629995, 37.712429108802013 ], [ -122.396615767431044, 37.713094016747043 ], [ -122.396615774145118, 37.713094103716635 ], [ -122.396885665233555, 37.713468431896139 ], [ -122.397834560573045, 37.714650610374164 ], [ -122.398259710629063, 37.715141974251068 ], [ -122.398471400839512, 37.715455433381891 ], [ -122.398552555430172, 37.715443409305585 ], [ -122.398990734294756, 37.715338865287599 ], [ -122.398990733617495, 37.715338865847912 ], [ -122.398991048786399, 37.715338790720075 ], [ -122.398991043085772, 37.715338797679301 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":16,"ZIP_CODE":94110,"ID":94110},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4217053213399, 37.731806501069016 ], [ -122.422820482616018, 37.731641033131751 ], [ -122.423920024119482, 37.731552895324626 ], [ -122.424553925961277, 37.731549131439351 ], [ -122.424645313557747, 37.731548588455745 ], [ -122.424987445865384, 37.731559842008934 ], [ -122.425563267495079, 37.731578779884757 ], [ -122.426103813784607, 37.731651546856703 ], [ -122.426095455082049, 37.731670597839134 ], [ -122.425919712835267, 37.7318157721811 ], [ -122.425781691782262, 37.731929785903453 ], [ -122.425500227991904, 37.7320527573848 ], [ -122.42519868259302, 37.732129150959032 ], [ -122.425046994836066, 37.732129947854176 ], [ -122.424277944077048, 37.732133983506472 ], [ -122.423769382874056, 37.732162707171447 ], [ -122.423486414351174, 37.732261254158729 ], [ -122.423194763566187, 37.732223135593344 ], [ -122.422597636657429, 37.732308431174374 ], [ -122.421964308435761, 37.732433222436505 ], [ -122.421769540807844, 37.732442879558889 ], [ -122.421628644882077, 37.732486581446111 ], [ -122.421573075628018, 37.732579492315836 ], [ -122.421610219449562, 37.732670894611623 ], [ -122.421740792022078, 37.732743282983918 ], [ -122.421779146191113, 37.732885343728064 ], [ -122.42184863663951, 37.732986304256819 ], [ -122.42202732889227, 37.733140443779334 ], [ -122.422262570568407, 37.733475728240066 ], [ -122.42233700854446, 37.733668492264307 ], [ -122.422378321374794, 37.733842795338198 ], [ -122.42251406401526, 37.734049477037892 ], [ -122.422640968014662, 37.73418217013328 ], [ -122.422876476168085, 37.734369596551609 ], [ -122.422737437389159, 37.734490301194434 ], [ -122.422547222688962, 37.734619826084632 ], [ -122.422284286448345, 37.734779711262206 ], [ -122.422205425171413, 37.73485685013258 ], [ -122.422146910860818, 37.734962831393027 ], [ -122.422120806983799, 37.735152847768823 ], [ -122.42260172446116, 37.735176855221177 ], [ -122.422687909096169, 37.735204969342369 ], [ -122.424702562314437, 37.735369870957172 ], [ -122.424930534158477, 37.735266285585048 ], [ -122.427103368742522, 37.735457096504888 ], [ -122.427838803054428, 37.734693898279502 ], [ -122.428436980709748, 37.734950949626743 ], [ -122.428436951461066, 37.734950968784666 ], [ -122.42783624298761, 37.735347761815902 ], [ -122.427738169173168, 37.735412543347451 ], [ -122.42729729676671, 37.735729149898575 ], [ -122.426544994076067, 37.736269396547655 ], [ -122.426500890836181, 37.73630106743056 ], [ -122.425847678890904, 37.736860666965818 ], [ -122.425439441891498, 37.737210392933726 ], [ -122.425110714349969, 37.737550673136937 ], [ -122.424904804743889, 37.737763817504508 ], [ -122.424711669489241, 37.738076607801148 ], [ -122.424696469855888, 37.738101223886673 ], [ -122.424531564221411, 37.738368292265967 ], [ -122.424284283357963, 37.738949691036076 ], [ -122.424063599996956, 37.739784297520274 ], [ -122.424147154179678, 37.739869229183775 ], [ -122.424147154546787, 37.739869230001858 ], [ -122.42414746787631, 37.739869414698418 ], [ -122.424258152196032, 37.739934707389949 ], [ -122.42413709700044, 37.740335654620864 ], [ -122.42417135664968, 37.740713439585669 ], [ -122.424301394893192, 37.742119600447609 ], [ -122.424233478510288, 37.742235956906946 ], [ -122.424233472639315, 37.742235957277522 ], [ -122.424233272287097, 37.742236301993223 ], [ -122.424233277120777, 37.742236301639601 ], [ -122.424309369085989, 37.7430347552692 ], [ -122.424384862816794, 37.743838216035606 ], [ -122.424459208282684, 37.744635998834639 ], [ -122.424538964982034, 37.745435717069675 ], [ -122.424602793343411, 37.746241400149849 ], [ -122.424689793548367, 37.747033402901096 ], [ -122.424768280884535, 37.747830304166378 ], [ -122.424841979744244, 37.748600757493776 ], [ -122.424845018024243, 37.748632519532975 ], [ -122.424845024283727, 37.748632587554638 ], [ -122.424922999639648, 37.749434901505936 ], [ -122.424999224133984, 37.75023271753119 ], [ -122.424999224155329, 37.750232718354916 ], [ -122.425075700414453, 37.751033151258099 ], [ -122.425122809405835, 37.751528900123922 ], [ -122.4251525416649, 37.751841785070944 ], [ -122.425152541686245, 37.751841785894676 ], [ -122.425302616566313, 37.753431589741957 ], [ -122.425302616947704, 37.753431591109177 ], [ -122.425425666412067, 37.754703378159874 ], [ -122.425457179889037, 37.755029078716305 ], [ -122.425491892915787, 37.755387845874338 ], [ -122.425612216172169, 37.756631383038098 ], [ -122.425645855643012, 37.756979041458848 ], [ -122.42568945931761, 37.757429671011749 ], [ -122.425689459367419, 37.757429672933782 ], [ -122.425766807341631, 37.758226828700685 ], [ -122.425843422635126, 37.759029397589842 ], [ -122.425900090784694, 37.759619242549249 ], [ -122.425920302092379, 37.759829613405913 ], [ -122.425985721165645, 37.760498692937027 ], [ -122.426076501462219, 37.761427133668562 ], [ -122.426076501815189, 37.761427133937481 ], [ -122.426145984060597, 37.762160358437526 ], [ -122.426149283375466, 37.762227539381186 ], [ -122.426191463523168, 37.762538363286502 ], [ -122.426204067323269, 37.762631239367813 ], [ -122.426224290129298, 37.762962298008539 ], [ -122.426228478902843, 37.763030870557735 ], [ -122.426317477898522, 37.763970002371671 ], [ -122.426381708399177, 37.764645687871273 ], [ -122.426381708477521, 37.764645690891633 ], [ -122.426381062758907, 37.764645729188807 ], [ -122.426381062356072, 37.764645726997848 ], [ -122.424574375550648, 37.764754942537614 ], [ -122.424102683503691, 37.764783452170008 ], [ -122.423112421134832, 37.764843298770074 ], [ -122.42285341443899, 37.764858950163855 ], [ -122.421886445840627, 37.764917378530825 ], [ -122.421381475659516, 37.764947887797014 ], [ -122.421239593012103, 37.764956459387825 ], [ -122.420901270224292, 37.764976898858535 ], [ -122.420580607922048, 37.764996270018614 ], [ -122.420482492120144, 37.765002197009743 ], [ -122.419668972681833, 37.765051337054757 ], [ -122.418698425401715, 37.765109955145007 ], [ -122.418579138459435, 37.765117159398407 ], [ -122.41748659577631, 37.765183134636899 ], [ -122.416387522888556, 37.765249494040667 ], [ -122.415308388038014, 37.765314639624691 ], [ -122.413105243007919, 37.765447608576679 ], [ -122.412416426589019, 37.765489809283601 ], [ -122.411455262151748, 37.765547605227276 ], [ -122.410486689274492, 37.765605838622655 ], [ -122.408544242939584, 37.765722599679115 ], [ -122.407534229395537, 37.765783299286987 ], [ -122.407419737953433, 37.764487829924626 ], [ -122.406859230067056, 37.764521681123377 ], [ -122.406429154577822, 37.764547653499882 ], [ -122.406429152848446, 37.764547653527842 ], [ -122.406005237363416, 37.764573252226405 ], [ -122.405463420216606, 37.764605967981389 ], [ -122.405089603673972, 37.764628538361961 ], [ -122.405089602982216, 37.764628538373131 ], [ -122.405059622300016, 37.764310557738277 ], [ -122.405104592203571, 37.763852244172895 ], [ -122.405203088479681, 37.763478066930332 ], [ -122.405258413683796, 37.763323129887908 ], [ -122.40532469627189, 37.76313750682079 ], [ -122.405384490436404, 37.76297005284507 ], [ -122.405653838302513, 37.762432552128487 ], [ -122.405925510731336, 37.762011914887523 ], [ -122.406021608630979, 37.761863123291867 ], [ -122.406147061407296, 37.7616371808829 ], [ -122.4062826701159, 37.761392945250627 ], [ -122.406479479731502, 37.760730932047331 ], [ -122.406492697683589, 37.760686469836571 ], [ -122.406492391998796, 37.760255279712112 ], [ -122.406389357641601, 37.759804405761585 ], [ -122.406261953936678, 37.75945211819198 ], [ -122.406247868764623, 37.759429354319998 ], [ -122.406103779268008, 37.759196479511928 ], [ -122.405903135660481, 37.758934413706449 ], [ -122.405545221503274, 37.758536929330724 ], [ -122.405048169961901, 37.758189448369819 ], [ -122.404835145723425, 37.7580339263735 ], [ -122.40472107938929, 37.757950649275713 ], [ -122.404441730762329, 37.757748221369937 ], [ -122.404168659910013, 37.75752977302043 ], [ -122.403774405770974, 37.757138490742172 ], [ -122.403774084903432, 37.757138026202746 ], [ -122.403689260967766, 37.757015002579273 ], [ -122.403543859417937, 37.75680412126377 ], [ -122.403395700993769, 37.756471262485057 ], [ -122.403305530792395, 37.756165877853867 ], [ -122.403245024221292, 37.755760575231484 ], [ -122.403244936870763, 37.755759623462495 ], [ -122.403127143734139, 37.75447773377249 ], [ -122.403011715723153, 37.753221541143297 ], [ -122.40301031565609, 37.753201877425177 ], [ -122.402978169178084, 37.75275045704997 ], [ -122.403006670294943, 37.752445905732571 ], [ -122.403060331379024, 37.751915861053995 ], [ -122.403072643662085, 37.751794247946641 ], [ -122.403175027775376, 37.751281093014263 ], [ -122.403214572776321, 37.751164169122518 ], [ -122.403378511001179, 37.750679445903444 ], [ -122.403514246938869, 37.750281563827826 ], [ -122.403735650894049, 37.749583872707518 ], [ -122.403783562755194, 37.749432891426196 ], [ -122.403826366530197, 37.749298003881435 ], [ -122.403865672790147, 37.749174139069758 ], [ -122.403990987296382, 37.74878066971192 ], [ -122.404051662308461, 37.74859015799958 ], [ -122.404103617259366, 37.748427025595028 ], [ -122.404104297626958, 37.748424888760844 ], [ -122.404105247604519, 37.748421906188959 ], [ -122.404249303912664, 37.747969580021021 ], [ -122.404390053649081, 37.747536214374357 ], [ -122.404496510435962, 37.747208430674682 ], [ -122.40472494664624, 37.746505061967419 ], [ -122.40491012189095, 37.745826558312224 ], [ -122.405051159825348, 37.745369647465395 ], [ -122.405179630488661, 37.744981134097749 ], [ -122.405202201087945, 37.744938889063008 ], [ -122.405444172050537, 37.744486004341084 ], [ -122.405475695814175, 37.744427001636382 ], [ -122.405747110957691, 37.744028598841339 ], [ -122.405778655290121, 37.743989539741165 ], [ -122.406047831839984, 37.743656241756561 ], [ -122.406149889909912, 37.743534947555823 ], [ -122.406881612449212, 37.742665295031905 ], [ -122.407179681106143, 37.742274728523746 ], [ -122.407209491524853, 37.742235666028684 ], [ -122.407448073794797, 37.741860521932459 ], [ -122.407625696256517, 37.741528038897464 ], [ -122.407757062965644, 37.741253133394146 ], [ -122.407846654253319, 37.741024367104636 ], [ -122.407964646391505, 37.740662552272049 ], [ -122.408049229318891, 37.740339110042903 ], [ -122.408114071971212, 37.739818086787388 ], [ -122.408137030577961, 37.739635775942595 ], [ -122.407910235902733, 37.739622169745928 ], [ -122.407891817991583, 37.739621065115479 ], [ -122.407641980575562, 37.73960607595005 ], [ -122.406978585498265, 37.739566272603653 ], [ -122.40691098434678, 37.739429695993088 ], [ -122.406917382338506, 37.739360326809205 ], [ -122.406923419099328, 37.739294876190314 ], [ -122.40692734433064, 37.739234393770168 ], [ -122.406930338448149, 37.739188255204461 ], [ -122.406936851773693, 37.739087891690275 ], [ -122.406939830707117, 37.738876165961258 ], [ -122.406945393527934, 37.738693880058896 ], [ -122.40693392611557, 37.738601770051126 ], [ -122.406915744052654, 37.738455725148341 ], [ -122.406895428755547, 37.738323651840822 ], [ -122.406867742024218, 37.738143654094841 ], [ -122.406900092501772, 37.738009155282221 ], [ -122.406910504104971, 37.737965866913434 ], [ -122.406734307244236, 37.736552960385914 ], [ -122.40670383539134, 37.73630860402433 ], [ -122.406618861734884, 37.735896873766244 ], [ -122.406454646881144, 37.735510813404687 ], [ -122.406382307240833, 37.735418606514493 ], [ -122.406294659725731, 37.735306888886043 ], [ -122.406543556705884, 37.735230631177984 ], [ -122.406646483954859, 37.73519837501037 ], [ -122.406814899797354, 37.735145595835078 ], [ -122.406847917074074, 37.735135248636119 ], [ -122.407130003639637, 37.735046845926902 ], [ -122.407348459866085, 37.73497838329498 ], [ -122.408033938982058, 37.734745520041734 ], [ -122.408486051038935, 37.734591930477059 ], [ -122.409312695053686, 37.734284112011252 ], [ -122.410241243396115, 37.733882628159428 ], [ -122.41165477705286, 37.733366974354652 ], [ -122.413331412339687, 37.732631849917702 ], [ -122.413420514856341, 37.732598164337901 ], [ -122.414376034430035, 37.732236918329072 ], [ -122.414530950551168, 37.732192436697261 ], [ -122.415052879313009, 37.73204257200301 ], [ -122.415897414400035, 37.731880953714693 ], [ -122.416651654342999, 37.731819145397338 ], [ -122.417401517276474, 37.731856484581833 ], [ -122.41846272371707, 37.73186673188021 ], [ -122.419454332152029, 37.731867094633678 ], [ -122.420326686201122, 37.731814347002349 ], [ -122.421718952826723, 37.731607777327895 ], [ -122.4217053213399, 37.731806501069016 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":17,"ZIP_CODE":94134,"ID":94134},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.423335646405121, 37.727792365353856 ], [ -122.423335646419318, 37.727792365903014 ], [ -122.423508669179441, 37.728206721890601 ], [ -122.423584360438809, 37.728387748823138 ], [ -122.423739981620528, 37.728759936840348 ], [ -122.423740585686062, 37.728759904726353 ], [ -122.424198685585807, 37.728735553475715 ], [ -122.424688687008342, 37.728709478304708 ], [ -122.425289939392513, 37.728677480232541 ], [ -122.425963703408243, 37.728641021813154 ], [ -122.426024704407865, 37.729396982427588 ], [ -122.423797638913399, 37.729509407965139 ], [ -122.422942671063694, 37.729241733452504 ], [ -122.422503353186897, 37.729261991833724 ], [ -122.421440856780521, 37.729310979302717 ], [ -122.421182810911759, 37.729745420447983 ], [ -122.421083540431724, 37.729975107309578 ], [ -122.421017374424935, 37.730233164434182 ], [ -122.420964111358728, 37.730677319690216 ], [ -122.420944905836123, 37.73130857523288 ], [ -122.421753180203225, 37.731084669073972 ], [ -122.421730502033157, 37.73135209792499 ], [ -122.421736572397847, 37.731350897661805 ], [ -122.421730663628679, 37.731437047083624 ], [ -122.421718952826723, 37.731607777327895 ], [ -122.420326686201122, 37.731814347002349 ], [ -122.419454332152029, 37.731867094633678 ], [ -122.41846272371707, 37.73186673188021 ], [ -122.417401517276474, 37.731856484581833 ], [ -122.416651654342999, 37.731819145397338 ], [ -122.415897414400035, 37.731880953714693 ], [ -122.415052879313009, 37.73204257200301 ], [ -122.414530950551168, 37.732192436697261 ], [ -122.414376034430035, 37.732236918329072 ], [ -122.413420514856341, 37.732598164337901 ], [ -122.413331412339687, 37.732631849917702 ], [ -122.41165477705286, 37.733366974354652 ], [ -122.410241243396115, 37.733882628159428 ], [ -122.409312695053686, 37.734284112011252 ], [ -122.408486051038935, 37.734591930477059 ], [ -122.408033938982058, 37.734745520041734 ], [ -122.407348459866085, 37.73497838329498 ], [ -122.407130003639637, 37.735046845926902 ], [ -122.406847917074074, 37.735135248636119 ], [ -122.406814899797354, 37.735145595835078 ], [ -122.406646483954859, 37.73519837501037 ], [ -122.406543556705884, 37.735230631177984 ], [ -122.406294659725731, 37.735306888886043 ], [ -122.405494571184249, 37.734287050530888 ], [ -122.405096042524178, 37.733716127227488 ], [ -122.405059585407599, 37.733652395233406 ], [ -122.404878800551302, 37.733336356125804 ], [ -122.404657097641305, 37.732948782960683 ], [ -122.40465709692171, 37.732948781873532 ], [ -122.40405482060109, 37.731789516245591 ], [ -122.403961731325225, 37.731610333558521 ], [ -122.403400462440644, 37.730658352585962 ], [ -122.403021622188092, 37.729901901370539 ], [ -122.402752244737584, 37.729357163240891 ], [ -122.402209197740476, 37.728101973566574 ], [ -122.402105120777605, 37.727789703519925 ], [ -122.402039596395539, 37.727554690472438 ], [ -122.401875118236148, 37.726964759399728 ], [ -122.401822425920514, 37.726775260854211 ], [ -122.401474642450822, 37.725528485745301 ], [ -122.401471218295981, 37.725516183407578 ], [ -122.401182917574161, 37.724588254281116 ], [ -122.40078474798517, 37.723616209514844 ], [ -122.400784747286778, 37.723616209251418 ], [ -122.400661931084002, 37.723316373994798 ], [ -122.40038213245046, 37.722633285332655 ], [ -122.399925016822507, 37.721517272170509 ], [ -122.399830553211288, 37.721427080386505 ], [ -122.399600300155441, 37.720920363637823 ], [ -122.399419264352986, 37.720532021245042 ], [ -122.399309038031902, 37.720278334103305 ], [ -122.399208340593788, 37.719991530079234 ], [ -122.399125486878972, 37.719730004239857 ], [ -122.399066465573654, 37.719469200866385 ], [ -122.398943601880902, 37.718926286066001 ], [ -122.398942440206895, 37.718921151552976 ], [ -122.398923285260594, 37.718836507697276 ], [ -122.398913161799925, 37.718792447247658 ], [ -122.398799134608808, 37.718275024173522 ], [ -122.398787867001658, 37.718224410399863 ], [ -122.398759937061044, 37.718047446028777 ], [ -122.39871606167118, 37.717769450850419 ], [ -122.398686680058731, 37.717603871431201 ], [ -122.398668885707423, 37.717503589023465 ], [ -122.398561414050022, 37.716897923924947 ], [ -122.398499278161879, 37.716543657492224 ], [ -122.398550700112352, 37.7161815389411 ], [ -122.398565370170317, 37.716139616445538 ], [ -122.398643015232707, 37.715917722950913 ], [ -122.398656056102226, 37.71588045500463 ], [ -122.398735527529269, 37.715727131371494 ], [ -122.398839335741798, 37.715526852955328 ], [ -122.398953101659146, 37.715385829745912 ], [ -122.398991043085772, 37.715338797679301 ], [ -122.398991048786399, 37.715338790720075 ], [ -122.398990733617495, 37.715338865847912 ], [ -122.398990734294756, 37.715338865287599 ], [ -122.398552555430172, 37.715443409305585 ], [ -122.398471400839512, 37.715455433381891 ], [ -122.398259710629063, 37.715141974251068 ], [ -122.397834560573045, 37.714650610374164 ], [ -122.396885665233555, 37.713468431896139 ], [ -122.396615774145118, 37.713094103716635 ], [ -122.396615767431044, 37.713094016747043 ], [ -122.396209567629995, 37.712429108802013 ], [ -122.395984840101519, 37.711902635542479 ], [ -122.395804130724926, 37.711357784012904 ], [ -122.395699524288574, 37.710911289111898 ], [ -122.394789228222862, 37.711029491236808 ], [ -122.394533636579439, 37.711181739957787 ], [ -122.394415018271332, 37.711243467479711 ], [ -122.394301164504668, 37.711283892996612 ], [ -122.394130547970391, 37.711308547209811 ], [ -122.393916838957196, 37.711294747317396 ], [ -122.392609027560681, 37.711272141276474 ], [ -122.390835880106437, 37.711169771421694 ], [ -122.390887824662656, 37.71036523380814 ], [ -122.391332097355985, 37.710140738310088 ], [ -122.392656793824756, 37.709119608424643 ], [ -122.392432645117751, 37.708928100915109 ], [ -122.392444333503988, 37.708923483961478 ], [ -122.392459711870288, 37.708916369816677 ], [ -122.392473335584143, 37.708908253489831 ], [ -122.392486941819897, 37.70889945070968 ], [ -122.392498784665378, 37.708889302522401 ], [ -122.392510610730511, 37.708878468145663 ], [ -122.392524068414929, 37.708863830521395 ], [ -122.392559440339639, 37.708827208691588 ], [ -122.392572967908777, 37.708815316868559 ], [ -122.392584776482323, 37.708803796307102 ], [ -122.392598312774226, 37.708792247432399 ], [ -122.392611857807054, 37.708781042056593 ], [ -122.392623674754688, 37.708769864447994 ], [ -122.39263895660568, 37.708758974800666 ], [ -122.392652510357621, 37.708748112371396 ], [ -122.392666072850986, 37.708737593441008 ], [ -122.39268137181341, 37.708727389970818 ], [ -122.39269494304439, 37.708717214537501 ], [ -122.392710242682909, 37.70870701077785 ], [ -122.392756192651433, 37.708678459962563 ], [ -122.392771518490107, 37.708669285872482 ], [ -122.392791975788157, 37.708657969391702 ], [ -122.392832794235133, 37.708631560935011 ], [ -122.392860041474023, 37.708615328192714 ], [ -122.392875393166236, 37.708607184046727 ], [ -122.392889025524426, 37.708599411171832 ], [ -122.392904394682077, 37.708591953199182 ], [ -122.392918035766968, 37.708584523272208 ], [ -122.392941949172211, 37.708573151218971 ], [ -122.392977635730745, 37.708548885387124 ], [ -122.393011585450822, 37.708524304093004 ], [ -122.393045517668241, 37.708499036337294 ], [ -122.393079441122353, 37.708473425345893 ], [ -122.393113355819651, 37.708447471393349 ], [ -122.393167526617077, 37.70840230614084 ], [ -122.393582832216993, 37.708417948939243 ], [ -122.395113504570858, 37.708409867431477 ], [ -122.397085902715403, 37.708399425270557 ], [ -122.399684603917876, 37.708385616773455 ], [ -122.401309241246423, 37.708378554199705 ], [ -122.402497775210733, 37.708373373547339 ], [ -122.40338621311453, 37.708369492971435 ], [ -122.40510200377139, 37.708361979821355 ], [ -122.405343853958243, 37.708354977289922 ], [ -122.405521792033781, 37.708350038400255 ], [ -122.406475878190662, 37.708342152666113 ], [ -122.406591468680915, 37.708342377473876 ], [ -122.407290175418893, 37.708343733713313 ], [ -122.407753446712761, 37.708342067925997 ], [ -122.408110927534096, 37.708327349450251 ], [ -122.40829882656611, 37.708327401816014 ], [ -122.412359860013211, 37.708328460170456 ], [ -122.413340535135291, 37.70832869518982 ], [ -122.413594573052677, 37.708328955439633 ], [ -122.414219950784457, 37.708329593757632 ], [ -122.414374376554221, 37.708329750560253 ], [ -122.415233045955674, 37.708329360822155 ], [ -122.415330384121233, 37.708329316229424 ], [ -122.416223848405949, 37.708328179819176 ], [ -122.417093688537392, 37.708327067084589 ], [ -122.417207468396128, 37.708327057129232 ], [ -122.418047976840626, 37.708326981775464 ], [ -122.418165047871298, 37.708327396090446 ], [ -122.419017914810595, 37.708330411075799 ], [ -122.419120269682026, 37.708330983731479 ], [ -122.419237502940533, 37.708331640189144 ], [ -122.419704274317439, 37.708331586927457 ], [ -122.420073510611971, 37.708332523899031 ], [ -122.420159361284988, 37.708332741426119 ], [ -122.423764571500399, 37.708341826236627 ], [ -122.423361076063088, 37.709234055437079 ], [ -122.423353359735231, 37.709250935907697 ], [ -122.423353331596459, 37.709250997624174 ], [ -122.423820286343911, 37.709573973454503 ], [ -122.423971204711407, 37.709678357430306 ], [ -122.424550951226621, 37.710101873835256 ], [ -122.425118753539664, 37.710464462528329 ], [ -122.425572654326643, 37.710701178146003 ], [ -122.426490332391396, 37.711021642816618 ], [ -122.426849963523566, 37.711156197850272 ], [ -122.425769401653085, 37.714425227128565 ], [ -122.427973857260341, 37.715161057331514 ], [ -122.427571950566247, 37.71699744604517 ], [ -122.426961271013212, 37.717805116783104 ], [ -122.426390269927637, 37.718560725227924 ], [ -122.426390269596226, 37.718560725782737 ], [ -122.426390032692737, 37.718560604670934 ], [ -122.425834816801412, 37.718279388717512 ], [ -122.425605873732934, 37.718131895102509 ], [ -122.425411706342686, 37.717880972693159 ], [ -122.425177444570053, 37.717485960998928 ], [ -122.424942097378548, 37.717261064626705 ], [ -122.424687869969304, 37.717146210464122 ], [ -122.424656181661859, 37.717131894726805 ], [ -122.424528018591516, 37.717064916531086 ], [ -122.424258262597263, 37.717024059120966 ], [ -122.424022457403083, 37.717036533105109 ], [ -122.423774201550728, 37.717092319144726 ], [ -122.423530052223612, 37.717201923868423 ], [ -122.422472988486305, 37.717887379027822 ], [ -122.422642040011837, 37.718030648532753 ], [ -122.422885734123284, 37.71809195842259 ], [ -122.423023908872437, 37.718162895921928 ], [ -122.423452239422744, 37.718705588384864 ], [ -122.423536512782078, 37.718956983348477 ], [ -122.42348866361003, 37.719439263071187 ], [ -122.423554916906838, 37.719668150420404 ], [ -122.423736904433326, 37.71982328246721 ], [ -122.424032169669715, 37.719926258473294 ], [ -122.424800888544937, 37.7200238938456 ], [ -122.425478982693178, 37.720232473267444 ], [ -122.425478983024618, 37.720232472712645 ], [ -122.425479352540037, 37.720232586714161 ], [ -122.425479352547157, 37.72023258698875 ], [ -122.425664999767108, 37.720321846926637 ], [ -122.426022740865662, 37.720493848462766 ], [ -122.42602274262245, 37.720493849532829 ], [ -122.426022741606815, 37.720493850373522 ], [ -122.424918832446721, 37.722087021186233 ], [ -122.424897104558099, 37.722118378784295 ], [ -122.423806549912683, 37.723691155552039 ], [ -122.423577946908821, 37.723750386689403 ], [ -122.423577951775229, 37.723750454459399 ], [ -122.422830067678831, 37.723944194056337 ], [ -122.421846961042462, 37.724198859168652 ], [ -122.421846961049567, 37.724198859443213 ], [ -122.422043387171286, 37.724673029193113 ], [ -122.422342507091699, 37.725395088531037 ], [ -122.422342507113001, 37.725395089354791 ], [ -122.422840471972961, 37.726597115803735 ], [ -122.422840471987186, 37.726597116352892 ], [ -122.42312222730105, 37.727277221300007 ], [ -122.423246600371399, 37.727577430218268 ], [ -122.423335646405121, 37.727792365353856 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":18,"ZIP_CODE":94112,"ID":94112},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.427838803054428, 37.734693898279502 ], [ -122.427103368742522, 37.735457096504888 ], [ -122.424930534158477, 37.735266285585048 ], [ -122.424702562314437, 37.735369870957172 ], [ -122.422687909096169, 37.735204969342369 ], [ -122.42260172446116, 37.735176855221177 ], [ -122.422120806983799, 37.735152847768823 ], [ -122.422146910860818, 37.734962831393027 ], [ -122.422205425171413, 37.73485685013258 ], [ -122.422284286448345, 37.734779711262206 ], [ -122.422547222688962, 37.734619826084632 ], [ -122.422737437389159, 37.734490301194434 ], [ -122.422876476168085, 37.734369596551609 ], [ -122.422640968014662, 37.73418217013328 ], [ -122.42251406401526, 37.734049477037892 ], [ -122.422378321374794, 37.733842795338198 ], [ -122.42233700854446, 37.733668492264307 ], [ -122.422262570568407, 37.733475728240066 ], [ -122.42202732889227, 37.733140443779334 ], [ -122.42184863663951, 37.732986304256819 ], [ -122.421779146191113, 37.732885343728064 ], [ -122.421740792022078, 37.732743282983918 ], [ -122.421610219449562, 37.732670894611623 ], [ -122.421573075628018, 37.732579492315836 ], [ -122.421628644882077, 37.732486581446111 ], [ -122.421769540807844, 37.732442879558889 ], [ -122.421964308435761, 37.732433222436505 ], [ -122.422597636657429, 37.732308431174374 ], [ -122.423194763566187, 37.732223135593344 ], [ -122.423486414351174, 37.732261254158729 ], [ -122.423769382874056, 37.732162707171447 ], [ -122.424277944077048, 37.732133983506472 ], [ -122.425046994836066, 37.732129947854176 ], [ -122.42519868259302, 37.732129150959032 ], [ -122.425500227991904, 37.7320527573848 ], [ -122.425781691782262, 37.731929785903453 ], [ -122.425919712835267, 37.7318157721811 ], [ -122.426095455082049, 37.731670597839134 ], [ -122.426103813784607, 37.731651546856703 ], [ -122.425563267495079, 37.731578779884757 ], [ -122.424987445865384, 37.731559842008934 ], [ -122.424645313557747, 37.731548588455745 ], [ -122.424553925961277, 37.731549131439351 ], [ -122.423920024119482, 37.731552895324626 ], [ -122.422820482616018, 37.731641033131751 ], [ -122.4217053213399, 37.731806501069016 ], [ -122.421718952826723, 37.731607777327895 ], [ -122.421730663628679, 37.731437047083624 ], [ -122.421736572397847, 37.731350897661805 ], [ -122.421730502033157, 37.73135209792499 ], [ -122.421753180203225, 37.731084669073972 ], [ -122.420944905836123, 37.73130857523288 ], [ -122.420964111358728, 37.730677319690216 ], [ -122.421017374424935, 37.730233164434182 ], [ -122.421083540431724, 37.729975107309578 ], [ -122.421182810911759, 37.729745420447983 ], [ -122.421440856780521, 37.729310979302717 ], [ -122.422503353186897, 37.729261991833724 ], [ -122.422942671063694, 37.729241733452504 ], [ -122.423797638913399, 37.729509407965139 ], [ -122.426024704407865, 37.729396982427588 ], [ -122.425963703408243, 37.728641021813154 ], [ -122.425289939392513, 37.728677480232541 ], [ -122.424688687008342, 37.728709478304708 ], [ -122.424198685585807, 37.728735553475715 ], [ -122.423740585686062, 37.728759904726353 ], [ -122.423739981620528, 37.728759936840348 ], [ -122.423584360438809, 37.728387748823138 ], [ -122.423508669179441, 37.728206721890601 ], [ -122.423335646405121, 37.727792365353856 ], [ -122.423246600371399, 37.727577430218268 ], [ -122.42312222730105, 37.727277221300007 ], [ -122.422840471987186, 37.726597116352892 ], [ -122.422840471972961, 37.726597115803735 ], [ -122.422342507113001, 37.725395089354791 ], [ -122.422342507091699, 37.725395088531037 ], [ -122.422043387171286, 37.724673029193113 ], [ -122.421846961042462, 37.724198859168652 ], [ -122.422830067678831, 37.723944194056337 ], [ -122.423577951775229, 37.723750454459399 ], [ -122.423577946908821, 37.723750386689403 ], [ -122.423806549912683, 37.723691155552039 ], [ -122.424897104558099, 37.722118378784295 ], [ -122.424918832446721, 37.722087021186233 ], [ -122.426022741606815, 37.720493850373522 ], [ -122.42602274262245, 37.720493849532829 ], [ -122.426022740865662, 37.720493848462766 ], [ -122.425664999767108, 37.720321846926637 ], [ -122.425479352547157, 37.72023258698875 ], [ -122.425478983024618, 37.720232472712645 ], [ -122.425478982693178, 37.720232473267444 ], [ -122.424800888544937, 37.7200238938456 ], [ -122.424032169669715, 37.719926258473294 ], [ -122.423736904433326, 37.71982328246721 ], [ -122.423554916906838, 37.719668150420404 ], [ -122.42348866361003, 37.719439263071187 ], [ -122.423536512782078, 37.718956983348477 ], [ -122.423452239422744, 37.718705588384864 ], [ -122.423023908872437, 37.718162895921928 ], [ -122.422885734123284, 37.71809195842259 ], [ -122.422642040011837, 37.718030648532753 ], [ -122.422472988486305, 37.717887379027822 ], [ -122.423530052223612, 37.717201923868423 ], [ -122.423774201550728, 37.717092319144726 ], [ -122.424022457403083, 37.717036533105109 ], [ -122.424258262597263, 37.717024059120966 ], [ -122.424528018591516, 37.717064916531086 ], [ -122.424656181661859, 37.717131894726805 ], [ -122.424687869969304, 37.717146210464122 ], [ -122.424942097378548, 37.717261064626705 ], [ -122.425177444570053, 37.717485960998928 ], [ -122.425411706342686, 37.717880972693159 ], [ -122.425605873732934, 37.718131895102509 ], [ -122.425834816801412, 37.718279388717512 ], [ -122.426390032692737, 37.718560604670934 ], [ -122.426390269596226, 37.718560725782737 ], [ -122.426390269927637, 37.718560725227924 ], [ -122.426961271013212, 37.717805116783104 ], [ -122.42757190808544, 37.716997501404578 ], [ -122.427571950566247, 37.71699744604517 ], [ -122.427580759648123, 37.716957196731435 ], [ -122.427810303733594, 37.715908376197518 ], [ -122.427973857260341, 37.715161057331514 ], [ -122.425769401653085, 37.714425227128565 ], [ -122.42684686757103, 37.711165565601846 ], [ -122.426849963523566, 37.711156197850272 ], [ -122.426490332391396, 37.711021642816618 ], [ -122.425572654326643, 37.710701178146003 ], [ -122.425118753539664, 37.710464462528329 ], [ -122.424550951226621, 37.710101873835256 ], [ -122.423971204711407, 37.709678357430306 ], [ -122.423353331596459, 37.709250997624174 ], [ -122.423361076063088, 37.709234055437079 ], [ -122.423764571500399, 37.708341826236627 ], [ -122.423768921768058, 37.708341837314315 ], [ -122.423877843148816, 37.708342118381125 ], [ -122.425994336403065, 37.708310781158126 ], [ -122.426202061368684, 37.708307703589938 ], [ -122.427674537396697, 37.708285876646727 ], [ -122.428354189600114, 37.708305089572242 ], [ -122.429105296742478, 37.708326317449469 ], [ -122.429339593931815, 37.708323251263963 ], [ -122.430449087529411, 37.70830872506928 ], [ -122.43129493119001, 37.708297643647327 ], [ -122.432343143904646, 37.708295922670345 ], [ -122.433778966251097, 37.708293550010708 ], [ -122.434148404329434, 37.708292936416406 ], [ -122.434985771421609, 37.708291542195809 ], [ -122.436248762964979, 37.708289427645774 ], [ -122.438728105043637, 37.708285237562031 ], [ -122.440497203989452, 37.708282215784038 ], [ -122.440711209177138, 37.708281848403743 ], [ -122.441349676712647, 37.708280750220105 ], [ -122.442106190726975, 37.708279444504022 ], [ -122.444671046569766, 37.708274980891133 ], [ -122.44478757213254, 37.708274776994109 ], [ -122.445691081512706, 37.708249897066402 ], [ -122.445824359823575, 37.708249470051783 ], [ -122.447227656612327, 37.708244965564717 ], [ -122.449798855530389, 37.708236668750466 ], [ -122.452354883587788, 37.708228365382816 ], [ -122.454322408844959, 37.70822193637261 ], [ -122.454560786889971, 37.708221155056798 ], [ -122.455565069973886, 37.708215472275576 ], [ -122.455732056485743, 37.708217630626116 ], [ -122.455902300127136, 37.708219830519191 ], [ -122.457184544230842, 37.70823461994447 ], [ -122.457915234279184, 37.708243041121499 ], [ -122.458505268317239, 37.708230883488149 ], [ -122.459062187698038, 37.708219405843458 ], [ -122.459727762092839, 37.708205685584353 ], [ -122.459848666151245, 37.708200651285779 ], [ -122.460029970068362, 37.708193102258491 ], [ -122.46108479110967, 37.708202670088042 ], [ -122.461227604731107, 37.708198848520283 ], [ -122.46139057300131, 37.708194487863473 ], [ -122.461950847900269, 37.70819992107895 ], [ -122.462093547900324, 37.708193760482068 ], [ -122.462235775065267, 37.708187619950934 ], [ -122.462590335310921, 37.70818746608122 ], [ -122.462764782467445, 37.70818738953367 ], [ -122.463939046778805, 37.708202838503169 ], [ -122.464345228799317, 37.708207403972743 ], [ -122.464812351274205, 37.708212652628795 ], [ -122.465768040492705, 37.708210264664245 ], [ -122.466623471256085, 37.708208120693818 ], [ -122.468612008025019, 37.708203113190002 ], [ -122.468634481973396, 37.708203081190824 ], [ -122.468943918748693, 37.708202372165289 ], [ -122.468469108419114, 37.708682445380624 ], [ -122.468442186669975, 37.708710365091008 ], [ -122.46815544621434, 37.708936581998181 ], [ -122.467717389066479, 37.709282172736899 ], [ -122.467202952111606, 37.709607827013201 ], [ -122.467161376112116, 37.709634146029515 ], [ -122.466791287837083, 37.709825747176509 ], [ -122.465994326901708, 37.710153924678359 ], [ -122.464766855714529, 37.710481381431755 ], [ -122.464363457907425, 37.710527001097098 ], [ -122.464175624997623, 37.710548242222522 ], [ -122.462893196389857, 37.710562754126848 ], [ -122.462561257753663, 37.710567393100142 ], [ -122.462558461843784, 37.710567432270715 ], [ -122.462554670587338, 37.71117015272295 ], [ -122.462545712573657, 37.711171028559598 ], [ -122.462063256954337, 37.711372729296876 ], [ -122.462570051320355, 37.711370301468136 ], [ -122.462581299448402, 37.712273520359908 ], [ -122.462580658473911, 37.712523033743715 ], [ -122.46256899895387, 37.713150165038506 ], [ -122.462554985317752, 37.713903926321834 ], [ -122.462588724439357, 37.714029538822885 ], [ -122.462602039439204, 37.714307653173123 ], [ -122.462607827629938, 37.714883950429027 ], [ -122.462615213395566, 37.71561930379395 ], [ -122.462620481465109, 37.716143794339722 ], [ -122.46262477066405, 37.716570820282072 ], [ -122.462633312624419, 37.717421207682776 ], [ -122.462638771382373, 37.717866433871905 ], [ -122.462639625007327, 37.717936035524978 ], [ -122.46263854285489, 37.718211149542661 ], [ -122.462244936309219, 37.718219524954932 ], [ -122.462245294921956, 37.718767790464547 ], [ -122.46226246554707, 37.719928593578096 ], [ -122.462254399326852, 37.72000857322422 ], [ -122.462264896007014, 37.721694985883083 ], [ -122.46226548731488, 37.721827794893429 ], [ -122.462270801151405, 37.723021081969392 ], [ -122.462273544585969, 37.723637216450626 ], [ -122.462276364972297, 37.724270607125867 ], [ -122.462276854232826, 37.724380477322995 ], [ -122.462279017236384, 37.724866230039204 ], [ -122.462279803400207, 37.725042766873585 ], [ -122.462280269039496, 37.725147301470763 ], [ -122.462212628293415, 37.725265491161082 ], [ -122.462561310804759, 37.725391067720956 ], [ -122.462815474472038, 37.725482412532848 ], [ -122.462686726995429, 37.725774916753664 ], [ -122.46262180837526, 37.726335258944708 ], [ -122.462565711889994, 37.726822959746293 ], [ -122.462545638153259, 37.726997475605309 ], [ -122.462546035395761, 37.727106268284892 ], [ -122.462547067236983, 37.727225353979733 ], [ -122.462615761322709, 37.727529244060726 ], [ -122.462714226912738, 37.727738412010282 ], [ -122.462888304160828, 37.72805552868347 ], [ -122.46288814852555, 37.72805550243347 ], [ -122.462888197868679, 37.72805558978888 ], [ -122.462703368909061, 37.728024299159358 ], [ -122.462378284725844, 37.728011300874932 ], [ -122.462089038987699, 37.728047063364642 ], [ -122.461824751209633, 37.728118912555594 ], [ -122.46142222273329, 37.728330263725837 ], [ -122.460815856121073, 37.72868098095028 ], [ -122.461139723962631, 37.728765209783546 ], [ -122.461378769207158, 37.728787306916686 ], [ -122.461378549868385, 37.728787330621202 ], [ -122.461139150327014, 37.728765372338408 ], [ -122.460815517748841, 37.728680936862041 ], [ -122.460412720770037, 37.728739179843977 ], [ -122.460002483633559, 37.728739437629635 ], [ -122.460023966205156, 37.729195728883113 ], [ -122.459983752683073, 37.729522472170189 ], [ -122.459930163903692, 37.729706628889033 ], [ -122.459878403068345, 37.729884503080157 ], [ -122.459783802497654, 37.730109540441724 ], [ -122.459563710785162, 37.730368588301999 ], [ -122.459352156941819, 37.730515761910091 ], [ -122.459193144317396, 37.730602954490251 ], [ -122.458688935885434, 37.730751520241796 ], [ -122.458472470688633, 37.730752827866375 ], [ -122.458222500186622, 37.73077738189027 ], [ -122.457474238952088, 37.730997495241198 ], [ -122.456607498028021, 37.731187733113579 ], [ -122.455762555159509, 37.731348802743547 ], [ -122.454915878760758, 37.731464997636976 ], [ -122.453590911574565, 37.731488405776453 ], [ -122.453411343594681, 37.731530646828205 ], [ -122.451146666771351, 37.731536846888879 ], [ -122.448866265260094, 37.731542959168735 ], [ -122.447291821211039, 37.731547153756608 ], [ -122.446578400413941, 37.7315490470612 ], [ -122.444288854528963, 37.731568915105107 ], [ -122.444294941941365, 37.731069863889161 ], [ -122.444298409699798, 37.730708221303239 ], [ -122.444291303797655, 37.729896860703782 ], [ -122.444284269547836, 37.729093639959018 ], [ -122.44427751391413, 37.728322242080615 ], [ -122.444276984301908, 37.728261755504967 ], [ -122.444131311025359, 37.72831838217401 ], [ -122.443973112888827, 37.728379877183251 ], [ -122.442954953118544, 37.728915555981267 ], [ -122.442595296877187, 37.729101680603421 ], [ -122.442082956691792, 37.729308363921405 ], [ -122.442006614261629, 37.729375267903364 ], [ -122.442010214558891, 37.729910949382834 ], [ -122.440664990612632, 37.729919329476168 ], [ -122.43969146797258, 37.730323477880063 ], [ -122.439686065703896, 37.730325720705899 ], [ -122.438692929843569, 37.730737998359416 ], [ -122.437166749161392, 37.731365897534992 ], [ -122.436835967120587, 37.731467212874229 ], [ -122.436678949019353, 37.731538395224071 ], [ -122.436668162612392, 37.731543298105045 ], [ -122.435457687984979, 37.732093484109448 ], [ -122.434992781477959, 37.732295287547394 ], [ -122.434989951388332, 37.732296516038524 ], [ -122.434823956379304, 37.732249430441868 ], [ -122.434644432402948, 37.732322139093768 ], [ -122.434512093568429, 37.732323526771246 ], [ -122.434440716858973, 37.732534804028113 ], [ -122.432720773871381, 37.733187185661393 ], [ -122.432572047381726, 37.733243596430682 ], [ -122.43132522808267, 37.733716495194997 ], [ -122.430931197463138, 37.733865940717834 ], [ -122.430928172484656, 37.733867087971888 ], [ -122.430400796753801, 37.734118700718604 ], [ -122.429799382942633, 37.734405632509876 ], [ -122.429797927680781, 37.734406452684077 ], [ -122.429606994304805, 37.734482866043706 ], [ -122.429365174143101, 37.734579643964238 ], [ -122.428766264762999, 37.73481932892178 ], [ -122.42843713263963, 37.734951046304573 ], [ -122.428436951461066, 37.734950968784666 ], [ -122.428436980709748, 37.734950949626743 ], [ -122.427838803054428, 37.734693898279502 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":19,"ZIP_CODE":94116,"ID":94116},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.491334899611488, 37.737293023539365 ], [ -122.491211452414888, 37.737221069184358 ], [ -122.491162508402653, 37.737157782139001 ], [ -122.490686267381363, 37.736541968564268 ], [ -122.490552748713441, 37.736251597078756 ], [ -122.490521485540071, 37.736028873151284 ], [ -122.490460674310157, 37.735842274774221 ], [ -122.490270108429897, 37.735606337180243 ], [ -122.490526224357907, 37.735470000646821 ], [ -122.490725734916396, 37.735399781312303 ], [ -122.490973609504408, 37.735348171552815 ], [ -122.491320518441114, 37.735327019185135 ], [ -122.491730212101302, 37.735301758325164 ], [ -122.491805731315921, 37.735279805981911 ], [ -122.492142715245791, 37.735181846965403 ], [ -122.492330945602859, 37.73504482611267 ], [ -122.492843999903116, 37.734842083695071 ], [ -122.493274340840912, 37.734785121286002 ], [ -122.493406966558723, 37.734856121008917 ], [ -122.493407285267097, 37.734856242527158 ], [ -122.493857076611491, 37.73502785037892 ], [ -122.493857150107345, 37.735028823489081 ], [ -122.4940149282546, 37.735024137316628 ], [ -122.494014877350082, 37.735023413250019 ], [ -122.493941607430031, 37.733981341508411 ], [ -122.493941605376719, 37.733981316545631 ], [ -122.494403119131789, 37.733960247035334 ], [ -122.496448643026866, 37.733877460645239 ], [ -122.496635991376749, 37.733770846301013 ], [ -122.496635997172902, 37.733770843181105 ], [ -122.496635997165527, 37.733770842906516 ], [ -122.496636262010625, 37.733770813420726 ], [ -122.496636264393828, 37.733770812006838 ], [ -122.496807213285692, 37.733750829171804 ], [ -122.4970611531011, 37.733738715676616 ], [ -122.497251243304476, 37.7337296478455 ], [ -122.497675024009141, 37.73378860832171 ], [ -122.497707486783483, 37.733793124978028 ], [ -122.498050148013945, 37.73385852689691 ], [ -122.49837749236211, 37.733942575660954 ], [ -122.498483756692679, 37.733969859923228 ], [ -122.498948533172893, 37.734128137325406 ], [ -122.499086082983126, 37.734239092175393 ], [ -122.499180283, 37.734301056816975 ], [ -122.499196335607635, 37.734311616338935 ], [ -122.499430330098079, 37.734471850699563 ], [ -122.500140914702612, 37.734827630984967 ], [ -122.500289079616721, 37.734896880574155 ], [ -122.500571951887039, 37.735029088020617 ], [ -122.500650675572956, 37.735059919015036 ], [ -122.500888239775747, 37.73515295885273 ], [ -122.500970549161394, 37.735174012383368 ], [ -122.501097483002411, 37.735206481213844 ], [ -122.501097483348147, 37.735206481207975 ], [ -122.501214897179494, 37.735242075875206 ], [ -122.501291847576297, 37.735265403511711 ], [ -122.501555214836827, 37.735330188314435 ], [ -122.501556481916552, 37.735330499723666 ], [ -122.502021315734993, 37.73539219398544 ], [ -122.50206735537283, 37.735396211199387 ], [ -122.50249812714712, 37.735433799348435 ], [ -122.503104759187963, 37.735466491452826 ], [ -122.504189206002195, 37.735470928034005 ], [ -122.505257352091178, 37.735475287872006 ], [ -122.505711404999388, 37.735473569905054 ], [ -122.506142139643117, 37.735471938745221 ], [ -122.506541776696594, 37.735470423847289 ], [ -122.506717419598758, 37.735469757763546 ], [ -122.506718392445464, 37.735463437680252 ], [ -122.508528202252251, 37.735448935792135 ], [ -122.50851723304288, 37.735491014374531 ], [ -122.508503948199092, 37.735575367390467 ], [ -122.508509635115971, 37.735593812897228 ], [ -122.508534142132689, 37.735604726176433 ], [ -122.508524280726746, 37.73562377983793 ], [ -122.508510961647445, 37.73564289244193 ], [ -122.50850628586997, 37.735661857701452 ], [ -122.508508623546277, 37.735748348011157 ], [ -122.508514421788533, 37.735770911828716 ], [ -122.508520015957387, 37.735785925179286 ], [ -122.508510052128926, 37.735801203199763 ], [ -122.508477309195854, 37.735805538751634 ], [ -122.508464092111296, 37.735828426720389 ], [ -122.508469983447981, 37.735854422414455 ], [ -122.508474053027456, 37.735877015976307 ], [ -122.508461856322953, 37.735937657650084 ], [ -122.508465576123427, 37.736075286791404 ], [ -122.508449773613393, 37.7361304959501 ], [ -122.508448690994484, 37.73621841805182 ], [ -122.508451371852146, 37.73631760760221 ], [ -122.508490175464019, 37.736473524223285 ], [ -122.508516049607124, 37.736662968752803 ], [ -122.508603414533738, 37.736823895128929 ], [ -122.508662443511639, 37.736960238247853 ], [ -122.50867888000765, 37.737056446014627 ], [ -122.508719731680841, 37.737160135129862 ], [ -122.508734334501312, 37.737316464525655 ], [ -122.508765426520924, 37.737442982668369 ], [ -122.508785682509867, 37.737552516867808 ], [ -122.508770696382811, 37.737637929009765 ], [ -122.508786455872283, 37.737709082028033 ], [ -122.508760949000333, 37.737789179556565 ], [ -122.508763268491435, 37.737874983674544 ], [ -122.50874159008174, 37.737968750866465 ], [ -122.5087476021437, 37.738191154145746 ], [ -122.508756496465509, 37.738392219395308 ], [ -122.508803998140891, 37.738613915588019 ], [ -122.508803138582451, 37.738710074824468 ], [ -122.508864043688376, 37.738915747292424 ], [ -122.5088940788266, 37.739003138823669 ], [ -122.508897419160689, 37.739126696329038 ], [ -122.50889009011712, 37.73923944778879 ], [ -122.508822474607925, 37.739425335507839 ], [ -122.508791610932704, 37.73956321107876 ], [ -122.508779986132339, 37.739708999607267 ], [ -122.508780357262495, 37.739722728217863 ], [ -122.50877604314833, 37.739755078870481 ], [ -122.508764442526711, 37.739773818808054 ], [ -122.508752731253111, 37.739788440149496 ], [ -122.508741502089606, 37.739820908689246 ], [ -122.508753863186314, 37.739830312411385 ], [ -122.508778826631357, 37.739858043722968 ], [ -122.508779958572916, 37.739899915709536 ], [ -122.508761814014846, 37.7399325021469 ], [ -122.508762704722017, 37.739965450811162 ], [ -122.508770491923499, 37.739997595154925 ], [ -122.508776179583251, 37.740016040354824 ], [ -122.508747792652912, 37.740053608631989 ], [ -122.508748423567027, 37.740076947268811 ], [ -122.508737212914269, 37.74011010223709 ], [ -122.508737713932007, 37.740128635860302 ], [ -122.508745501147203, 37.740160780479421 ], [ -122.50873947678167, 37.740193847030952 ], [ -122.508723191132987, 37.740231208721582 ], [ -122.508723822048324, 37.740254547632397 ], [ -122.508732128829621, 37.740305911755783 ], [ -122.508742872573777, 37.740319463533034 ], [ -122.50877339326972, 37.74036083476765 ], [ -122.508810829778682, 37.740402088090121 ], [ -122.508829008239559, 37.740434742019097 ], [ -122.508813223629531, 37.740490637616951 ], [ -122.508861162085935, 37.740536519108112 ], [ -122.508850322907236, 37.740583402687079 ], [ -122.508858110211349, 37.74061554702174 ], [ -122.508869614883267, 37.740657242433585 ], [ -122.508870616992439, 37.740694309675469 ], [ -122.508866692231578, 37.740741075644983 ], [ -122.508879295085322, 37.740759402667216 ], [ -122.508914260413761, 37.740773228492962 ], [ -122.508932680259875, 37.740814805724348 ], [ -122.508928625962866, 37.740856766401905 ], [ -122.508929256940604, 37.740880105034634 ], [ -122.508935445433963, 37.740917083849979 ], [ -122.508953234348851, 37.740935322719352 ], [ -122.508983384240864, 37.740962965288134 ], [ -122.509008589756519, 37.740999619859899 ], [ -122.509026879459341, 37.741036392343048 ], [ -122.509023085376484, 37.741087963041082 ], [ -122.509036559926997, 37.741138552557295 ], [ -122.509054739012925, 37.741171206441557 ], [ -122.509067601488525, 37.741199144021785 ], [ -122.5090958931589, 37.741222010744757 ], [ -122.509133200021253, 37.741258459227247 ], [ -122.50918506342488, 37.741257574887214 ], [ -122.509205212680868, 37.74129912258816 ], [ -122.509246237071991, 37.741345121825837 ], [ -122.509242554147008, 37.741400811115767 ], [ -122.509226769642837, 37.741456706760005 ], [ -122.50922790187596, 37.741498579280254 ], [ -122.509216431361367, 37.741522123988162 ], [ -122.509199662741182, 37.741541638830299 ], [ -122.509177093246976, 37.741602457387373 ], [ -122.509208116202714, 37.741662362111221 ], [ -122.509186903920153, 37.741709422591256 ], [ -122.509189298261234, 37.741797972091135 ], [ -122.509154236925113, 37.741844581962283 ], [ -122.509149811487788, 37.741872814035773 ], [ -122.509151073599824, 37.741919491290815 ], [ -122.509123057336595, 37.741970788250718 ], [ -122.509100375943362, 37.742027488213331 ], [ -122.509101006984949, 37.742050826840561 ], [ -122.509092137481943, 37.742106604551111 ], [ -122.509063378372446, 37.742130444293039 ], [ -122.50905227925395, 37.742167717855253 ], [ -122.509053541309754, 37.742214395109038 ], [ -122.509066774807934, 37.742256061019717 ], [ -122.509073353587084, 37.742307454847364 ], [ -122.509057438852423, 37.742358545723746 ], [ -122.509051785633744, 37.74240534060808 ], [ -122.509053177611264, 37.742456822871205 ], [ -122.509073957471671, 37.742521709498256 ], [ -122.509091988431635, 37.742548871927937 ], [ -122.509110538400861, 37.742595254410702 ], [ -122.509106614374701, 37.74264202008699 ], [ -122.509124533674893, 37.742665064210797 ], [ -122.50913085233006, 37.742706847741204 ], [ -122.509143845016951, 37.742739590042241 ], [ -122.509166932263881, 37.742761859020533 ], [ -122.50919239764383, 37.742808123575315 ], [ -122.509181187122891, 37.742841278564811 ], [ -122.509159213148223, 37.742860195402194 ], [ -122.509185214866079, 37.742990233896222 ], [ -122.509180659445065, 37.743013660954873 ], [ -122.509194023430766, 37.743060131850363 ], [ -122.509212184156269, 37.743092099550239 ], [ -122.509235029879775, 37.74310544465424 ], [ -122.509248023028022, 37.743138186935724 ], [ -122.509243207416404, 37.743152004255805 ], [ -122.509249786389432, 37.743203397791333 ], [ -122.509267947166521, 37.743235365207241 ], [ -122.50930010317154, 37.743337142122911 ], [ -122.509302627635748, 37.743430496606479 ], [ -122.509334412528517, 37.743518545183825 ], [ -122.509352573411604, 37.743550512310456 ], [ -122.509365807315376, 37.74359217817824 ], [ -122.509378299405142, 37.743606386832958 ], [ -122.50939077259082, 37.743619909062254 ], [ -122.509397091484274, 37.74366169284626 ], [ -122.509409824223226, 37.743684825098981 ], [ -122.509422427717567, 37.743703152328656 ], [ -122.509416403366075, 37.743736218895179 ], [ -122.509417405789478, 37.743773286113324 ], [ -122.509442110915671, 37.74379140724664 ], [ -122.509460290482991, 37.743824061059733 ], [ -122.509467837052512, 37.743847281472782 ], [ -122.509478581442835, 37.743860833174935 ], [ -122.509497132326601, 37.74390721558072 ], [ -122.509505050216035, 37.743944165138849 ], [ -122.509522969938899, 37.743967208647867 ], [ -122.509535572817498, 37.743985535876377 ], [ -122.509565966198053, 37.744022101859116 ], [ -122.509567729859413, 37.744087312700294 ], [ -122.50958033276946, 37.744105639923646 ], [ -122.509604330613158, 37.744161543870057 ], [ -122.509617063502262, 37.744184676098449 ], [ -122.509642400382361, 37.744226135524023 ], [ -122.50963585625108, 37.74423998206241 ], [ -122.509631802164265, 37.744281942740074 ], [ -122.509637749945398, 37.744309998183795 ], [ -122.509655669451874, 37.744333041677137 ], [ -122.509651355796905, 37.744365392330948 ], [ -122.509652358345974, 37.744402459543146 ], [ -122.509682770174749, 37.744439711928955 ], [ -122.509684274023797, 37.744495312746096 ], [ -122.509661202059561, 37.74453759777208 ], [ -122.509656906960942, 37.744570634854803 ], [ -122.509652462986452, 37.744598180504454 ], [ -122.509634336575232, 37.744631453474433 ], [ -122.509635079200464, 37.744658910667582 ], [ -122.509630653432438, 37.744687142751694 ], [ -122.509607841992747, 37.744739038046106 ], [ -122.509616019927876, 37.744785597059909 ], [ -122.509592687920644, 37.744818272053067 ], [ -122.509529982316536, 37.744866040185691 ], [ -122.509506149350315, 37.744880181550315 ], [ -122.509466886438972, 37.744899393264149 ], [ -122.509443442946818, 37.744927949648201 ], [ -122.509461493197179, 37.744955798714784 ], [ -122.509462365703229, 37.744988060641646 ], [ -122.50945818152897, 37.745025216299389 ], [ -122.509441783806565, 37.745058459754802 ], [ -122.509435740789897, 37.745090839884973 ], [ -122.509432447662917, 37.745160944171666 ], [ -122.509397957547932, 37.745292700871097 ], [ -122.509353566936483, 37.745697951409504 ], [ -122.509335859850864, 37.745938614544613 ], [ -122.509427065710852, 37.746369022956515 ], [ -122.509460469864493, 37.746452922841264 ], [ -122.509505472532595, 37.746581950726871 ], [ -122.509517033840751, 37.746625705328505 ], [ -122.509530306206301, 37.746668744003671 ], [ -122.509540138624189, 37.746712528086029 ], [ -122.50955170066463, 37.746756282671512 ], [ -122.509559804532088, 37.746800096229578 ], [ -122.509567926974654, 37.746844596216341 ], [ -122.509574301938841, 37.746888439256921 ], [ -122.50958069512302, 37.74693296845772 ], [ -122.509587070448092, 37.746976811491038 ], [ -122.509590005803872, 37.747021399934077 ], [ -122.509594670781297, 37.747065958880377 ], [ -122.509597084346751, 37.747155194721792 ], [ -122.509772363824212, 37.747496265262193 ], [ -122.509783516941724, 37.747524918382545 ], [ -122.509806418075982, 37.747604190625147 ], [ -122.509810433332206, 37.747624724253029 ], [ -122.509816158624176, 37.747644542243904 ], [ -122.509820173546927, 37.747665076151769 ], [ -122.509822459192577, 37.747685639827814 ], [ -122.509826455889467, 37.747705487025407 ], [ -122.509833313854301, 37.747767177210982 ], [ -122.509835523477918, 37.747848862313226 ], [ -122.509834351235696, 37.747869484689943 ], [ -122.509833161123524, 37.747889420899924 ], [ -122.509831989218355, 37.747910042996011 ], [ -122.509829088027573, 37.747930694860493 ], [ -122.509827897905609, 37.74795063079565 ], [ -122.509824997065294, 37.747971282928546 ], [ -122.509778471867705, 37.748297593791527 ], [ -122.509717126110829, 37.748715495135052 ], [ -122.509711528533515, 37.748764349563523 ], [ -122.509708924691878, 37.748795984010961 ], [ -122.509706339422777, 37.748828305162085 ], [ -122.509705464552383, 37.748859910397449 ], [ -122.509704608248597, 37.748892202061995 ], [ -122.50970373303835, 37.748923807577505 ], [ -122.509705738305371, 37.748997941669188 ], [ -122.508363946491727, 37.74907680068609 ], [ -122.507940323213063, 37.749101694546454 ], [ -122.507941547211104, 37.749110937340276 ], [ -122.507539948063609, 37.749128748547342 ], [ -122.50729515180268, 37.749139604462776 ], [ -122.507286878880223, 37.749139971457424 ], [ -122.50728687853443, 37.749139971463322 ], [ -122.507286886587565, 37.749140090270473 ], [ -122.507286887279179, 37.749140090258685 ], [ -122.507416228284868, 37.751003284446853 ], [ -122.506347526734444, 37.751051944046772 ], [ -122.505276576525688, 37.751093151070108 ], [ -122.504203312772219, 37.751143789774702 ], [ -122.503133002600279, 37.751190357338089 ], [ -122.502060320882052, 37.751239765057655 ], [ -122.500987488435712, 37.75128639412403 ], [ -122.499914456955352, 37.751333766429582 ], [ -122.499914122812314, 37.751333781439868 ], [ -122.49937768349335, 37.751357494487337 ], [ -122.498842248697912, 37.751381160579498 ], [ -122.498442545251379, 37.751398004902029 ], [ -122.497770416046876, 37.751426327269549 ], [ -122.497770415009455, 37.751426327287128 ], [ -122.496702184257288, 37.751476079301845 ], [ -122.49581055415868, 37.751518288226762 ], [ -122.495630257074851, 37.751526822572394 ], [ -122.49509879355503, 37.751544749172808 ], [ -122.495098259533435, 37.751544767553312 ], [ -122.49456080780611, 37.751568259028382 ], [ -122.493488045146222, 37.751613904571322 ], [ -122.492417458516726, 37.751662024433998 ], [ -122.491344845233968, 37.751710225381885 ], [ -122.490270381873529, 37.751758499707634 ], [ -122.48919356840311, 37.751806869260896 ], [ -122.488143190546495, 37.751854042116229 ], [ -122.487053067380344, 37.751903269835523 ], [ -122.48598818277614, 37.751950794949664 ], [ -122.48491485069583, 37.751998192013865 ], [ -122.483844155588841, 37.75204546291927 ], [ -122.48276958366516, 37.752092894785363 ], [ -122.48170210782861, 37.752140004119113 ], [ -122.480628878786973, 37.752187357305665 ], [ -122.479557564859533, 37.752234616335052 ], [ -122.478486061226221, 37.752281873458429 ], [ -122.4774149778289, 37.752329102778496 ], [ -122.476292240229284, 37.752378599147249 ], [ -122.476292239846927, 37.752378597780194 ], [ -122.476291890478677, 37.752378612978674 ], [ -122.476291890529794, 37.752378614900692 ], [ -122.475276421588944, 37.752423947680597 ], [ -122.474740669236724, 37.752447861779451 ], [ -122.474205182950101, 37.752471761013865 ], [ -122.473133075589757, 37.752519603580488 ], [ -122.472007574280582, 37.752569817871482 ], [ -122.470907529168414, 37.752615836450325 ], [ -122.471122146869178, 37.753216025593119 ], [ -122.471174197654705, 37.753356133265093 ], [ -122.471187692098596, 37.753493865266243 ], [ -122.471190660490961, 37.753605743703318 ], [ -122.471171093123701, 37.753733616626192 ], [ -122.471132268263645, 37.753877430013475 ], [ -122.471079638048607, 37.753995444111091 ], [ -122.471036498728921, 37.754100284913058 ], [ -122.471016495996267, 37.754217122306045 ], [ -122.471019321832557, 37.754265617625428 ], [ -122.471049094699751, 37.75451479556704 ], [ -122.471016758783364, 37.754797170870887 ], [ -122.470916907310823, 37.75477064959378 ], [ -122.470428100059209, 37.754750285613063 ], [ -122.470075601814969, 37.754705621480454 ], [ -122.470018818714578, 37.754692394187302 ], [ -122.469719537880266, 37.754630546382018 ], [ -122.469359681800768, 37.754536443616175 ], [ -122.469229538348586, 37.754492641945887 ], [ -122.469187312711114, 37.754478429881637 ], [ -122.469043420308736, 37.754428685878558 ], [ -122.468949194118821, 37.754383817642378 ], [ -122.468837396357713, 37.754298754678686 ], [ -122.46875232271276, 37.754192126033097 ], [ -122.468629004224212, 37.753985873398783 ], [ -122.46853368295227, 37.753778395652951 ], [ -122.468440863346331, 37.753541228150766 ], [ -122.468335071492149, 37.753243730756957 ], [ -122.468181079371874, 37.752955569756089 ], [ -122.468031369650532, 37.75278739056494 ], [ -122.467915171465805, 37.752734664618352 ], [ -122.467804242122298, 37.752723264514827 ], [ -122.467642627702773, 37.752756208616617 ], [ -122.46660049988607, 37.752803078204508 ], [ -122.465533177566329, 37.752851071595934 ], [ -122.464462034762747, 37.752899226938901 ], [ -122.464462034791779, 37.752899228037201 ], [ -122.464462004720289, 37.752899229087859 ], [ -122.463398931733735, 37.75298135079364 ], [ -122.463398833027838, 37.752981215914545 ], [ -122.463165642273253, 37.752743295475163 ], [ -122.462772959403608, 37.752449458308092 ], [ -122.462467546932245, 37.752187424267689 ], [ -122.462176881380387, 37.751866525322576 ], [ -122.461851812215116, 37.751624201717213 ], [ -122.461621806880288, 37.751517360697065 ], [ -122.461523602837886, 37.75150356127773 ], [ -122.461357402458418, 37.751255115112428 ], [ -122.461130726036544, 37.75091814728394 ], [ -122.460646598340617, 37.749905586886342 ], [ -122.460488100882344, 37.749710225074402 ], [ -122.459910793377546, 37.749171745450226 ], [ -122.459625716264128, 37.748941671345293 ], [ -122.459200706652084, 37.748504001538066 ], [ -122.458941590023073, 37.748201275736406 ], [ -122.458816156308444, 37.748040115735854 ], [ -122.458785941599359, 37.747811900102363 ], [ -122.458856680033747, 37.7476570668547 ], [ -122.458970102890007, 37.747514391535915 ], [ -122.459174106111192, 37.747286620942795 ], [ -122.459174375277186, 37.74728632007151 ], [ -122.461381097416904, 37.745569497508143 ], [ -122.463685995946705, 37.743749409879626 ], [ -122.464736798394597, 37.743658625608425 ], [ -122.465806989998114, 37.743574050343277 ], [ -122.466043187720601, 37.743555382675872 ], [ -122.4668594971902, 37.743490862582995 ], [ -122.467747743753378, 37.743412622582262 ], [ -122.468561098363182, 37.741503345390441 ], [ -122.468671688881855, 37.741487738762387 ], [ -122.46903011455143, 37.741472060437133 ], [ -122.470104939284042, 37.741425112172415 ], [ -122.471225939871744, 37.741383106823285 ], [ -122.471094271054184, 37.739515149668783 ], [ -122.470962730039105, 37.737648904688974 ], [ -122.472088826157801, 37.737598476381557 ], [ -122.473161338869033, 37.737550437503423 ], [ -122.47327754880429, 37.737518149435381 ], [ -122.474232714891599, 37.737476308128976 ], [ -122.475288554960258, 37.737454742960537 ], [ -122.476368270747585, 37.737407342172453 ], [ -122.477443897267278, 37.737360110526431 ], [ -122.478500149938654, 37.73731300537402 ], [ -122.479601690542523, 37.737266045133403 ], [ -122.480654887744791, 37.73721905491567 ], [ -122.481727269492282, 37.73717192680251 ], [ -122.484981330342137, 37.737106613405395 ], [ -122.485055057260084, 37.737081691563745 ], [ -122.485398323256604, 37.736886930845941 ], [ -122.485767077957547, 37.736757243866982 ], [ -122.486239320534182, 37.736758103009961 ], [ -122.486865148034397, 37.736893072836374 ], [ -122.487473746906744, 37.73696000969079 ], [ -122.487883946457515, 37.736972903025247 ], [ -122.488261361358497, 37.736979897727672 ], [ -122.488518054177234, 37.737001890327612 ], [ -122.488933343471572, 37.73715804150379 ], [ -122.48917282500021, 37.737387715271872 ], [ -122.489310346380378, 37.737544144541232 ], [ -122.489559638156635, 37.737725144708122 ], [ -122.489794342484018, 37.737821521499782 ], [ -122.489970938868055, 37.737956983380037 ], [ -122.490364187143001, 37.737929559098433 ], [ -122.490475969759899, 37.737832474268195 ], [ -122.490695166321217, 37.737732995785407 ], [ -122.490894410355324, 37.737610557460023 ], [ -122.491113859834144, 37.737397356998116 ], [ -122.491198309070924, 37.737311342176547 ], [ -122.491334899611488, 37.737293023539365 ] ], [ [ -122.459625733970427, 37.748941660612438 ], [ -122.459625856985753, 37.74894158961829 ], [ -122.459625856632712, 37.748941589349464 ], [ -122.459625733970427, 37.748941660612438 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":20,"ZIP_CODE":94114,"ID":94114},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.451366939667807, 37.758575670531805 ], [ -122.451372847861364, 37.758604122239966 ], [ -122.451553087455522, 37.759472365763493 ], [ -122.449214958651069, 37.759610853827809 ], [ -122.448576884007139, 37.759648639321185 ], [ -122.448534508559618, 37.759045234831405 ], [ -122.448080121328474, 37.759090506458826 ], [ -122.447681986744499, 37.759189835272018 ], [ -122.447394862769713, 37.759372842727622 ], [ -122.447157396221257, 37.759660681065917 ], [ -122.446952816919733, 37.760170129150154 ], [ -122.446866213158088, 37.76042156830691 ], [ -122.446579328750119, 37.76090155472 ], [ -122.446433636964471, 37.761006719141555 ], [ -122.446409895656728, 37.761094344377824 ], [ -122.44652973647915, 37.761396213495424 ], [ -122.446783403627563, 37.761781413728215 ], [ -122.446783402935864, 37.761781413739634 ], [ -122.44642928686055, 37.76181245987528 ], [ -122.446384044294348, 37.761816426422072 ], [ -122.446401427721412, 37.762069683149655 ], [ -122.446391621016517, 37.76223195154369 ], [ -122.44628722735257, 37.762310164748847 ], [ -122.446246565080784, 37.762246873735464 ], [ -122.446167833254592, 37.762219287792306 ], [ -122.445930590545728, 37.762233223779305 ], [ -122.445825769194499, 37.762264137786076 ], [ -122.445692026290132, 37.762347953618033 ], [ -122.444663866724483, 37.763326501903514 ], [ -122.44441170822752, 37.76398692869914 ], [ -122.443434935848089, 37.763875622244342 ], [ -122.443247528217242, 37.763690608015906 ], [ -122.442951036556252, 37.763677959114567 ], [ -122.44294975946913, 37.764109072128207 ], [ -122.443199827408847, 37.764468898600072 ], [ -122.443215275433289, 37.764557545459958 ], [ -122.443278634379993, 37.764726164248771 ], [ -122.443263297846215, 37.765217752592115 ], [ -122.443347278899211, 37.765332794099429 ], [ -122.443210588891787, 37.765339994614024 ], [ -122.442086687309455, 37.765324419445463 ], [ -122.441931912880605, 37.765295099009755 ], [ -122.441241683591315, 37.765270858517731 ], [ -122.439501839688162, 37.766575524599709 ], [ -122.438555364477878, 37.766297386980668 ], [ -122.438386133953244, 37.766664738151036 ], [ -122.438291383601225, 37.766725780787596 ], [ -122.438219625977609, 37.766701399454838 ], [ -122.437879374385105, 37.76661079550852 ], [ -122.437684727134425, 37.766587115085294 ], [ -122.4374853951944, 37.766644323028956 ], [ -122.437333800177683, 37.766762171805773 ], [ -122.437288601235366, 37.766922046842083 ], [ -122.437291829491301, 37.767045826510717 ], [ -122.43729899343451, 37.767221930124791 ], [ -122.436980399947345, 37.767244348801164 ], [ -122.436478247038266, 37.767274662557512 ], [ -122.436625219679314, 37.768918977544402 ], [ -122.436588267341477, 37.76900080227221 ], [ -122.435794213398353, 37.769058453615109 ], [ -122.43489319213792, 37.769113797429938 ], [ -122.433572207534368, 37.769178369516744 ], [ -122.432464341208131, 37.769249650838944 ], [ -122.431570380896062, 37.769307161387864 ], [ -122.431356624058139, 37.76932091157898 ], [ -122.430247361256178, 37.769392261627225 ], [ -122.429905643091914, 37.769407921549679 ], [ -122.429127985682982, 37.769456128057627 ], [ -122.428991181191208, 37.769394223715665 ], [ -122.428218351470321, 37.769440923680406 ], [ -122.426683978032827, 37.769533626427062 ], [ -122.426309438735913, 37.769602597220121 ], [ -122.426902347012131, 37.769049368265463 ], [ -122.426693183304053, 37.767869018742559 ], [ -122.426693183296933, 37.76786901846797 ], [ -122.426615944414863, 37.767069730096857 ], [ -122.426572006355102, 37.766615035704866 ], [ -122.426538465047457, 37.766267922745747 ], [ -122.426518991136163, 37.766066400051031 ], [ -122.426490697526233, 37.765773605772118 ], [ -122.426381708477521, 37.764645690891633 ], [ -122.426381708399177, 37.764645687871273 ], [ -122.426317477898522, 37.763970002371671 ], [ -122.426228478902843, 37.763030870557735 ], [ -122.426224290129298, 37.762962298008539 ], [ -122.426204067323269, 37.762631239367813 ], [ -122.426191463523168, 37.762538363286502 ], [ -122.426149283375466, 37.762227539381186 ], [ -122.426149283368346, 37.762227539106618 ], [ -122.426145984060597, 37.762160358437526 ], [ -122.426076501815189, 37.761427133937481 ], [ -122.426076501462219, 37.761427133668562 ], [ -122.425985721165645, 37.760498692937027 ], [ -122.425920302092379, 37.759829613405913 ], [ -122.425900090784694, 37.759619242549249 ], [ -122.425843422635126, 37.759029397589842 ], [ -122.425766807348751, 37.758226828975253 ], [ -122.425766807341631, 37.758226828700685 ], [ -122.425689459367419, 37.757429672933782 ], [ -122.42568945931761, 37.757429671011749 ], [ -122.425645855643012, 37.756979041458848 ], [ -122.425612216172169, 37.756631383038098 ], [ -122.425491892915787, 37.755387845874338 ], [ -122.425457179889037, 37.755029078716305 ], [ -122.425425666412067, 37.754703378159874 ], [ -122.425302616947704, 37.753431591109177 ], [ -122.425302616566313, 37.753431589741957 ], [ -122.425152541686245, 37.751841785894676 ], [ -122.4251525416649, 37.751841785070944 ], [ -122.425122809405835, 37.751528900123922 ], [ -122.425075700414453, 37.751033151258099 ], [ -122.424999224155329, 37.750232718354916 ], [ -122.424999224133984, 37.75023271753119 ], [ -122.424922999639648, 37.749434901505936 ], [ -122.427200037712353, 37.749295720374967 ], [ -122.429422761644645, 37.749157853016314 ], [ -122.431639579453815, 37.749028214467948 ], [ -122.433851103876819, 37.748895972089151 ], [ -122.436067172923103, 37.748762035575652 ], [ -122.438139804541592, 37.748636730271706 ], [ -122.438246126408771, 37.748664500736062 ], [ -122.440402009224243, 37.748642072742477 ], [ -122.440693299152798, 37.748639039270962 ], [ -122.4414080949674, 37.748610013081198 ], [ -122.441477149443557, 37.748591599630018 ], [ -122.441916701553239, 37.748474391279807 ], [ -122.442519008868075, 37.748183215938361 ], [ -122.442584207288078, 37.748079345098553 ], [ -122.443161821262549, 37.747504352694399 ], [ -122.443453448246288, 37.747477579218923 ], [ -122.443473512241141, 37.748002572121706 ], [ -122.443473812008847, 37.74801042178742 ], [ -122.443486020026867, 37.748345516454542 ], [ -122.443434635522365, 37.749091646853778 ], [ -122.44259888979461, 37.749156165729936 ], [ -122.442599224378554, 37.749160242994655 ], [ -122.442583534001741, 37.749266790173017 ], [ -122.442693363008104, 37.750413947729008 ], [ -122.442776988488347, 37.750697651678763 ], [ -122.442782695565214, 37.750773110847675 ], [ -122.442782889125965, 37.750775670827849 ], [ -122.442832455660607, 37.751431039472649 ], [ -122.442817470436609, 37.751454127059596 ], [ -122.442982766064986, 37.751545025906275 ], [ -122.442775383396778, 37.752377050296218 ], [ -122.442775038632988, 37.752378432471772 ], [ -122.442524333279991, 37.752382565152622 ], [ -122.442492558984341, 37.752606697266998 ], [ -122.442239114579749, 37.752829681730105 ], [ -122.442056693562165, 37.753070846058556 ], [ -122.441886398393621, 37.753365106672398 ], [ -122.441807410207034, 37.753470934450007 ], [ -122.441501225348532, 37.753721419417111 ], [ -122.441307496038533, 37.753879905149773 ], [ -122.441162634059779, 37.754090414508028 ], [ -122.44107583131526, 37.754178484324051 ], [ -122.440897310558796, 37.754492600197032 ], [ -122.440449630137792, 37.755065428273227 ], [ -122.440344935902942, 37.755227929193452 ], [ -122.440113197925641, 37.755606296679595 ], [ -122.440032113187002, 37.755796618022245 ], [ -122.440028760145466, 37.755956541681734 ], [ -122.440133892987774, 37.756422684783992 ], [ -122.440296908436025, 37.756652260712109 ], [ -122.440975109290761, 37.756855155327102 ], [ -122.441311420390406, 37.75688501757589 ], [ -122.441891917804512, 37.756707900118627 ], [ -122.442226754965375, 37.756642418026821 ], [ -122.442229654337552, 37.756643729156551 ], [ -122.442234277014876, 37.756645819486522 ], [ -122.442241604390318, 37.756649132680884 ], [ -122.442338618241578, 37.756692996803793 ], [ -122.442524865881779, 37.756832757000566 ], [ -122.442618313376656, 37.756939880143335 ], [ -122.442822513313288, 37.757228212937811 ], [ -122.442914855315252, 37.757360460271151 ], [ -122.443513115466942, 37.757015898193345 ], [ -122.44359095735247, 37.756973190948777 ], [ -122.443933292768804, 37.756707199362893 ], [ -122.44469570432544, 37.75722410905459 ], [ -122.444812173070659, 37.757253442709903 ], [ -122.444964327713464, 37.757272877138014 ], [ -122.444969690519684, 37.757271714308636 ], [ -122.444978623456407, 37.757199356159234 ], [ -122.44531471170977, 37.756562327523987 ], [ -122.445646089047287, 37.756449470405634 ], [ -122.445946403378542, 37.756413329216429 ], [ -122.446950354992993, 37.75655039856936 ], [ -122.446777335972257, 37.756299129719707 ], [ -122.446339300582281, 37.75591138652841 ], [ -122.446125719389443, 37.755803738269194 ], [ -122.445929097870021, 37.755830086405965 ], [ -122.445464111666666, 37.75598407248431 ], [ -122.445268371613437, 37.755920565713375 ], [ -122.445221502655059, 37.755736527336694 ], [ -122.445347807952828, 37.755618935076164 ], [ -122.44578153535943, 37.755506535020608 ], [ -122.446152412695255, 37.755464475455021 ], [ -122.446560265846969, 37.755346452369793 ], [ -122.446809203706863, 37.755349269900414 ], [ -122.447004077099621, 37.75543789136227 ], [ -122.447530410096462, 37.755821232451311 ], [ -122.447682922964361, 37.755868400984937 ], [ -122.447851945395087, 37.755820566236046 ], [ -122.447961600338971, 37.755673235404537 ], [ -122.44794315940031, 37.755531524105997 ], [ -122.447698643463639, 37.754829811793044 ], [ -122.447375994048841, 37.754217662794012 ], [ -122.44720983000947, 37.754042891582813 ], [ -122.447450790660298, 37.753903429730649 ], [ -122.447546138718849, 37.753815754469287 ], [ -122.447656226877982, 37.753773037573623 ], [ -122.447842792647691, 37.753750582173005 ], [ -122.447974401539952, 37.753701051764345 ], [ -122.448075396501437, 37.753621892463592 ], [ -122.448145439689242, 37.753500194902855 ], [ -122.448141772510084, 37.753360343523973 ], [ -122.448073149249666, 37.75322587034826 ], [ -122.44795103635677, 37.753120264118444 ], [ -122.447707056312382, 37.752702854501173 ], [ -122.447536095260375, 37.752481955041475 ], [ -122.447740900123705, 37.752288718875811 ], [ -122.448209648267067, 37.752018216178747 ], [ -122.448345547044426, 37.751925564530218 ], [ -122.44842671498688, 37.751814445339285 ], [ -122.448475010516702, 37.751690954837258 ], [ -122.448479024859196, 37.751533756090204 ], [ -122.448535342970942, 37.751302507611712 ], [ -122.448730034866358, 37.750901860878599 ], [ -122.448837529908516, 37.750828266590112 ], [ -122.449185119457937, 37.750637403226534 ], [ -122.449304804219054, 37.750547171075254 ], [ -122.449423303862474, 37.750411755760133 ], [ -122.449497860416159, 37.750255542747738 ], [ -122.449681795644992, 37.749823083722987 ], [ -122.449716548818643, 37.74953978039732 ], [ -122.449640314591349, 37.749314114769071 ], [ -122.449543092528529, 37.749181799119881 ], [ -122.449400479496887, 37.749106035740034 ], [ -122.449245295819139, 37.74910598186397 ], [ -122.449051151579454, 37.749182809813966 ], [ -122.448885055528038, 37.749338875396077 ], [ -122.448264206892432, 37.750168319632976 ], [ -122.448133451017753, 37.75025012344306 ], [ -122.447957681483132, 37.750270249048668 ], [ -122.447060946228802, 37.749998786557995 ], [ -122.446924377309614, 37.749962298069669 ], [ -122.445803050365413, 37.749296324298363 ], [ -122.445657849639957, 37.749137284365275 ], [ -122.445634816186484, 37.748982685093061 ], [ -122.445696556781456, 37.748854668447294 ], [ -122.445900228666389, 37.74876090078547 ], [ -122.446146312903167, 37.748733159469879 ], [ -122.446321171479013, 37.748781931740275 ], [ -122.446513423639288, 37.748873466020136 ], [ -122.44714942379963, 37.749338660628091 ], [ -122.447347720899344, 37.749453771264633 ], [ -122.447558108041335, 37.749512717159995 ], [ -122.447695695115499, 37.749484613169258 ], [ -122.447794029968421, 37.749407650434719 ], [ -122.448271537838281, 37.748586113005615 ], [ -122.448649270998317, 37.747987545863559 ], [ -122.44873793021948, 37.747816100622572 ], [ -122.449048273698679, 37.747075129958219 ], [ -122.449145702641545, 37.746860421020024 ], [ -122.449310056560847, 37.746715637417083 ], [ -122.44944655863172, 37.746660402786539 ], [ -122.449658366925917, 37.746790485969299 ], [ -122.449829421216677, 37.7468448367704 ], [ -122.449121036812883, 37.748486108456696 ], [ -122.450376213037472, 37.748836617132255 ], [ -122.450378440966844, 37.74915691493446 ], [ -122.450359832675659, 37.74936931962273 ], [ -122.450278577377304, 37.749812923634934 ], [ -122.450120041484055, 37.750377135131941 ], [ -122.450039762259507, 37.750789548444018 ], [ -122.450020192405731, 37.751134853236394 ], [ -122.449818467802629, 37.751170814837231 ], [ -122.44965771853829, 37.751260239674203 ], [ -122.449537611901278, 37.75139818204417 ], [ -122.449421587723563, 37.751919823116488 ], [ -122.449322640472062, 37.752393440459898 ], [ -122.449260062142201, 37.752640188644804 ], [ -122.449222626079077, 37.752826418335388 ], [ -122.44920235250531, 37.75298761609767 ], [ -122.449195253073, 37.753141525321581 ], [ -122.44921167048372, 37.753342773463253 ], [ -122.449250446345715, 37.75354718765756 ], [ -122.449338624202724, 37.75376669417966 ], [ -122.449567372082669, 37.754139767157625 ], [ -122.449714539832698, 37.754072287920813 ], [ -122.45001235604478, 37.753935733822416 ], [ -122.450708861489431, 37.753616367449496 ], [ -122.450797400040912, 37.753766170392268 ], [ -122.450940567642817, 37.75387933530601 ], [ -122.451110760292124, 37.753931215767722 ], [ -122.451360262589361, 37.75396141724395 ], [ -122.451594424355719, 37.753898832915297 ], [ -122.452570281407503, 37.75354206761132 ], [ -122.452736650019233, 37.753666208179531 ], [ -122.453410821175368, 37.753818557980566 ], [ -122.454229599548796, 37.754062132001749 ], [ -122.454309928578283, 37.75416682276385 ], [ -122.454154362960978, 37.755029376887862 ], [ -122.454089386335994, 37.755285428850698 ], [ -122.453643273006946, 37.755857139298925 ], [ -122.453512429965073, 37.756126075057203 ], [ -122.453345167458252, 37.756697980973108 ], [ -122.453533591760348, 37.756819465356074 ], [ -122.453617386887871, 37.756948631540013 ], [ -122.453769459328285, 37.75746785416225 ], [ -122.453652871332849, 37.757570195093017 ], [ -122.453594261080696, 37.757621283813904 ], [ -122.453326709060633, 37.757812928758618 ], [ -122.453317408957801, 37.757819578594621 ], [ -122.452876092298638, 37.758073671104697 ], [ -122.45283476350059, 37.758097464572913 ], [ -122.45229781656198, 37.758277073170099 ], [ -122.452047941226652, 37.758343705002019 ], [ -122.451408535854284, 37.758561502025017 ], [ -122.45136693942257, 37.758575661196261 ], [ -122.451366939667807, 37.758575670531805 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":21,"ZIP_CODE":94131,"ID":94131},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.453769459328285, 37.75746785416225 ], [ -122.453617386887871, 37.756948631540013 ], [ -122.453533591760348, 37.756819465356074 ], [ -122.453345167458252, 37.756697980973108 ], [ -122.453512429965073, 37.756126075057203 ], [ -122.453643273006946, 37.755857139298925 ], [ -122.454089386335994, 37.755285428850698 ], [ -122.454154362960978, 37.755029376887862 ], [ -122.454309928578283, 37.75416682276385 ], [ -122.454229599548796, 37.754062132001749 ], [ -122.453410821175368, 37.753818557980566 ], [ -122.452736650019233, 37.753666208179531 ], [ -122.452570281407503, 37.75354206761132 ], [ -122.451594424355719, 37.753898832915297 ], [ -122.451360262589361, 37.75396141724395 ], [ -122.451110760292124, 37.753931215767722 ], [ -122.450940567642817, 37.75387933530601 ], [ -122.450797400040912, 37.753766170392268 ], [ -122.450708861489431, 37.753616367449496 ], [ -122.45001235604478, 37.753935733822416 ], [ -122.449714539832698, 37.754072287920813 ], [ -122.449567372082669, 37.754139767157625 ], [ -122.449338624202724, 37.75376669417966 ], [ -122.449250446345715, 37.75354718765756 ], [ -122.44921167048372, 37.753342773463253 ], [ -122.449195253073, 37.753141525321581 ], [ -122.44920235250531, 37.75298761609767 ], [ -122.449222626079077, 37.752826418335388 ], [ -122.449260062142201, 37.752640188644804 ], [ -122.449322640472062, 37.752393440459898 ], [ -122.449421587723563, 37.751919823116488 ], [ -122.449537611901278, 37.75139818204417 ], [ -122.44965771853829, 37.751260239674203 ], [ -122.449818467802629, 37.751170814837231 ], [ -122.450020192405731, 37.751134853236394 ], [ -122.450039762259507, 37.750789548444018 ], [ -122.450120041484055, 37.750377135131941 ], [ -122.450278577377304, 37.749812923634934 ], [ -122.450359832675659, 37.74936931962273 ], [ -122.450378440966844, 37.74915691493446 ], [ -122.450376213037472, 37.748836617132255 ], [ -122.449121036812883, 37.748486108456696 ], [ -122.449829421216677, 37.7468448367704 ], [ -122.449658366925917, 37.746790485969299 ], [ -122.44944655863172, 37.746660402786539 ], [ -122.449310056560847, 37.746715637417083 ], [ -122.449145702641545, 37.746860421020024 ], [ -122.449048273698679, 37.747075129958219 ], [ -122.44873793021948, 37.747816100622572 ], [ -122.448649270998317, 37.747987545863559 ], [ -122.448271537838281, 37.748586113005615 ], [ -122.447794029968421, 37.749407650434719 ], [ -122.447695695115499, 37.749484613169258 ], [ -122.447558108041335, 37.749512717159995 ], [ -122.447347720899344, 37.749453771264633 ], [ -122.44714942379963, 37.749338660628091 ], [ -122.446513423639288, 37.748873466020136 ], [ -122.446321171479013, 37.748781931740275 ], [ -122.446146312903167, 37.748733159469879 ], [ -122.445900228666389, 37.74876090078547 ], [ -122.445696556781456, 37.748854668447294 ], [ -122.445634816186484, 37.748982685093061 ], [ -122.445657849639957, 37.749137284365275 ], [ -122.445803050365413, 37.749296324298363 ], [ -122.446924377309614, 37.749962298069669 ], [ -122.447060946228802, 37.749998786557995 ], [ -122.447957681483132, 37.750270249048668 ], [ -122.448133451017753, 37.75025012344306 ], [ -122.448264206892432, 37.750168319632976 ], [ -122.448885055528038, 37.749338875396077 ], [ -122.449051151579454, 37.749182809813966 ], [ -122.449245295819139, 37.74910598186397 ], [ -122.449400479496887, 37.749106035740034 ], [ -122.449543092528529, 37.749181799119881 ], [ -122.449640314591349, 37.749314114769071 ], [ -122.449716548818643, 37.74953978039732 ], [ -122.449681795644992, 37.749823083722987 ], [ -122.449497860416159, 37.750255542747738 ], [ -122.449423303862474, 37.750411755760133 ], [ -122.449304804219054, 37.750547171075254 ], [ -122.449185119457937, 37.750637403226534 ], [ -122.448837529908516, 37.750828266590112 ], [ -122.448730034866358, 37.750901860878599 ], [ -122.448535342970942, 37.751302507611712 ], [ -122.448479024859196, 37.751533756090204 ], [ -122.448475010516702, 37.751690954837258 ], [ -122.44842671498688, 37.751814445339285 ], [ -122.448345547044426, 37.751925564530218 ], [ -122.448209648267067, 37.752018216178747 ], [ -122.447740900123705, 37.752288718875811 ], [ -122.447536095260375, 37.752481955041475 ], [ -122.447707056312382, 37.752702854501173 ], [ -122.44795103635677, 37.753120264118444 ], [ -122.448073149249666, 37.75322587034826 ], [ -122.448141772510084, 37.753360343523973 ], [ -122.448145439689242, 37.753500194902855 ], [ -122.448075396501437, 37.753621892463592 ], [ -122.447974401539952, 37.753701051764345 ], [ -122.447842792647691, 37.753750582173005 ], [ -122.447656226877982, 37.753773037573623 ], [ -122.447546138718849, 37.753815754469287 ], [ -122.447450790660298, 37.753903429730649 ], [ -122.44720983000947, 37.754042891582813 ], [ -122.447375994048841, 37.754217662794012 ], [ -122.447698643463639, 37.754829811793044 ], [ -122.44794315940031, 37.755531524105997 ], [ -122.447961600338971, 37.755673235404537 ], [ -122.447851945395087, 37.755820566236046 ], [ -122.447682922964361, 37.755868400984937 ], [ -122.447530410096462, 37.755821232451311 ], [ -122.447004077099621, 37.75543789136227 ], [ -122.446809203706863, 37.755349269900414 ], [ -122.446560265846969, 37.755346452369793 ], [ -122.446152412695255, 37.755464475455021 ], [ -122.44578153535943, 37.755506535020608 ], [ -122.445347807952828, 37.755618935076164 ], [ -122.445221502655059, 37.755736527336694 ], [ -122.445268371613437, 37.755920565713375 ], [ -122.445464111666666, 37.75598407248431 ], [ -122.445929097870021, 37.755830086405965 ], [ -122.446125719389443, 37.755803738269194 ], [ -122.446339300582281, 37.75591138652841 ], [ -122.446777335972257, 37.756299129719707 ], [ -122.446950354992993, 37.75655039856936 ], [ -122.445946403378542, 37.756413329216429 ], [ -122.445646089047287, 37.756449470405634 ], [ -122.44531471170977, 37.756562327523987 ], [ -122.444978623456407, 37.757199356159234 ], [ -122.444969690519684, 37.757271714308636 ], [ -122.444964327713464, 37.757272877138014 ], [ -122.444812173070659, 37.757253442709903 ], [ -122.44469570432544, 37.75722410905459 ], [ -122.443933292768804, 37.756707199362893 ], [ -122.44359095735247, 37.756973190948777 ], [ -122.443513115466942, 37.757015898193345 ], [ -122.442914855315252, 37.757360460271151 ], [ -122.442822513313288, 37.757228212937811 ], [ -122.442618313376656, 37.756939880143335 ], [ -122.442524865881779, 37.756832757000566 ], [ -122.442338618241578, 37.756692996803793 ], [ -122.442241604390318, 37.756649132680884 ], [ -122.442234277014876, 37.756645819486522 ], [ -122.442229654337552, 37.756643729156551 ], [ -122.442226754965375, 37.756642418026821 ], [ -122.441891917804512, 37.756707900118627 ], [ -122.441311420390406, 37.75688501757589 ], [ -122.440975109290761, 37.756855155327102 ], [ -122.440296908436025, 37.756652260712109 ], [ -122.440133892987774, 37.756422684783992 ], [ -122.440028760145466, 37.755956541681734 ], [ -122.440032113187002, 37.755796618022245 ], [ -122.440113197925641, 37.755606296679595 ], [ -122.440344935902942, 37.755227929193452 ], [ -122.440449630137792, 37.755065428273227 ], [ -122.440897310558796, 37.754492600197032 ], [ -122.44107583131526, 37.754178484324051 ], [ -122.441162634059779, 37.754090414508028 ], [ -122.441307496038533, 37.753879905149773 ], [ -122.441501225348532, 37.753721419417111 ], [ -122.441807410207034, 37.753470934450007 ], [ -122.441886398393621, 37.753365106672398 ], [ -122.442056693562165, 37.753070846058556 ], [ -122.442239114579749, 37.752829681730105 ], [ -122.442492558984341, 37.752606697266998 ], [ -122.442524333279991, 37.752382565152622 ], [ -122.442775038632988, 37.752378432471772 ], [ -122.442775383396778, 37.752377050296218 ], [ -122.442982766064986, 37.751545025906275 ], [ -122.442817470436609, 37.751454127059596 ], [ -122.442832455660607, 37.751431039472649 ], [ -122.442782889125965, 37.750775670827849 ], [ -122.442782695565214, 37.750773110847675 ], [ -122.442776988488347, 37.750697651678763 ], [ -122.442693363008104, 37.750413947729008 ], [ -122.442583534001741, 37.749266790173017 ], [ -122.442599224378554, 37.749160242994655 ], [ -122.44259888979461, 37.749156165729936 ], [ -122.443434635522365, 37.749091646853778 ], [ -122.443486020026867, 37.748345516454542 ], [ -122.443473812008847, 37.74801042178742 ], [ -122.443473512241141, 37.748002572121706 ], [ -122.443453448246288, 37.747477579218923 ], [ -122.443161821262549, 37.747504352694399 ], [ -122.442584207288078, 37.748079345098553 ], [ -122.442519008868075, 37.748183215938361 ], [ -122.441916701553239, 37.748474391279807 ], [ -122.441477149443557, 37.748591599630018 ], [ -122.4414080949674, 37.748610013081198 ], [ -122.440693299152798, 37.748639039270962 ], [ -122.440402009224243, 37.748642072742477 ], [ -122.438246126408771, 37.748664500736062 ], [ -122.438139804541592, 37.748636730271706 ], [ -122.436067172923103, 37.748762035575652 ], [ -122.433851103876819, 37.748895972089151 ], [ -122.431639579453815, 37.749028214467948 ], [ -122.429422761644645, 37.749157853016314 ], [ -122.427200037712353, 37.749295720374967 ], [ -122.424922999639648, 37.749434901505936 ], [ -122.424845024283727, 37.748632587554638 ], [ -122.424845018024243, 37.748632519532975 ], [ -122.424841979744244, 37.748600757493776 ], [ -122.424768284589831, 37.747830340365347 ], [ -122.424768280884535, 37.747830304166378 ], [ -122.424689793548367, 37.747033402901096 ], [ -122.424602793343411, 37.746241400149849 ], [ -122.424538964982034, 37.745435717069675 ], [ -122.424459208282684, 37.744635998834639 ], [ -122.424384862816794, 37.743838216035606 ], [ -122.424309369085989, 37.7430347552692 ], [ -122.424233277120777, 37.742236301639601 ], [ -122.424233272287097, 37.742236301993223 ], [ -122.424233472639315, 37.742235957277522 ], [ -122.424233478510288, 37.742235956906946 ], [ -122.424301394893192, 37.742119600447609 ], [ -122.42417135664968, 37.740713439585669 ], [ -122.42413709700044, 37.740335654620864 ], [ -122.424258152196032, 37.739934707389949 ], [ -122.42414746787631, 37.739869414698418 ], [ -122.424147154546787, 37.739869230001858 ], [ -122.424147154179678, 37.739869229183775 ], [ -122.424063599996956, 37.739784297520274 ], [ -122.424284283357963, 37.738949691036076 ], [ -122.424531564221411, 37.738368292265967 ], [ -122.424696469855888, 37.738101223886673 ], [ -122.424711669489241, 37.738076607801148 ], [ -122.424904804743889, 37.737763817504508 ], [ -122.425110714349969, 37.737550673136937 ], [ -122.425230653676863, 37.737426519232308 ], [ -122.425439441891498, 37.737210392933726 ], [ -122.425832974995387, 37.736873263301263 ], [ -122.426500890836181, 37.73630106743056 ], [ -122.426544994076067, 37.736269396547655 ], [ -122.42729729676671, 37.735729149898575 ], [ -122.427738169173168, 37.735412543347451 ], [ -122.42783624298761, 37.735347761815902 ], [ -122.428436951461066, 37.734950968784666 ], [ -122.42843713263963, 37.734951046304573 ], [ -122.428766264762999, 37.73481932892178 ], [ -122.429365174143101, 37.734579643964238 ], [ -122.429606994304805, 37.734482866043706 ], [ -122.429797927680781, 37.734406452684077 ], [ -122.429799382942633, 37.734405632509876 ], [ -122.430400796753801, 37.734118700718604 ], [ -122.430928172484656, 37.733867087971888 ], [ -122.430931197463138, 37.733865940717834 ], [ -122.43132522808267, 37.733716495194997 ], [ -122.432572047381726, 37.733243596430682 ], [ -122.432720773871381, 37.733187185661393 ], [ -122.434440716858973, 37.732534804028113 ], [ -122.434512093568429, 37.732323526771246 ], [ -122.434644432402948, 37.732322139093768 ], [ -122.434823956379304, 37.732249430441868 ], [ -122.434989951388332, 37.732296516038524 ], [ -122.434992781477959, 37.732295287547394 ], [ -122.435457687984979, 37.732093484109448 ], [ -122.436668162612392, 37.731543298105045 ], [ -122.436678949019353, 37.731538395224071 ], [ -122.436835967120587, 37.731467212874229 ], [ -122.437166749161392, 37.731365897534992 ], [ -122.438692929843569, 37.730737998359416 ], [ -122.439686065703896, 37.730325720705899 ], [ -122.43969146797258, 37.730323477880063 ], [ -122.440664990612632, 37.729919329476168 ], [ -122.442010214558891, 37.729910949382834 ], [ -122.442006614261629, 37.729375267903364 ], [ -122.442082956691792, 37.729308363921405 ], [ -122.442595296877187, 37.729101680603421 ], [ -122.442954953118544, 37.728915555981267 ], [ -122.443973112888827, 37.728379877183251 ], [ -122.444131311025359, 37.72831838217401 ], [ -122.444276984301908, 37.728261755504967 ], [ -122.44427751391413, 37.728322242080615 ], [ -122.444284269547836, 37.729093639959018 ], [ -122.444291303797655, 37.729896860703782 ], [ -122.444298409699798, 37.730708221303239 ], [ -122.444294941941365, 37.731069863889161 ], [ -122.444288854528963, 37.731568915105107 ], [ -122.444299518643774, 37.732277163251723 ], [ -122.44431434932487, 37.732346901474607 ], [ -122.444320397855094, 37.733087687518228 ], [ -122.444320121334613, 37.733811072362919 ], [ -122.445605378551107, 37.733800711254226 ], [ -122.445782219446897, 37.733850288395629 ], [ -122.445695180894745, 37.733970768223749 ], [ -122.445385609625191, 37.734245207403205 ], [ -122.445350300553969, 37.734322189420951 ], [ -122.445353637361492, 37.734548793463254 ], [ -122.444336617762318, 37.734557437927307 ], [ -122.442971182760076, 37.734564427784264 ], [ -122.44298838327488, 37.734915120161688 ], [ -122.443241645458286, 37.734935120886668 ], [ -122.443498916758756, 37.735041781619209 ], [ -122.443868794328736, 37.73522293273804 ], [ -122.444190291728404, 37.735407445883219 ], [ -122.444280987817251, 37.735484218369663 ], [ -122.444414926545633, 37.735547154436588 ], [ -122.444456723960371, 37.735604611251425 ], [ -122.444478073435704, 37.735720552668923 ], [ -122.444433832419023, 37.736070356056409 ], [ -122.444405709994072, 37.736218559056141 ], [ -122.444306066715512, 37.736409368208768 ], [ -122.444187688286519, 37.736528330103852 ], [ -122.444038854214782, 37.736575290313169 ], [ -122.443842427221611, 37.736579809812575 ], [ -122.443683487927487, 37.73653803376142 ], [ -122.443602235926093, 37.736502583404238 ], [ -122.442657322787326, 37.737118881702763 ], [ -122.442488947503193, 37.737289169592358 ], [ -122.442421017736137, 37.737438198043598 ], [ -122.442403843641571, 37.737639851367689 ], [ -122.44244617419956, 37.737799536516135 ], [ -122.442579349780331, 37.738171569110513 ], [ -122.442625226229453, 37.738313911390271 ], [ -122.442627783322195, 37.738564600951854 ], [ -122.44250398997913, 37.739238469269011 ], [ -122.442525191527608, 37.739448400155375 ], [ -122.442597107319372, 37.739547858254923 ], [ -122.44271760477325, 37.739682237717481 ], [ -122.442856748556963, 37.739767263698369 ], [ -122.443019593631774, 37.739814475654143 ], [ -122.44341918472557, 37.739902333376541 ], [ -122.443694223373313, 37.739971345925731 ], [ -122.443922038304507, 37.740088462716592 ], [ -122.444098337188322, 37.740234069945657 ], [ -122.444209640252396, 37.740380617798955 ], [ -122.444366170223589, 37.740575544006177 ], [ -122.444518249198694, 37.740692998244214 ], [ -122.444681667799003, 37.740793092051724 ], [ -122.444911120433531, 37.740872114678645 ], [ -122.445195592772691, 37.740920623913645 ], [ -122.445523457193502, 37.740972470791057 ], [ -122.445897881975142, 37.741116602917764 ], [ -122.445964326755799, 37.741198730714288 ], [ -122.445964300022951, 37.741198753406074 ], [ -122.44605943275991, 37.741274575873817 ], [ -122.44609965968975, 37.741357693405078 ], [ -122.446156199006268, 37.741535311478742 ], [ -122.44619443459527, 37.741872554265036 ], [ -122.446256735689062, 37.742072052701658 ], [ -122.446323687641325, 37.742184944882247 ], [ -122.446410971977912, 37.742281706494659 ], [ -122.446516770315029, 37.742358933848621 ], [ -122.446657325560608, 37.742442453734959 ], [ -122.446840940400392, 37.742519081676662 ], [ -122.447110638216571, 37.742580552169777 ], [ -122.447384659150103, 37.742608987228614 ], [ -122.44848892294759, 37.742704730693937 ], [ -122.448820428983325, 37.742748693538836 ], [ -122.44913731277687, 37.742828607669701 ], [ -122.449355958412127, 37.74292182098899 ], [ -122.449582834428256, 37.743065029012413 ], [ -122.449790244582587, 37.743257317336237 ], [ -122.449918612648133, 37.7432716748716 ], [ -122.450592179132485, 37.744090792307063 ], [ -122.450586742649079, 37.744213121547148 ], [ -122.451624634588612, 37.745534387540218 ], [ -122.45169226258335, 37.745606748366605 ], [ -122.45181666119403, 37.745671246259803 ], [ -122.451828632556612, 37.745671851179097 ], [ -122.452091117231191, 37.74568511552728 ], [ -122.45222754649042, 37.74569200904012 ], [ -122.452386953750349, 37.745691424670198 ], [ -122.453376023619995, 37.74568779337109 ], [ -122.453495886255311, 37.745691252478657 ], [ -122.453645157964232, 37.745695560010326 ], [ -122.453916002908102, 37.745699915076791 ], [ -122.453916429980183, 37.745699922279499 ], [ -122.454184426826714, 37.745845539203287 ], [ -122.454664096869323, 37.746106168082655 ], [ -122.454664097215115, 37.746106168076913 ], [ -122.455466732538028, 37.746327980692172 ], [ -122.455687935660293, 37.746380796419501 ], [ -122.456314708164584, 37.746530446031059 ], [ -122.457089836487938, 37.746682896092409 ], [ -122.457166741019165, 37.746698021157933 ], [ -122.457301186299645, 37.746714064689691 ], [ -122.457457161051892, 37.746732677593577 ], [ -122.457582024204598, 37.746744476612157 ], [ -122.457949639713704, 37.746779214661537 ], [ -122.458499844031735, 37.746781514247793 ], [ -122.458509634961302, 37.746778882011192 ], [ -122.458610345848541, 37.746751806518411 ], [ -122.45872851739027, 37.746755429911865 ], [ -122.459174375277186, 37.74728632007151 ], [ -122.459174106111192, 37.747286620942795 ], [ -122.458970102890007, 37.747514391535915 ], [ -122.458856680033747, 37.7476570668547 ], [ -122.458785941599359, 37.747811900102363 ], [ -122.458816156308444, 37.748040115735854 ], [ -122.458941590023073, 37.748201275736406 ], [ -122.459200706652084, 37.748504001538066 ], [ -122.459625716264128, 37.748941671345293 ], [ -122.459724182852014, 37.749021140146965 ], [ -122.459910557162914, 37.749171866124314 ], [ -122.460150106375522, 37.749394963907797 ], [ -122.460488100882344, 37.749710225074402 ], [ -122.460574698392477, 37.749816963786891 ], [ -122.460646032705213, 37.749905429557089 ], [ -122.460872188804359, 37.750377416930355 ], [ -122.461130726036544, 37.75091814728394 ], [ -122.461357402458418, 37.751255115112428 ], [ -122.461523490818323, 37.75150339365527 ], [ -122.461523490133942, 37.751503393941363 ], [ -122.461523602837886, 37.75150356127773 ], [ -122.461621806880288, 37.751517360697065 ], [ -122.461851812215116, 37.751624201717213 ], [ -122.462014174664134, 37.751745235464952 ], [ -122.462176783557467, 37.751866685725204 ], [ -122.462467214248704, 37.7521873638808 ], [ -122.462572755978741, 37.752277690485144 ], [ -122.462772959403608, 37.752449458308092 ], [ -122.463129733530764, 37.752716425489766 ], [ -122.463165176689103, 37.75274298458443 ], [ -122.463398089008777, 37.752981523058104 ], [ -122.463399006031565, 37.752981452291863 ], [ -122.463640406958334, 37.753310851043111 ], [ -122.463777683069083, 37.753601657228067 ], [ -122.463842129576008, 37.753808596342253 ], [ -122.463838893966539, 37.75414750585891 ], [ -122.463722821262465, 37.754601920791259 ], [ -122.46367889740506, 37.754738571878264 ], [ -122.463627289771182, 37.754788065181785 ], [ -122.463580718915097, 37.755014148901829 ], [ -122.463554499932727, 37.755298102249476 ], [ -122.463651620775778, 37.756677450683235 ], [ -122.463781528402038, 37.758538181378015 ], [ -122.463911891482155, 37.760405344350922 ], [ -122.46284191307069, 37.760452254741963 ], [ -122.461770200794135, 37.760499231230455 ], [ -122.461770397151241, 37.760502041661596 ], [ -122.460684658382874, 37.760546523892096 ], [ -122.46084509456081, 37.762627108799968 ], [ -122.460842964058216, 37.762627642539876 ], [ -122.459790374597731, 37.762925938047687 ], [ -122.457827081738984, 37.763482288038738 ], [ -122.45765013969168, 37.76353311613984 ], [ -122.456669912105653, 37.763814688946653 ], [ -122.455781065686594, 37.764070070210742 ], [ -122.455466091062405, 37.764160565952579 ], [ -122.454217265424234, 37.764310945798535 ], [ -122.454179864833876, 37.763912200042988 ], [ -122.454845151642289, 37.763732313486969 ], [ -122.454945541962573, 37.76366305305779 ], [ -122.454946081907835, 37.7631787014639 ], [ -122.454009611320302, 37.762667869264533 ], [ -122.453744673977482, 37.761878784498755 ], [ -122.453114639516684, 37.762361563728888 ], [ -122.45351591398105, 37.764395394431268 ], [ -122.452569575903098, 37.764509334437378 ], [ -122.452569519449398, 37.764509056008684 ], [ -122.452400386663143, 37.763669233221897 ], [ -122.45223333012629, 37.762842423991209 ], [ -122.452096203587132, 37.762166887302627 ], [ -122.451957007208804, 37.761478336720671 ], [ -122.45155310706329, 37.759472203369178 ], [ -122.45136693770776, 37.758575661774039 ], [ -122.451408535854284, 37.758561502025017 ], [ -122.452047941226652, 37.758343705002019 ], [ -122.45229781656198, 37.758277073170099 ], [ -122.45283476350059, 37.758097464572913 ], [ -122.452876092298638, 37.758073671104697 ], [ -122.453317408957801, 37.757819578594621 ], [ -122.453326709060633, 37.757812928758618 ], [ -122.453652871332849, 37.757570195093017 ], [ -122.453769459328285, 37.75746785416225 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":22,"ZIP_CODE":94122,"ID":94122},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.463399006031565, 37.752981452291863 ], [ -122.464461497345539, 37.752899248258529 ], [ -122.464461497323754, 37.752899247434819 ], [ -122.464462034791779, 37.752899228037201 ], [ -122.464462034762747, 37.752899226938901 ], [ -122.465533177566329, 37.752851071595934 ], [ -122.46660049988607, 37.752803078204508 ], [ -122.467642627702773, 37.752756208616617 ], [ -122.467804242122298, 37.752723264514827 ], [ -122.467915171465805, 37.752734664618352 ], [ -122.468031369650532, 37.75278739056494 ], [ -122.468181079371874, 37.752955569756089 ], [ -122.468335071492149, 37.753243730756957 ], [ -122.468440863346331, 37.753541228150766 ], [ -122.46853368295227, 37.753778395652951 ], [ -122.468629004224212, 37.753985873398783 ], [ -122.46875232271276, 37.754192126033097 ], [ -122.468837396357713, 37.754298754678686 ], [ -122.468949194118821, 37.754383817642378 ], [ -122.469043420308736, 37.754428685878558 ], [ -122.469187312711114, 37.754478429881637 ], [ -122.469229538348586, 37.754492641945887 ], [ -122.469359681800768, 37.754536443616175 ], [ -122.469719537880266, 37.754630546382018 ], [ -122.470018818714578, 37.754692394187302 ], [ -122.470075601814969, 37.754705621480454 ], [ -122.470428100059209, 37.754750285613063 ], [ -122.470916907310823, 37.75477064959378 ], [ -122.471016758783364, 37.754797170870887 ], [ -122.471049094699751, 37.75451479556704 ], [ -122.471019321832557, 37.754265617625428 ], [ -122.471016495996267, 37.754217122306045 ], [ -122.471036498728921, 37.754100284913058 ], [ -122.471079638048607, 37.753995444111091 ], [ -122.471132268263645, 37.753877430013475 ], [ -122.471171093123701, 37.753733616626192 ], [ -122.471190660490961, 37.753605743703318 ], [ -122.471187692098596, 37.753493865266243 ], [ -122.471174197654705, 37.753356133265093 ], [ -122.471122146869178, 37.753216025593119 ], [ -122.470907529168414, 37.752615836450325 ], [ -122.472007574280582, 37.752569817871482 ], [ -122.473133075589757, 37.752519603580488 ], [ -122.474205182950101, 37.752471761013865 ], [ -122.474740669236724, 37.752447861779451 ], [ -122.475276421588944, 37.752423947680597 ], [ -122.476291890529794, 37.752378614900692 ], [ -122.476291890478677, 37.752378612978674 ], [ -122.476292239846927, 37.752378597780194 ], [ -122.476292240229284, 37.752378599147249 ], [ -122.4774149778289, 37.752329102778496 ], [ -122.478486061226221, 37.752281873458429 ], [ -122.479557564859533, 37.752234616335052 ], [ -122.480628878786973, 37.752187357305665 ], [ -122.48170210782861, 37.752140004119113 ], [ -122.48276958366516, 37.752092894785363 ], [ -122.483844155588841, 37.75204546291927 ], [ -122.48491485069583, 37.751998192013865 ], [ -122.48598818277614, 37.751950794949664 ], [ -122.487053067380344, 37.751903269835523 ], [ -122.488143190546495, 37.751854042116229 ], [ -122.48919356840311, 37.751806869260896 ], [ -122.490270381873529, 37.751758499707634 ], [ -122.491344845233968, 37.751710225381885 ], [ -122.492417458516726, 37.751662024433998 ], [ -122.493488045146222, 37.751613904571322 ], [ -122.49456080780611, 37.751568259028382 ], [ -122.495098259533435, 37.751544767553312 ], [ -122.49509879355503, 37.751544749172808 ], [ -122.495630257074851, 37.751526822572394 ], [ -122.49581055415868, 37.751518288226762 ], [ -122.496702184257288, 37.751476079301845 ], [ -122.497770415009455, 37.751426327287128 ], [ -122.497770416046876, 37.751426327269549 ], [ -122.498442545251379, 37.751398004902029 ], [ -122.498842248697912, 37.751381160579498 ], [ -122.49937768349335, 37.751357494487337 ], [ -122.499914122812314, 37.751333781439868 ], [ -122.499914456955352, 37.751333766429582 ], [ -122.500987488435712, 37.75128639412403 ], [ -122.502060320882052, 37.751239765057655 ], [ -122.503133002600279, 37.751190357338089 ], [ -122.504203312772219, 37.751143789774702 ], [ -122.505276576525688, 37.751093151070108 ], [ -122.506347526734444, 37.751051944046772 ], [ -122.507416228284868, 37.751003284446853 ], [ -122.507286887279179, 37.749140090258685 ], [ -122.507286886587565, 37.749140090270473 ], [ -122.50728687853443, 37.749139971463322 ], [ -122.507286878880223, 37.749139971457424 ], [ -122.50729515180268, 37.749139604462776 ], [ -122.507539948063609, 37.749128748547342 ], [ -122.507941547211104, 37.749110937340276 ], [ -122.507940323213063, 37.749101694546454 ], [ -122.508363946491727, 37.74907680068609 ], [ -122.509705738305371, 37.748997941669188 ], [ -122.509710663420336, 37.749052110606286 ], [ -122.509713246503537, 37.749083657142556 ], [ -122.509729549623728, 37.749110848942742 ], [ -122.509729362100501, 37.749167851780079 ], [ -122.509735273166726, 37.749194534062582 ], [ -122.509750516130779, 37.749246466794162 ], [ -122.509778567561426, 37.749324277699941 ], [ -122.509789628452893, 37.749349498384071 ], [ -122.509798960033251, 37.749374748835095 ], [ -122.509811768849048, 37.749400627001869 ], [ -122.509822811194553, 37.749425161253306 ], [ -122.509835600759672, 37.749450352725269 ], [ -122.509848372456204, 37.749474857754677 ], [ -122.509862872798479, 37.749499333300058 ], [ -122.509875644166641, 37.74952383833223 ], [ -122.509890144527432, 37.749548313874023 ], [ -122.509938776915888, 37.749619592731861 ], [ -122.50997116142004, 37.749665739100415 ], [ -122.509989082682068, 37.749688783065459 ], [ -122.51000698537004, 37.749711140049378 ], [ -122.510074896863927, 37.74979170473398 ], [ -122.510112524214264, 37.749839821874914 ], [ -122.510150170185028, 37.749888625432611 ], [ -122.510222041423717, 37.749987664081871 ], [ -122.510254537700391, 37.750037928944337 ], [ -122.510319567532292, 37.750139831499247 ], [ -122.510350372089775, 37.750191498687315 ], [ -122.510379447689871, 37.750243195362941 ], [ -122.510406812903227, 37.750295607956453 ], [ -122.510434196383827, 37.75034870697808 ], [ -122.510450965102024, 37.750393059386766 ], [ -122.51046407081715, 37.750429920079867 ], [ -122.510475448231503, 37.75046681025696 ], [ -122.510486843547952, 37.750504387148105 ], [ -122.510515843893401, 37.750617205185918 ], [ -122.510523781572246, 37.750654840788101 ], [ -122.510529990248557, 37.75069250588782 ], [ -122.510536217506655, 37.75073085741591 ], [ -122.510540697183259, 37.750768552012921 ], [ -122.510545195439974, 37.750806933038461 ], [ -122.510549675125716, 37.750844627634628 ], [ -122.510552444030878, 37.750883038163828 ], [ -122.510555546179489, 37.75099767207351 ], [ -122.510554168969648, 37.751074611106283 ], [ -122.510551732248842, 37.751112423700818 ], [ -122.510547585771619, 37.751150952210686 ], [ -122.510543420361202, 37.751188794022582 ], [ -122.510539273529616, 37.751227322537567 ], [ -122.510534624806738, 37.751247317477244 ], [ -122.51052982817599, 37.751261821248107 ], [ -122.510526778782435, 37.751276981406193 ], [ -122.510523710819541, 37.75129145540982 ], [ -122.510522371541924, 37.751305900195682 ], [ -122.510519303915359, 37.751320373918666 ], [ -122.510517983550216, 37.751335504852847 ], [ -122.510514915590633, 37.75134997913068 ], [ -122.510513595216636, 37.751365109790179 ], [ -122.510513985300733, 37.75137952479723 ], [ -122.510512664933444, 37.751394655731197 ], [ -122.510513055017512, 37.751409070738212 ], [ -122.510511734303734, 37.751424201677992 ], [ -122.510512533054808, 37.751453718395311 ], [ -122.510514671081651, 37.751468790052584 ], [ -122.510515061166473, 37.751483205059415 ], [ -122.51051719886371, 37.751498277271601 ], [ -122.510519317971443, 37.751512662505696 ], [ -122.510521455317175, 37.751527734449049 ], [ -122.510523574787243, 37.751542120226226 ], [ -122.510527441503768, 37.751557162390775 ], [ -122.51052956027678, 37.751571547905016 ], [ -122.510541105080137, 37.751614615928503 ], [ -122.510546682275447, 37.751628942714049 ], [ -122.51055053042532, 37.751643298448748 ], [ -122.510567261661492, 37.751686277985172 ], [ -122.51057282063698, 37.751699918334559 ], [ -122.510580126864298, 37.751714215070294 ], [ -122.510587414533077, 37.751727825925812 ], [ -122.510592973154687, 37.751741465730937 ], [ -122.510600260828497, 37.751755076585596 ], [ -122.510609277525731, 37.751768657391231 ], [ -122.510616565205183, 37.751782268244845 ], [ -122.510623834295913, 37.751795192119978 ], [ -122.510632850671371, 37.75180877347875 ], [ -122.510650847293675, 37.751834562495105 ], [ -122.510666910213118, 37.751852830846786 ], [ -122.510679329278858, 37.751864293359795 ], [ -122.510690018971971, 37.751875785652558 ], [ -122.510697288092032, 37.751888709797527 ], [ -122.510704575791962, 37.751902320370817 ], [ -122.51070842433974, 37.751916676368367 ], [ -122.510710543503862, 37.751931061872575 ], [ -122.51070920459685, 37.751945506653065 ], [ -122.510724225875535, 37.751989202088765 ], [ -122.510730100360817, 37.752014511176412 ], [ -122.510737685321715, 37.752039104608144 ], [ -122.510743559477149, 37.752064413975368 ], [ -122.510825714104442, 37.752223710988055 ], [ -122.510880260867467, 37.752321671638327 ], [ -122.510889277338805, 37.75233525242713 ], [ -122.51089827594069, 37.752348147323836 ], [ -122.510919693380217, 37.752372504437815 ], [ -122.510932112233405, 37.752383967203627 ], [ -122.510956913829162, 37.752405519856168 ], [ -122.510971006350204, 37.752414893821253 ], [ -122.510979967462688, 37.75242641558544 ], [ -122.510987199526895, 37.75243796685389 ], [ -122.510992721122207, 37.752450234055644 ], [ -122.510999971778375, 37.752462472026544 ], [ -122.511005493370178, 37.752474738953069 ], [ -122.511011033205719, 37.752487692588488 ], [ -122.511014844689754, 37.752500675991762 ], [ -122.511020366286843, 37.752512942917527 ], [ -122.511024177420595, 37.752525926051767 ], [ -122.511026259163927, 37.752538938971881 ], [ -122.511028360165199, 37.752552637759649 ], [ -122.511032524332322, 37.752578663038605 ], [ -122.511033248973078, 37.752605433757282 ], [ -122.511030496930232, 37.752631577332984 ], [ -122.511029139131608, 37.75264533514347 ], [ -122.511030233600934, 37.752813569447106 ], [ -122.511027591948121, 37.752907698414738 ], [ -122.511023202651316, 37.753001170732233 ], [ -122.511017102857721, 37.753095358982122 ], [ -122.511007544911607, 37.753189606240724 ], [ -122.511045097099611, 37.75342657943726 ], [ -122.511071439929921, 37.753568973002693 ], [ -122.511099511595958, 37.7537113370581 ], [ -122.511110666857206, 37.753739990285347 ], [ -122.51113816393935, 37.753797207403004 ], [ -122.511167297244739, 37.753850963138049 ], [ -122.511191001766875, 37.753895883818785 ], [ -122.511212977231722, 37.753940834002691 ], [ -122.511234971305953, 37.753986470610634 ], [ -122.511275501018872, 37.754077803112054 ], [ -122.511285596295252, 37.754131196705785 ], [ -122.511275500500716, 37.754141670188282 ], [ -122.511267152377243, 37.754152800589303 ], [ -122.511258841417288, 37.754165303846627 ], [ -122.51125398864481, 37.754177748360249 ], [ -122.511249154438758, 37.754190878752958 ], [ -122.511246439571536, 37.754218394908946 ], [ -122.511248521739574, 37.754231407540907 ], [ -122.511252351238468, 37.754245077098325 ], [ -122.511256162847417, 37.754258060215321 ], [ -122.511263413723356, 37.754270298166247 ], [ -122.511270646011127, 37.75428184941368 ], [ -122.511281336136037, 37.754293341373469 ], [ -122.511290279285674, 37.754304176676023 ], [ -122.511297511580892, 37.754315727921757 ], [ -122.511301304272081, 37.754328024614594 ], [ -122.51130511555543, 37.7543410080103 ], [ -122.511305450050784, 37.754353363447571 ], [ -122.511302344945619, 37.754366464607017 ], [ -122.511299221255896, 37.754378879337885 ], [ -122.511292620796496, 37.754390666933737 ], [ -122.511284272301779, 37.754401797341401 ], [ -122.511274158225476, 37.754411584114365 ], [ -122.511262296127953, 37.754420714247495 ], [ -122.51124864918124, 37.754427814602913 ], [ -122.511234965066222, 37.754433542099882 ], [ -122.511205457998457, 37.754493792524343 ], [ -122.511174612954918, 37.754504620093513 ], [ -122.511188723552863, 37.754578547809551 ], [ -122.511196847828685, 37.754623047899784 ], [ -122.511172119152874, 37.754668108364662 ], [ -122.511186378431859, 37.754747527231643 ], [ -122.511164047430796, 37.754817269614293 ], [ -122.511168079798153, 37.754966224575647 ], [ -122.511187639253137, 37.754985806682214 ], [ -122.511182209413036, 37.755040838983689 ], [ -122.511152553395789, 37.755095597687138 ], [ -122.511140988488648, 37.755115710660888 ], [ -122.511131170290469, 37.755200347899923 ], [ -122.511137026593502, 37.755224970799595 ], [ -122.511151546101601, 37.755313999934657 ], [ -122.511172052652412, 37.755368589625292 ], [ -122.511185234625046, 37.75540819590843 ], [ -122.511212230658316, 37.755446879976844 ], [ -122.511220633780624, 37.755501676208965 ], [ -122.511245788883045, 37.755536270664308 ], [ -122.511246718045257, 37.755570592079458 ], [ -122.511273603014288, 37.755605157557042 ], [ -122.511268303269489, 37.755664994580059 ], [ -122.511302921291062, 37.755793511928204 ], [ -122.51129135632344, 37.755813625188885 ], [ -122.511297751657864, 37.755858154497574 ], [ -122.51132993529248, 37.755896749458273 ], [ -122.511344307286322, 37.755916419796833 ], [ -122.51135098142602, 37.755971245525423 ], [ -122.511358975860517, 37.756010940596234 ], [ -122.511372157693486, 37.756050546585421 ], [ -122.51138067251722, 37.756109461644371 ], [ -122.51138760653366, 37.756173897095294 ], [ -122.511415290932803, 37.756237978675102 ], [ -122.51144193355438, 37.756327487882515 ], [ -122.511450857327816, 37.756401503804241 ], [ -122.511444739922965, 37.756431138262307 ], [ -122.511465507194529, 37.756495337885667 ], [ -122.511475248786056, 37.756599556916427 ], [ -122.511489639220827, 37.756683781260584 ], [ -122.511510945933878, 37.756767887008252 ], [ -122.511505516202988, 37.756822919307787 ], [ -122.511507114604001, 37.756881952399702 ], [ -122.511540803935873, 37.756976147977831 ], [ -122.51151021846853, 37.756996585892097 ], [ -122.511537215240679, 37.757035269600948 ], [ -122.511550805913657, 37.75708997726138 ], [ -122.511552014025696, 37.757134594811419 ], [ -122.51153474073044, 37.7571994439623 ], [ -122.511545151615906, 37.757328374109882 ], [ -122.511565380212119, 37.7573726672926 ], [ -122.511548775980131, 37.757462227577349 ], [ -122.511570621660383, 37.757566239995974 ], [ -122.511588991755985, 37.757605757952987 ], [ -122.511636236094873, 37.757689420961349 ], [ -122.511627217721312, 37.75780357460139 ], [ -122.511645866365058, 37.757853388698848 ], [ -122.511694113049955, 37.758229588585031 ], [ -122.511742993592506, 37.758437524775317 ], [ -122.511846760303001, 37.759011245676845 ], [ -122.511857097632088, 37.75913743032006 ], [ -122.511865631081335, 37.759260898772276 ], [ -122.511870706825988, 37.759384426245269 ], [ -122.511867805759621, 37.759468945686322 ], [ -122.511886956563586, 37.759537293011533 ], [ -122.511894319592614, 37.759553649204342 ], [ -122.511899972344324, 37.759570721336786 ], [ -122.511907335379505, 37.759587077528693 ], [ -122.511912969200509, 37.759603463238605 ], [ -122.511924273692642, 37.75963760779338 ], [ -122.511928197239044, 37.759654709442891 ], [ -122.511933831069797, 37.759671095151603 ], [ -122.511941677473203, 37.759705298186844 ], [ -122.511943890051924, 37.759723115788141 ], [ -122.511947812915679, 37.759740217448552 ], [ -122.511954395243222, 37.75979161123707 ], [ -122.511954878597919, 37.75980945808243 ], [ -122.51195707224619, 37.759826589261372 ], [ -122.511958020381513, 37.759861597073268 ], [ -122.511956756283539, 37.759878787553092 ], [ -122.511957221055894, 37.759895948245067 ], [ -122.511955975187334, 37.759913824609214 ], [ -122.511953445935674, 37.759948205037048 ], [ -122.511904504571447, 37.760440750181104 ], [ -122.511896527982401, 37.760465608886555 ], [ -122.511890205925951, 37.76048769264321 ], [ -122.511883865275365, 37.760509089971798 ], [ -122.511879272104622, 37.760531144215527 ], [ -122.511874661032579, 37.760552512019558 ], [ -122.511865475369248, 37.760596620493857 ], [ -122.511856884580055, 37.760662694650442 ], [ -122.511852347147268, 37.760750675453501 ], [ -122.51185415039285, 37.760817258929578 ], [ -122.51185647452489, 37.76083919509459 ], [ -122.511857069411604, 37.760861160777161 ], [ -122.511859412136133, 37.760883783369522 ], [ -122.511863465519539, 37.760905690016429 ], [ -122.511865789657108, 37.760927626180887 ], [ -122.511869842698943, 37.760949532833308 ], [ -122.511875625684155, 37.760971409955765 ], [ -122.511879679077154, 37.760993316601748 ], [ -122.511885442786451, 37.761014507307813 ], [ -122.511897008433721, 37.761058261556201 ], [ -122.511926981734348, 37.761142906550255 ], [ -122.511936204314608, 37.76116403793533 ], [ -122.511954649505725, 37.76120630125228 ], [ -122.511963853517884, 37.761226746482016 ], [ -122.511996653008623, 37.761287993613372 ], [ -122.51202705467847, 37.761324558853467 ], [ -122.512064168550651, 37.761353455306384 ], [ -122.512085012456453, 37.761420400744697 ], [ -122.512126086793671, 37.761531638678171 ], [ -122.51214611271017, 37.76156838129576 ], [ -122.512202471774316, 37.761605190090663 ], [ -122.51220306676943, 37.761627155768551 ], [ -122.512286833872011, 37.761909350986301 ], [ -122.512330121233489, 37.762102273976545 ], [ -122.512359816513452, 37.762176622160425 ], [ -122.512400687481886, 37.762280309551663 ], [ -122.512412755489066, 37.762406464549109 ], [ -122.512472852658917, 37.762517377837653 ], [ -122.51242023100265, 37.762682408319826 ], [ -122.512395388918449, 37.762787217676667 ], [ -122.5123251575382, 37.763004741639399 ], [ -122.512318128822102, 37.763064608432281 ], [ -122.512275063725824, 37.763199258620396 ], [ -122.512347657434475, 37.763452114765002 ], [ -122.512370305614013, 37.763585643570899 ], [ -122.51245827791935, 37.763703634850181 ], [ -122.51249862900157, 37.763851969475809 ], [ -122.512536692779477, 37.763915873550189 ], [ -122.512547533618658, 37.763932857061576 ], [ -122.512582157093107, 37.763997506608895 ], [ -122.512647704491329, 37.764117941165772 ], [ -122.512695196290764, 37.764146660498668 ], [ -122.512734264345909, 37.764183764321103 ], [ -122.512737091420831, 37.764288101230889 ], [ -122.512775416013923, 37.764361614927097 ], [ -122.512777034178313, 37.764421334077248 ], [ -122.512751987430036, 37.764518593055108 ], [ -122.512781479493952, 37.764585390130065 ], [ -122.512774860188117, 37.764660358327284 ], [ -122.51278551563432, 37.764734344784699 ], [ -122.512761491760273, 37.764869356967338 ], [ -122.512743882579386, 37.764921850254765 ], [ -122.512717422071987, 37.76496694049434 ], [ -122.512684621435739, 37.765161162553468 ], [ -122.512669634563863, 37.765310442023306 ], [ -122.512654461644431, 37.765452857218328 ], [ -122.512646410035117, 37.765474970525723 ], [ -122.51263958593637, 37.765542388282462 ], [ -122.512631627607334, 37.765631800678314 ], [ -122.512652064044445, 37.76568364430058 ], [ -122.512693345840233, 37.765802432929902 ], [ -122.512704615499302, 37.765899071734495 ], [ -122.512725051707562, 37.765950915073049 ], [ -122.512700618145246, 37.766070825824592 ], [ -122.512768157254058, 37.76613697348678 ], [ -122.512789393732405, 37.766218333432967 ], [ -122.512782253924286, 37.766337948881301 ], [ -122.512802690660749, 37.766389792471095 ], [ -122.512831774306832, 37.766441488397447 ], [ -122.512880476379308, 37.766514825114292 ], [ -122.512887749430135, 37.76678321796404 ], [ -122.512892604360289, 37.766962375332177 ], [ -122.512931655400493, 37.766998792918841 ], [ -122.512961259283941, 37.767005841271946 ], [ -122.513017009002525, 37.767019997837075 ], [ -122.513065321321278, 37.767078919504563 ], [ -122.513078915989027, 37.767197493825428 ], [ -122.513107814109816, 37.767242325410123 ], [ -122.513081743662724, 37.767301830672046 ], [ -122.51310340834894, 37.767398978362927 ], [ -122.513123716454487, 37.7675098841043 ], [ -122.513078250436607, 37.767555985727952 ], [ -122.513071017262462, 37.76760830182581 ], [ -122.513091249913373, 37.767652594661705 ], [ -122.513076058720628, 37.767794323426109 ], [ -122.513058653709876, 37.76785436770038 ], [ -122.513040634413983, 37.767891759352018 ], [ -122.513052220422765, 37.767936200135772 ], [ -122.513081118807335, 37.767981031446666 ], [ -122.513072546502798, 37.768047792039297 ], [ -122.513084307659341, 37.768800949561466 ], [ -122.513105545245466, 37.768882309412746 ], [ -122.513112428659511, 37.76913628718308 ], [ -122.513087380753205, 37.769233545877434 ], [ -122.51312531757408, 37.76929264499158 ], [ -122.513091827049578, 37.769397602054994 ], [ -122.513085691671151, 37.769554284209093 ], [ -122.513145317112162, 37.770030553014749 ], [ -122.513104072344461, 37.770232473669928 ], [ -122.513083675037265, 37.770501338904026 ], [ -122.513146087813496, 37.77076123543462 ], [ -122.513127217898258, 37.771214121925311 ], [ -122.51313192303401, 37.771260053409627 ], [ -122.511055400217217, 37.771347479926334 ], [ -122.510495195112867, 37.771371059784514 ], [ -122.509894781266311, 37.771396329054475 ], [ -122.509894749698645, 37.771396032095495 ], [ -122.508867990729883, 37.771443447055226 ], [ -122.508823330922013, 37.771445496187766 ], [ -122.508780633594597, 37.771447480819759 ], [ -122.507750665782908, 37.771495034103232 ], [ -122.507750664399296, 37.771495034126787 ], [ -122.506991972993774, 37.771528822999358 ], [ -122.506685577396198, 37.771542340610623 ], [ -122.505610663486351, 37.771591537709703 ], [ -122.504544396347384, 37.771640577944709 ], [ -122.503472690942445, 37.771689380369601 ], [ -122.503472688521128, 37.771689380410749 ], [ -122.502399732131124, 37.771738148994636 ], [ -122.502399595949868, 37.771738155153713 ], [ -122.501328271899965, 37.77178724800941 ], [ -122.50025681025997, 37.771836337560785 ], [ -122.499183617695707, 37.771885446705888 ], [ -122.498113882732468, 37.771934487449556 ], [ -122.497047586931203, 37.771982773731914 ], [ -122.495972660610278, 37.77203188267292 ], [ -122.495971990075716, 37.772031913255347 ], [ -122.495972015995989, 37.772032015003532 ], [ -122.494903299427449, 37.772080795311069 ], [ -122.494902921073546, 37.772080894286702 ], [ -122.493833180817205, 37.772129896182108 ], [ -122.493832498174271, 37.772129926957135 ], [ -122.493832479293559, 37.77212966191987 ], [ -122.493316307377469, 37.772153213706439 ], [ -122.492761690869486, 37.772178231184974 ], [ -122.491688488076463, 37.772227272380952 ], [ -122.490617013718605, 37.772276274046327 ], [ -122.489539486385709, 37.772325343661755 ], [ -122.489539480863627, 37.772325473411478 ], [ -122.488471323394165, 37.772374169626119 ], [ -122.488470602075608, 37.772374307055074 ], [ -122.487399123482518, 37.77242327974907 ], [ -122.487398306387334, 37.772423316873983 ], [ -122.487398288926627, 37.772423078182946 ], [ -122.486678527930636, 37.772455879683093 ], [ -122.486334543235188, 37.772471439976606 ], [ -122.485261332297384, 37.772520422109807 ], [ -122.485152053625171, 37.772525429693054 ], [ -122.484194201052048, 37.772569061919981 ], [ -122.484194219251819, 37.772569315707138 ], [ -122.483119139145145, 37.772618264154566 ], [ -122.483119121668807, 37.772618024364625 ], [ -122.482048961146063, 37.772667157434498 ], [ -122.481947659007389, 37.77267180789157 ], [ -122.480978851643016, 37.772716079930653 ], [ -122.479904580478745, 37.772765580938412 ], [ -122.478848714480989, 37.772814028910268 ], [ -122.47883762078969, 37.772814536530767 ], [ -122.477766129509902, 37.772863421949047 ], [ -122.477069824745385, 37.772895630732648 ], [ -122.476694205661246, 37.772912858094969 ], [ -122.475613625589148, 37.772962410314676 ], [ -122.475613644972711, 37.772962670675476 ], [ -122.475612802305008, 37.772962709520556 ], [ -122.47455168367884, 37.773011391539193 ], [ -122.474550931211951, 37.773011425844139 ], [ -122.474550910293516, 37.773011133644289 ], [ -122.473737577092777, 37.773048416620476 ], [ -122.473427836194134, 37.773062613687692 ], [ -122.472297341321692, 37.773114423074823 ], [ -122.472219951938214, 37.773117969260745 ], [ -122.471762122569857, 37.773138947752848 ], [ -122.47124006836178, 37.773161981865066 ], [ -122.471240089434815, 37.773162280380667 ], [ -122.470162712316579, 37.773209791534974 ], [ -122.470162692059887, 37.773209510586071 ], [ -122.469517084069324, 37.773237987003441 ], [ -122.469092496140973, 37.773256712542192 ], [ -122.468348575135167, 37.773289518371953 ], [ -122.468023916207073, 37.773303833556405 ], [ -122.466952500298319, 37.773351323464517 ], [ -122.466951728424362, 37.773351356945881 ], [ -122.466373346760548, 37.773376599548058 ], [ -122.465883163277454, 37.773398204721545 ], [ -122.465331676538511, 37.773422509669793 ], [ -122.464811670328331, 37.773488744378348 ], [ -122.463755675044126, 37.773623241600568 ], [ -122.463749210177951, 37.773624065149079 ], [ -122.462683796526321, 37.773759751788596 ], [ -122.462535340858068, 37.773778657528119 ], [ -122.461620188227315, 37.77389548164836 ], [ -122.461619775372085, 37.773895534117642 ], [ -122.461619755154771, 37.7738952534419 ], [ -122.460552661960989, 37.774031133779268 ], [ -122.460552700773292, 37.774031358657659 ], [ -122.459486938645284, 37.774167197254911 ], [ -122.459486145343419, 37.77416729779403 ], [ -122.459486118442314, 37.77416693399686 ], [ -122.458795325509186, 37.774254885425997 ], [ -122.458371099123696, 37.774308895694055 ], [ -122.457134751103212, 37.774454490912483 ], [ -122.456283917173579, 37.774554834704738 ], [ -122.456283671603558, 37.774554866249353 ], [ -122.456283639851293, 37.774554711848936 ], [ -122.455898178089939, 37.774604132119862 ], [ -122.45525254468275, 37.774686906456331 ], [ -122.455033749574639, 37.77471323536281 ], [ -122.454683295611602, 37.774755406979118 ], [ -122.45468264773983, 37.77475548474694 ], [ -122.454642052912618, 37.774646438033749 ], [ -122.454474386066082, 37.77382381381878 ], [ -122.454383433186777, 37.773377561015685 ], [ -122.454285116857562, 37.772895177759331 ], [ -122.454083217765842, 37.771930404296491 ], [ -122.454018233133866, 37.771616238745679 ], [ -122.453979522461594, 37.771428395389663 ], [ -122.453902454621286, 37.771053837806122 ], [ -122.453902388799008, 37.771053479872258 ], [ -122.453726227138517, 37.770098080109292 ], [ -122.45361853828534, 37.769567547950977 ], [ -122.453536875229432, 37.769165225996225 ], [ -122.453536875207789, 37.7691652251725 ], [ -122.453445551985865, 37.76871045824668 ], [ -122.453352918070834, 37.768246336273791 ], [ -122.453352855873561, 37.76824602387866 ], [ -122.453165568246916, 37.767306553969036 ], [ -122.453075053112784, 37.766861619151193 ], [ -122.452996675368553, 37.766476342546461 ], [ -122.452947274458694, 37.766374150789915 ], [ -122.454592351139084, 37.766165584782662 ], [ -122.454592931223331, 37.766165511159706 ], [ -122.455121527013688, 37.766098468178491 ], [ -122.456616092088495, 37.765909015262118 ], [ -122.456823880275138, 37.765884275950789 ], [ -122.456913422826119, 37.76587361486397 ], [ -122.457189364808954, 37.765880549298529 ], [ -122.457438759694597, 37.76592231265932 ], [ -122.457489671310725, 37.765930838098136 ], [ -122.45751185755033, 37.765937046103922 ], [ -122.457789624362519, 37.766014767234282 ], [ -122.457788627971766, 37.765820072733575 ], [ -122.457756133601251, 37.765354151194842 ], [ -122.457718187977903, 37.764810068512688 ], [ -122.457700034267219, 37.764549766072378 ], [ -122.457702640928829, 37.764546749210723 ], [ -122.45765013969168, 37.76353311613984 ], [ -122.457827081738984, 37.763482288038738 ], [ -122.459790374597731, 37.762925938047687 ], [ -122.460842964058216, 37.762627642539876 ], [ -122.46084509456081, 37.762627108799968 ], [ -122.460684658382874, 37.760546523892096 ], [ -122.461770397151241, 37.760502041661596 ], [ -122.461770200794135, 37.760499231230455 ], [ -122.46284191307069, 37.760452254741963 ], [ -122.463911891482155, 37.760405344350922 ], [ -122.463781528402038, 37.758538181378015 ], [ -122.463651620775778, 37.756677450683235 ], [ -122.463554499932727, 37.755298102249476 ], [ -122.463580718915097, 37.755014148901829 ], [ -122.463627289771182, 37.754788065181785 ], [ -122.46367889740506, 37.754738571878264 ], [ -122.463722821262465, 37.754601920791259 ], [ -122.463838893966539, 37.75414750585891 ], [ -122.463842129576008, 37.753808596342253 ], [ -122.463777683069083, 37.753601657228067 ], [ -122.463640406958334, 37.753310851043111 ], [ -122.463399006031565, 37.752981452291863 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":23,"ZIP_CODE":94127,"ID":94127},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.458688935885434, 37.730751520241796 ], [ -122.459193144317396, 37.730602954490251 ], [ -122.459352156941819, 37.730515761910091 ], [ -122.459563710785162, 37.730368588301999 ], [ -122.459783802497654, 37.730109540441724 ], [ -122.459878403068345, 37.729884503080157 ], [ -122.459930163903692, 37.729706628889033 ], [ -122.459983752683073, 37.729522472170189 ], [ -122.460023966205156, 37.729195728883113 ], [ -122.460002483633559, 37.728739437629635 ], [ -122.460412720770037, 37.728739179843977 ], [ -122.460815517748841, 37.728680936862041 ], [ -122.460816315573013, 37.728681144164341 ], [ -122.460816314413918, 37.72868110023223 ], [ -122.460815856121073, 37.72868098095028 ], [ -122.46142222273329, 37.728330263725837 ], [ -122.461824751209633, 37.728118912555594 ], [ -122.462068476892256, 37.72804961327914 ], [ -122.462089038987699, 37.728047063364642 ], [ -122.462378284725844, 37.728011300874932 ], [ -122.462703368909061, 37.728024299159358 ], [ -122.462888197868679, 37.72805558978888 ], [ -122.46288814852555, 37.72805550243347 ], [ -122.462888304160828, 37.72805552868347 ], [ -122.462735876702908, 37.727784058577058 ], [ -122.462714226912738, 37.727738412010282 ], [ -122.462615761322709, 37.727529244060726 ], [ -122.462547067236983, 37.727225353979733 ], [ -122.462546035395761, 37.727106268284892 ], [ -122.462545638153259, 37.726997475605309 ], [ -122.46262180837526, 37.726335258944708 ], [ -122.462686726995429, 37.725774916753664 ], [ -122.462815474472038, 37.725482412532848 ], [ -122.462561310804759, 37.725391067720956 ], [ -122.46221285915388, 37.725265563681397 ], [ -122.462212628293415, 37.725265491161082 ], [ -122.462280269039496, 37.725147301470763 ], [ -122.462279803400207, 37.725042766873585 ], [ -122.462279017236384, 37.724866230039204 ], [ -122.462276854232826, 37.724380477322995 ], [ -122.462276505002905, 37.72427060589213 ], [ -122.462276504226139, 37.724270445482276 ], [ -122.46227362197132, 37.723637318172813 ], [ -122.462271183905713, 37.723021052793868 ], [ -122.462431367748181, 37.72300886812026 ], [ -122.462654991355222, 37.722947907918154 ], [ -122.46284032675716, 37.72280173266644 ], [ -122.463189003103793, 37.722604614839412 ], [ -122.463751413929884, 37.722395206040865 ], [ -122.463981569397532, 37.722327034291936 ], [ -122.464293670852172, 37.722113739171022 ], [ -122.464434759676408, 37.721907819106278 ], [ -122.464484214240997, 37.721680008850619 ], [ -122.465390989272279, 37.721673877359507 ], [ -122.46556367354151, 37.721672709140641 ], [ -122.4659783260431, 37.721669902411627 ], [ -122.466277766029194, 37.721667874912988 ], [ -122.46658847710232, 37.721665769467251 ], [ -122.467028877336375, 37.721662784936917 ], [ -122.467185158975667, 37.721661725062667 ], [ -122.467615322899292, 37.721658807641923 ], [ -122.467922730856742, 37.721656721708847 ], [ -122.468076091423683, 37.72165575669883 ], [ -122.468660023251203, 37.721651832680671 ], [ -122.468660429184538, 37.721651830291869 ], [ -122.468975070634144, 37.721649661930378 ], [ -122.469739202269693, 37.721644441148221 ], [ -122.469739672850537, 37.721644437949429 ], [ -122.469877506730057, 37.721643501943454 ], [ -122.470778213987501, 37.721637364239811 ], [ -122.47077894458495, 37.721637359433757 ], [ -122.47167373604637, 37.72163130643554 ], [ -122.471759517799796, 37.721671075214203 ], [ -122.471759949192219, 37.721671054807977 ], [ -122.471760271986454, 37.721671203510112 ], [ -122.471983398728909, 37.721660603850793 ], [ -122.472161906508475, 37.721641204494453 ], [ -122.472321961375684, 37.721623810905996 ], [ -122.472322354823248, 37.721623768058436 ], [ -122.472214746614711, 37.723731792113433 ], [ -122.472056885104323, 37.726824049746483 ], [ -122.471915497296948, 37.728810174564472 ], [ -122.47190716730239, 37.728927188202036 ], [ -122.471594286340178, 37.728902143540118 ], [ -122.47154865397853, 37.729783977184617 ], [ -122.471866468726006, 37.729784522464136 ], [ -122.471849871701991, 37.730103151702181 ], [ -122.471838445445158, 37.730322499137451 ], [ -122.471797435951885, 37.731032354724164 ], [ -122.471741907147091, 37.731926920887339 ], [ -122.471660927786132, 37.733231459533314 ], [ -122.47162189337304, 37.733860262567148 ], [ -122.471569341481938, 37.734706810815084 ], [ -122.471400819161929, 37.735001415396148 ], [ -122.471068098407827, 37.73560670794447 ], [ -122.470574087980822, 37.736589028767121 ], [ -122.470679955794623, 37.736646992229609 ], [ -122.470805946330771, 37.736773656566506 ], [ -122.470869802376484, 37.736951620802394 ], [ -122.470924096654457, 37.737574149498428 ], [ -122.470962730039105, 37.737648904688974 ], [ -122.471094271054184, 37.739515149668783 ], [ -122.471225939871744, 37.741383106823285 ], [ -122.470104939284042, 37.741425112172415 ], [ -122.46903011455143, 37.741472060437133 ], [ -122.468671688881855, 37.741487738762387 ], [ -122.468561098363182, 37.741503345390441 ], [ -122.467747743753378, 37.743412622582262 ], [ -122.4668594971902, 37.743490862582995 ], [ -122.466043187720601, 37.743555382675872 ], [ -122.465806989998114, 37.743574050343277 ], [ -122.464736798394597, 37.743658625608425 ], [ -122.463685995946705, 37.743749409879626 ], [ -122.461381097416904, 37.745569497508143 ], [ -122.459174375277186, 37.74728632007151 ], [ -122.45872851739027, 37.746755429911865 ], [ -122.458610345848541, 37.746751806518411 ], [ -122.458509634961302, 37.746778882011192 ], [ -122.458499844031735, 37.746781514247793 ], [ -122.457949639713704, 37.746779214661537 ], [ -122.457582024204598, 37.746744476612157 ], [ -122.457457161051892, 37.746732677593577 ], [ -122.457301186299645, 37.746714064689691 ], [ -122.457166741019165, 37.746698021157933 ], [ -122.457089836487938, 37.746682896092409 ], [ -122.456314708164584, 37.746530446031059 ], [ -122.455687935660293, 37.746380796419501 ], [ -122.455466732538028, 37.746327980692172 ], [ -122.454664097215115, 37.746106168076913 ], [ -122.454664096869323, 37.746106168082655 ], [ -122.454184426826714, 37.745845539203287 ], [ -122.453916429980183, 37.745699922279499 ], [ -122.453916002908102, 37.745699915076791 ], [ -122.453645157964232, 37.745695560010326 ], [ -122.453495886255311, 37.745691252478657 ], [ -122.453376023619995, 37.74568779337109 ], [ -122.452386953750349, 37.745691424670198 ], [ -122.45222754649042, 37.74569200904012 ], [ -122.452091117231191, 37.74568511552728 ], [ -122.451828632556612, 37.745671851179097 ], [ -122.45181666119403, 37.745671246259803 ], [ -122.45169226258335, 37.745606748366605 ], [ -122.451624634588612, 37.745534387540218 ], [ -122.451624359716789, 37.745534037461439 ], [ -122.450586742649079, 37.744213121547148 ], [ -122.450592179132485, 37.744090792307063 ], [ -122.449918612648133, 37.7432716748716 ], [ -122.449790244582587, 37.743257317336237 ], [ -122.449582834428256, 37.743065029012413 ], [ -122.449355958412127, 37.74292182098899 ], [ -122.44913731277687, 37.742828607669701 ], [ -122.448820428983325, 37.742748693538836 ], [ -122.44848892294759, 37.742704730693937 ], [ -122.447384659150103, 37.742608987228614 ], [ -122.447110638216571, 37.742580552169777 ], [ -122.446840940400392, 37.742519081676662 ], [ -122.446657325560608, 37.742442453734959 ], [ -122.446516770315029, 37.742358933848621 ], [ -122.446410971977912, 37.742281706494659 ], [ -122.446323687641325, 37.742184944882247 ], [ -122.446256735689062, 37.742072052701658 ], [ -122.44619443459527, 37.741872554265036 ], [ -122.446156199006268, 37.741535311478742 ], [ -122.44609965968975, 37.741357693405078 ], [ -122.44605943275991, 37.741274575873817 ], [ -122.445964300022951, 37.741198753406074 ], [ -122.445964326755799, 37.741198730714288 ], [ -122.445897881975142, 37.741116602917764 ], [ -122.445523457193502, 37.740972470791057 ], [ -122.445195592772691, 37.740920623913645 ], [ -122.444911120433531, 37.740872114678645 ], [ -122.444681667799003, 37.740793092051724 ], [ -122.444518249198694, 37.740692998244214 ], [ -122.444366170223589, 37.740575544006177 ], [ -122.444209640252396, 37.740380617798955 ], [ -122.444098337188322, 37.740234069945657 ], [ -122.443922038304507, 37.740088462716592 ], [ -122.443694223373313, 37.739971345925731 ], [ -122.44341918472557, 37.739902333376541 ], [ -122.443019593631774, 37.739814475654143 ], [ -122.442856748556963, 37.739767263698369 ], [ -122.44271760477325, 37.739682237717481 ], [ -122.442597107319372, 37.739547858254923 ], [ -122.442525191527608, 37.739448400155375 ], [ -122.44250398997913, 37.739238469269011 ], [ -122.442627783322195, 37.738564600951854 ], [ -122.442625226229453, 37.738313911390271 ], [ -122.442579349780331, 37.738171569110513 ], [ -122.44244617419956, 37.737799536516135 ], [ -122.442403843641571, 37.737639851367689 ], [ -122.442421017736137, 37.737438198043598 ], [ -122.442488947503193, 37.737289169592358 ], [ -122.442657322787326, 37.737118881702763 ], [ -122.443602235926093, 37.736502583404238 ], [ -122.443683487927487, 37.73653803376142 ], [ -122.443842427221611, 37.736579809812575 ], [ -122.444038854214782, 37.736575290313169 ], [ -122.444187688286519, 37.736528330103852 ], [ -122.444306066715512, 37.736409368208768 ], [ -122.444405709994072, 37.736218559056141 ], [ -122.444433832419023, 37.736070356056409 ], [ -122.444478073435704, 37.735720552668923 ], [ -122.444456723960371, 37.735604611251425 ], [ -122.444414926545633, 37.735547154436588 ], [ -122.444280987817251, 37.735484218369663 ], [ -122.444190291728404, 37.735407445883219 ], [ -122.443868794328736, 37.73522293273804 ], [ -122.443498916758756, 37.735041781619209 ], [ -122.443241645458286, 37.734935120886668 ], [ -122.44298838327488, 37.734915120161688 ], [ -122.442971182760076, 37.734564427784264 ], [ -122.444336617762318, 37.734557437927307 ], [ -122.445353637361492, 37.734548793463254 ], [ -122.445350300553969, 37.734322189420951 ], [ -122.445385609625191, 37.734245207403205 ], [ -122.445695180894745, 37.733970768223749 ], [ -122.445782219446897, 37.733850288395629 ], [ -122.445605378551107, 37.733800711254226 ], [ -122.444320121334613, 37.733811072362919 ], [ -122.444320397855094, 37.733087687518228 ], [ -122.44431434932487, 37.732346901474607 ], [ -122.444299518643774, 37.732277163251723 ], [ -122.444288854528963, 37.731568915105107 ], [ -122.446578400413941, 37.7315490470612 ], [ -122.447291821211039, 37.731547153756608 ], [ -122.448866265260094, 37.731542959168735 ], [ -122.451146666771351, 37.731536846888879 ], [ -122.453411343594681, 37.731530646828205 ], [ -122.453590911574565, 37.731488405776453 ], [ -122.454915878760758, 37.731464997636976 ], [ -122.455762555159509, 37.731348802743547 ], [ -122.456607498028021, 37.731187733113579 ], [ -122.457474238952088, 37.730997495241198 ], [ -122.458222500186622, 37.73077738189027 ], [ -122.458472470688633, 37.730752827866375 ], [ -122.458688935885434, 37.730751520241796 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":24,"ZIP_CODE":94117,"ID":94117},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.456669912105653, 37.763814688946653 ], [ -122.45765013969168, 37.76353311613984 ], [ -122.457702640928829, 37.764546749210723 ], [ -122.457700034267219, 37.764549766072378 ], [ -122.457718187977903, 37.764810068512688 ], [ -122.457756133601251, 37.765354151194842 ], [ -122.457788627971766, 37.765820072733575 ], [ -122.457789624362519, 37.766014767234282 ], [ -122.45751185755033, 37.765937046103922 ], [ -122.457489349789753, 37.765930717627668 ], [ -122.457438759694597, 37.76592231265932 ], [ -122.457189364808954, 37.765880549298529 ], [ -122.456913422826119, 37.76587361486397 ], [ -122.456823880275138, 37.765884275950789 ], [ -122.456616092088495, 37.765909015262118 ], [ -122.455121527013688, 37.766098468178491 ], [ -122.454592923214804, 37.766165469813686 ], [ -122.452947253369459, 37.766374046206209 ], [ -122.452946199816822, 37.766368851617294 ], [ -122.452945976378615, 37.766368855319321 ], [ -122.452947033686613, 37.766374074293772 ], [ -122.452996080750566, 37.76647606094825 ], [ -122.453164789642727, 37.767306895129927 ], [ -122.453352288400112, 37.768246025041712 ], [ -122.453445551985865, 37.76871045824668 ], [ -122.453536875207789, 37.7691652251725 ], [ -122.453536875229432, 37.769165225996225 ], [ -122.45361853828534, 37.769567547950977 ], [ -122.453726227138517, 37.770098080109292 ], [ -122.453902388799008, 37.771053479872258 ], [ -122.453902454621286, 37.771053837806122 ], [ -122.453979522461594, 37.771428395389663 ], [ -122.454018233133866, 37.771616238745679 ], [ -122.454083217765842, 37.771930404296491 ], [ -122.454285116857562, 37.772895177759331 ], [ -122.454383433186777, 37.773377561015685 ], [ -122.454474386066082, 37.77382381381878 ], [ -122.454642052912618, 37.774646438033749 ], [ -122.45468264773983, 37.77475548474694 ], [ -122.453003330637316, 37.774970754669006 ], [ -122.452810237317621, 37.774995318605924 ], [ -122.452963825070867, 37.775750129254348 ], [ -122.45318832797058, 37.776853425180988 ], [ -122.453384996187339, 37.777826863341367 ], [ -122.452431111623397, 37.777939652339285 ], [ -122.451543139139602, 37.778052106408275 ], [ -122.450826415883952, 37.778142868140662 ], [ -122.450654812483819, 37.778164598609756 ], [ -122.449767079183658, 37.778277008331997 ], [ -122.448885763577039, 37.778388598994987 ], [ -122.448879206948348, 37.778389428728616 ], [ -122.447997721370214, 37.778501033647089 ], [ -122.447039806751391, 37.778622307248391 ], [ -122.446846469920573, 37.777669108909684 ], [ -122.445155752336433, 37.777886506805444 ], [ -122.443506919728407, 37.778089213415292 ], [ -122.441865967226732, 37.778299511701405 ], [ -122.441865967212379, 37.778299511152262 ], [ -122.441865640558632, 37.778299552792262 ], [ -122.441865640580161, 37.778299553615973 ], [ -122.440213334218711, 37.778511463388014 ], [ -122.43855227772093, 37.778724107938281 ], [ -122.437707163233824, 37.778832380147421 ], [ -122.436884629197735, 37.778937753600381 ], [ -122.435241012398947, 37.779144878458894 ], [ -122.433595938040227, 37.779354585436536 ], [ -122.431951802315041, 37.779564148987781 ], [ -122.430233236584385, 37.779782794230314 ], [ -122.430047265291023, 37.778850928515844 ], [ -122.429849199803343, 37.777919295570904 ], [ -122.429686883301301, 37.776976022351889 ], [ -122.429626330769736, 37.776513151917612 ], [ -122.429622603726443, 37.776331628240193 ], [ -122.42955405641294, 37.77604428584678 ], [ -122.429365859793393, 37.775111180032617 ], [ -122.429272630354163, 37.774648924607646 ], [ -122.429178384487102, 37.774181626717471 ], [ -122.429178383795261, 37.774181626728783 ], [ -122.42917834319843, 37.774181422747475 ], [ -122.428990051967787, 37.773247800757233 ], [ -122.428802101899663, 37.772315846507482 ], [ -122.428708105393241, 37.771849753810166 ], [ -122.428614043687816, 37.771383330257258 ], [ -122.428520173517541, 37.770917853912216 ], [ -122.428426180541749, 37.770451760600665 ], [ -122.428428952948465, 37.770451409238284 ], [ -122.428218351470321, 37.769440923680406 ], [ -122.428991181191208, 37.769394223715665 ], [ -122.429127985682982, 37.769456128057627 ], [ -122.429905643091914, 37.769407921549679 ], [ -122.430247361256178, 37.769392261627225 ], [ -122.431356624058139, 37.76932091157898 ], [ -122.431570380896062, 37.769307161387864 ], [ -122.432464341208131, 37.769249650838944 ], [ -122.433572207534368, 37.769178369516744 ], [ -122.43489319213792, 37.769113797429938 ], [ -122.435794213398353, 37.769058453615109 ], [ -122.436588267341477, 37.76900080227221 ], [ -122.436625219679314, 37.768918977544402 ], [ -122.436478247038266, 37.767274662557512 ], [ -122.436980399947345, 37.767244348801164 ], [ -122.43729899343451, 37.767221930124791 ], [ -122.437291829491301, 37.767045826510717 ], [ -122.437288601235366, 37.766922046842083 ], [ -122.437333800177683, 37.766762171805773 ], [ -122.4374853951944, 37.766644323028956 ], [ -122.437684727134425, 37.766587115085294 ], [ -122.437879374385105, 37.76661079550852 ], [ -122.438219625977609, 37.766701399454838 ], [ -122.438291383601225, 37.766725780787596 ], [ -122.438386133953244, 37.766664738151036 ], [ -122.438555364477878, 37.766297386980668 ], [ -122.439501839688162, 37.766575524599709 ], [ -122.441241683591315, 37.765270858517731 ], [ -122.441931912880605, 37.765295099009755 ], [ -122.442086687309455, 37.765324419445463 ], [ -122.443210588891787, 37.765339994614024 ], [ -122.443347278899211, 37.765332794099429 ], [ -122.443263297846215, 37.765217752592115 ], [ -122.443278634379993, 37.764726164248771 ], [ -122.443215275433289, 37.764557545459958 ], [ -122.443199827408847, 37.764468898600072 ], [ -122.44294975946913, 37.764109072128207 ], [ -122.442951036556252, 37.763677959114567 ], [ -122.443247528217242, 37.763690608015906 ], [ -122.443434935848089, 37.763875622244342 ], [ -122.44441170822752, 37.76398692869914 ], [ -122.444663866724483, 37.763326501903514 ], [ -122.445692026290132, 37.762347953618033 ], [ -122.445825769194499, 37.762264137786076 ], [ -122.445930590545728, 37.762233223779305 ], [ -122.446167833254592, 37.762219287792306 ], [ -122.446246565080784, 37.762246873735464 ], [ -122.44628722735257, 37.762310164748847 ], [ -122.446391621016517, 37.76223195154369 ], [ -122.446401427721412, 37.762069683149655 ], [ -122.446384044294348, 37.761816426422072 ], [ -122.44642928686055, 37.76181245987528 ], [ -122.446783402935864, 37.761781413739634 ], [ -122.446783403627563, 37.761781413728215 ], [ -122.44652973647915, 37.761396213495424 ], [ -122.446409895656728, 37.761094344377824 ], [ -122.446433636964471, 37.761006719141555 ], [ -122.446579328750119, 37.76090155472 ], [ -122.446866213158088, 37.76042156830691 ], [ -122.446952816919733, 37.760170129150154 ], [ -122.447157396221257, 37.759660681065917 ], [ -122.447394862769713, 37.759372842727622 ], [ -122.447681986744499, 37.759189835272018 ], [ -122.448080121328474, 37.759090506458826 ], [ -122.448534508559618, 37.759045234831405 ], [ -122.448576884007139, 37.759648639321185 ], [ -122.449214958651069, 37.759610853827809 ], [ -122.451553087455522, 37.759472365763493 ], [ -122.451578365088082, 37.759597660221687 ], [ -122.451956989358152, 37.761478249938222 ], [ -122.451957007208804, 37.761478336720671 ], [ -122.452096188532394, 37.76216681475799 ], [ -122.452096203587132, 37.762166887302627 ], [ -122.452181289886042, 37.762586053251901 ], [ -122.452233043763783, 37.762842560862168 ], [ -122.452399889409662, 37.763669482365366 ], [ -122.452569353429794, 37.764509361471809 ], [ -122.452569580477117, 37.764510482582956 ], [ -122.452569807022613, 37.764510478830069 ], [ -122.452569575903098, 37.764509334437378 ], [ -122.45351591398105, 37.764395394431268 ], [ -122.453114639516684, 37.762361563728888 ], [ -122.453744673977482, 37.761878784498755 ], [ -122.454009611320302, 37.762667869264533 ], [ -122.454946081907835, 37.7631787014639 ], [ -122.454945541962573, 37.76366305305779 ], [ -122.454845151642289, 37.763732313486969 ], [ -122.454179864833876, 37.763912200042988 ], [ -122.454217265424234, 37.764310945798535 ], [ -122.455466091062405, 37.764160565952579 ], [ -122.455781065686594, 37.764070070210742 ], [ -122.456669912105653, 37.763814688946653 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":25,"ZIP_CODE":94132,"ID":94132},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.508287627239582, 37.733266432915535 ], [ -122.508283610098232, 37.733309766760698 ], [ -122.508258422649121, 37.733337665998171 ], [ -122.50825465624375, 37.73339026610973 ], [ -122.508261381386347, 37.733447151520778 ], [ -122.508260632832361, 37.733547429417492 ], [ -122.508268595371646, 37.733586094926054 ], [ -122.508272540744613, 37.733668094001438 ], [ -122.508265010681669, 37.733709427205042 ], [ -122.508286802179072, 37.733747856989588 ], [ -122.508296363517715, 37.733781688010566 ], [ -122.508300683356651, 37.733813548133803 ], [ -122.508285681955428, 37.733834406267761 ], [ -122.508267344574577, 37.733859785121595 ], [ -122.508247213289522, 37.733882790933777 ], [ -122.508237692618366, 37.73429843541993 ], [ -122.508237373460645, 37.734350633938469 ], [ -122.5082471948962, 37.734394074716711 ], [ -122.508256635722688, 37.734423443934411 ], [ -122.508245332959405, 37.734453167005526 ], [ -122.50826415897464, 37.734509845871564 ], [ -122.508256016313609, 37.734528526845153 ], [ -122.50825693455738, 37.734562505189558 ], [ -122.508280334704608, 37.734596443696226 ], [ -122.508271010987045, 37.734635403850064 ], [ -122.508266062787172, 37.734708283416225 ], [ -122.508267732334318, 37.734770062222154 ], [ -122.508272423230224, 37.734815650964592 ], [ -122.508314825176313, 37.734912789977905 ], [ -122.508324461220354, 37.734949366434215 ], [ -122.508350693626355, 37.735024118117309 ], [ -122.508408601293198, 37.735055064766357 ], [ -122.508454835865138, 37.735102005566297 ], [ -122.508462371966132, 37.735124883136479 ], [ -122.508476933993705, 37.735151761694588 ], [ -122.508477796681021, 37.735183680465923 ], [ -122.508497058717865, 37.735256490973484 ], [ -122.508537000388259, 37.735326545054548 ], [ -122.508539031954456, 37.735401708981378 ], [ -122.508528202252251, 37.735448935792135 ], [ -122.506718399360096, 37.735463437562494 ], [ -122.506718392445464, 37.735463437680252 ], [ -122.506717419598758, 37.735469757763546 ], [ -122.506541776696594, 37.735470423847289 ], [ -122.506142139643117, 37.735471938745221 ], [ -122.505711404999388, 37.735473569905054 ], [ -122.505257352091178, 37.735475287872006 ], [ -122.504189206002195, 37.735470928034005 ], [ -122.503104759187963, 37.735466491452826 ], [ -122.50249812714712, 37.735433799348435 ], [ -122.50206735537283, 37.735396211199387 ], [ -122.502021315734993, 37.73539219398544 ], [ -122.501556481916552, 37.735330499723666 ], [ -122.501555214836827, 37.735330188314435 ], [ -122.501291847576297, 37.735265403511711 ], [ -122.501214897179494, 37.735242075875206 ], [ -122.501097483348147, 37.735206481207975 ], [ -122.501097483002411, 37.735206481213844 ], [ -122.500970549161394, 37.735174012383368 ], [ -122.500888239775747, 37.73515295885273 ], [ -122.500650675572956, 37.735059919015036 ], [ -122.500571951887039, 37.735029088020617 ], [ -122.500289079616721, 37.734896880574155 ], [ -122.500140914702612, 37.734827630984967 ], [ -122.499430330098079, 37.734471850699563 ], [ -122.499196335607635, 37.734311616338935 ], [ -122.499180283, 37.734301056816975 ], [ -122.499086082983126, 37.734239092175393 ], [ -122.498948533172893, 37.734128137325406 ], [ -122.498483756692679, 37.733969859923228 ], [ -122.49837749236211, 37.733942575660954 ], [ -122.498050148013945, 37.73385852689691 ], [ -122.497707486783483, 37.733793124978028 ], [ -122.497675024009141, 37.73378860832171 ], [ -122.497251243304476, 37.7337296478455 ], [ -122.4970611531011, 37.733738715676616 ], [ -122.496807213285692, 37.733750829171804 ], [ -122.496636264393828, 37.733770812006838 ], [ -122.496636262010625, 37.733770813420726 ], [ -122.496635997165527, 37.733770842906516 ], [ -122.496635997172902, 37.733770843181105 ], [ -122.496635991376749, 37.733770846301013 ], [ -122.496448643026866, 37.733877460645239 ], [ -122.494403119131789, 37.733960247035334 ], [ -122.493941605376719, 37.733981316545631 ], [ -122.493941607430031, 37.733981341508411 ], [ -122.494014877350082, 37.735023413250019 ], [ -122.4940149282546, 37.735024137316628 ], [ -122.493857150107345, 37.735028823489081 ], [ -122.493857076611491, 37.73502785037892 ], [ -122.493407285267097, 37.734856242527158 ], [ -122.493406966558723, 37.734856121008917 ], [ -122.493274340840912, 37.734785121286002 ], [ -122.492843999903116, 37.734842083695071 ], [ -122.492330945602859, 37.73504482611267 ], [ -122.492142715245791, 37.735181846965403 ], [ -122.491805731315921, 37.735279805981911 ], [ -122.491730212101302, 37.735301758325164 ], [ -122.491320518441114, 37.735327019185135 ], [ -122.490973609504408, 37.735348171552815 ], [ -122.490725734916396, 37.735399781312303 ], [ -122.490526224357907, 37.735470000646821 ], [ -122.490270108429897, 37.735606337180243 ], [ -122.490460674310157, 37.735842274774221 ], [ -122.490521485540071, 37.736028873151284 ], [ -122.490552748713441, 37.736251597078756 ], [ -122.490686267381363, 37.736541968564268 ], [ -122.491162508402653, 37.737157782139001 ], [ -122.491211452414888, 37.737221069184358 ], [ -122.491334899611488, 37.737293023539365 ], [ -122.491198309070924, 37.737311342176547 ], [ -122.491113859834144, 37.737397356998116 ], [ -122.490894410355324, 37.737610557460023 ], [ -122.490695166321217, 37.737732995785407 ], [ -122.490475969759899, 37.737832474268195 ], [ -122.490364187143001, 37.737929559098433 ], [ -122.489970938868055, 37.737956983380037 ], [ -122.489794342484018, 37.737821521499782 ], [ -122.489559638156635, 37.737725144708122 ], [ -122.489310346380378, 37.737544144541232 ], [ -122.48917282500021, 37.737387715271872 ], [ -122.488933343471572, 37.73715804150379 ], [ -122.488518054177234, 37.737001890327612 ], [ -122.488261361358497, 37.736979897727672 ], [ -122.487883946457515, 37.736972903025247 ], [ -122.487473746906744, 37.73696000969079 ], [ -122.486865148034397, 37.736893072836374 ], [ -122.486239320534182, 37.736758103009961 ], [ -122.485767077957547, 37.736757243866982 ], [ -122.485398323256604, 37.736886930845941 ], [ -122.485055057260084, 37.737081691563745 ], [ -122.484981330342137, 37.737106613405395 ], [ -122.481727269492282, 37.73717192680251 ], [ -122.480654887744791, 37.73721905491567 ], [ -122.479601690542523, 37.737266045133403 ], [ -122.478500149938654, 37.73731300537402 ], [ -122.477443897267278, 37.737360110526431 ], [ -122.476368270747585, 37.737407342172453 ], [ -122.475288554960258, 37.737454742960537 ], [ -122.474232714891599, 37.737476308128976 ], [ -122.47327754880429, 37.737518149435381 ], [ -122.473161338869033, 37.737550437503423 ], [ -122.472088826157801, 37.737598476381557 ], [ -122.470962730039105, 37.737648904688974 ], [ -122.470924096654457, 37.737574149498428 ], [ -122.470869802376484, 37.736951620802394 ], [ -122.470805946330771, 37.736773656566506 ], [ -122.470679955794623, 37.736646992229609 ], [ -122.470574087980822, 37.736589028767121 ], [ -122.471068098407827, 37.73560670794447 ], [ -122.471400819161929, 37.735001415396148 ], [ -122.471569341481938, 37.734706810815084 ], [ -122.47162189337304, 37.733860262567148 ], [ -122.471660927786132, 37.733231459533314 ], [ -122.471741907147091, 37.731926920887339 ], [ -122.471797435951885, 37.731032354724164 ], [ -122.471838445445158, 37.730322499137451 ], [ -122.471849871701991, 37.730103151702181 ], [ -122.471866468726006, 37.729784522464136 ], [ -122.47154865397853, 37.729783977184617 ], [ -122.471594286340178, 37.728902143540118 ], [ -122.47190716730239, 37.728927188202036 ], [ -122.471915497296948, 37.728810174564472 ], [ -122.472056885104323, 37.726824049746483 ], [ -122.472214746614711, 37.723731792113433 ], [ -122.472322354823248, 37.721623768058436 ], [ -122.472321961375684, 37.721623810905996 ], [ -122.472161906508475, 37.721641204494453 ], [ -122.471983398728909, 37.721660603850793 ], [ -122.471760271986454, 37.721671203510112 ], [ -122.471759949192219, 37.721671054807977 ], [ -122.471673586030391, 37.721631204836193 ], [ -122.470779028465699, 37.721637301442819 ], [ -122.469876768913451, 37.721643443134909 ], [ -122.469739691960783, 37.721644376097736 ], [ -122.46897449401726, 37.721649578720722 ], [ -122.468660059213846, 37.721651715058712 ], [ -122.46807558495307, 37.721655684399515 ], [ -122.467922730856742, 37.721656721708847 ], [ -122.467615322899292, 37.721658807641923 ], [ -122.467185158975667, 37.721661725062667 ], [ -122.467028877336375, 37.721662784936917 ], [ -122.46658847710232, 37.721665769467251 ], [ -122.466277766029194, 37.721667874912988 ], [ -122.4659783260431, 37.721669902411627 ], [ -122.465564132461637, 37.72167263116085 ], [ -122.465391251749992, 37.721673798812127 ], [ -122.465390987937923, 37.721673800741335 ], [ -122.46448421418296, 37.721680006654026 ], [ -122.464483630192618, 37.721680010624304 ], [ -122.464483033412463, 37.721680014807887 ], [ -122.464479920172778, 37.721680035685075 ], [ -122.464479920230843, 37.721680037881669 ], [ -122.464483033470529, 37.721680017004481 ], [ -122.464484214240997, 37.721680008850619 ], [ -122.464434759676408, 37.721907819106278 ], [ -122.464293670852172, 37.722113739171022 ], [ -122.463981569397532, 37.722327034291936 ], [ -122.463751413929884, 37.722395206040865 ], [ -122.463189003103793, 37.722604614839412 ], [ -122.46284032675716, 37.72280173266644 ], [ -122.462654991355222, 37.722947907918154 ], [ -122.462431367748181, 37.72300886812026 ], [ -122.462271183905713, 37.723021052793868 ], [ -122.462271183761132, 37.723021008020723 ], [ -122.462265621163738, 37.721827887159478 ], [ -122.46226557117231, 37.721695003479546 ], [ -122.462267174469247, 37.721694992704748 ], [ -122.462267173874807, 37.721694970189525 ], [ -122.462264896007014, 37.721694985883083 ], [ -122.462254399326852, 37.72000857322422 ], [ -122.46226246554707, 37.719928593578096 ], [ -122.462245294921956, 37.718767790464547 ], [ -122.462244936309219, 37.718219524954932 ], [ -122.46263854285489, 37.718211149542661 ], [ -122.462639625007327, 37.717936035524978 ], [ -122.462638771382373, 37.717866433871905 ], [ -122.462633312624419, 37.717421207682776 ], [ -122.46262477066405, 37.716570820282072 ], [ -122.462620481465109, 37.716143794339722 ], [ -122.462615213395566, 37.71561930379395 ], [ -122.462607827629938, 37.714883950429027 ], [ -122.462602039439204, 37.714307653173123 ], [ -122.462588724439357, 37.714029538822885 ], [ -122.462554985317752, 37.713903926321834 ], [ -122.46256899895387, 37.713150165038506 ], [ -122.462580658473911, 37.712523033743715 ], [ -122.462581299448402, 37.712273520359908 ], [ -122.462570051320355, 37.711370301468136 ], [ -122.462063256954337, 37.711372729296876 ], [ -122.462545712573657, 37.711171028559598 ], [ -122.462554670587338, 37.71117015272295 ], [ -122.462558461843784, 37.710567432270715 ], [ -122.462893196389857, 37.710562754126848 ], [ -122.464175624997623, 37.710548242222522 ], [ -122.464766855714529, 37.710481381431755 ], [ -122.465994326901708, 37.710153924678359 ], [ -122.466791287837083, 37.709825747176509 ], [ -122.467161376112116, 37.709634146029515 ], [ -122.467717389066479, 37.709282172736899 ], [ -122.468442186669975, 37.708710365091008 ], [ -122.468469108419114, 37.708682445380624 ], [ -122.468919327757234, 37.708227236298555 ], [ -122.468936765178938, 37.708230944115137 ], [ -122.469206218211681, 37.708201815905348 ], [ -122.469249900139204, 37.708201720375776 ], [ -122.469298321590273, 37.708202284245147 ], [ -122.470831636978247, 37.708197238849166 ], [ -122.471323400170547, 37.708198733212157 ], [ -122.471333181497599, 37.708198762882461 ], [ -122.471352032181699, 37.708198820402657 ], [ -122.472828567745367, 37.708203294119777 ], [ -122.475753134738511, 37.70818173979459 ], [ -122.478975890370975, 37.708191500643373 ], [ -122.481681250730091, 37.708183096324262 ], [ -122.482448808625776, 37.708181853858243 ], [ -122.484067695750653, 37.708165047020167 ], [ -122.485639305786634, 37.708148710071598 ], [ -122.485678792700227, 37.708148575886831 ], [ -122.485857818531997, 37.708147968478251 ], [ -122.493439707434533, 37.708121990011122 ], [ -122.498399514345707, 37.70810473139138 ], [ -122.502773696653762, 37.708089337426266 ], [ -122.502794335644097, 37.708342053909199 ], [ -122.502870002532575, 37.708519665129593 ], [ -122.502919824088835, 37.708764674445675 ], [ -122.502952891728171, 37.708965329397188 ], [ -122.502970627807798, 37.709110275269509 ], [ -122.503182081004425, 37.70964337370075 ], [ -122.503220569589601, 37.710045154472041 ], [ -122.503285115419118, 37.710323219970874 ], [ -122.503377921169559, 37.710623467751866 ], [ -122.503454573963339, 37.710901670868985 ], [ -122.50338876186548, 37.711025718699396 ], [ -122.503480367063446, 37.71128134783477 ], [ -122.503538681827621, 37.71139229600675 ], [ -122.503607152393855, 37.711815885652477 ], [ -122.50392442753342, 37.711977024740428 ], [ -122.50398926023928, 37.712137307747028 ], [ -122.504018884937224, 37.712338364595105 ], [ -122.504050960348835, 37.712566162951994 ], [ -122.504083766615167, 37.712821075451494 ], [ -122.50415623472351, 37.713008011664755 ], [ -122.504154839245047, 37.713276897967987 ], [ -122.504262407999079, 37.713483152309799 ], [ -122.504310222769533, 37.713717550242542 ], [ -122.504341216541519, 37.713905192080865 ], [ -122.504415861257201, 37.714172784107312 ], [ -122.504527957268053, 37.714546871585753 ], [ -122.504619249107378, 37.714854698366167 ], [ -122.504734681128681, 37.715160054242361 ], [ -122.50484307775433, 37.715396854580646 ], [ -122.504983687289311, 37.715738179098203 ], [ -122.505015183177221, 37.715944354142479 ], [ -122.505064940330996, 37.716122405267939 ], [ -122.505277983345735, 37.716713159786387 ], [ -122.505378665806077, 37.716920217389642 ], [ -122.50544954257559, 37.71711198714339 ], [ -122.505534236338548, 37.717303178231596 ], [ -122.505550939969169, 37.717537761949714 ], [ -122.505627533936476, 37.717813217613234 ], [ -122.505733499538735, 37.718087829999391 ], [ -122.505795361000153, 37.718329885441641 ], [ -122.50575895814147, 37.718518674479142 ], [ -122.505846981170734, 37.71870500140907 ], [ -122.505947348818779, 37.718836178428148 ], [ -122.50603889798937, 37.719089059528848 ], [ -122.50604605833162, 37.719354365984017 ], [ -122.506067045042258, 37.719619436964734 ], [ -122.506098310388239, 37.719752820508575 ], [ -122.506085112584401, 37.71990447335908 ], [ -122.506073138870676, 37.719973352141601 ], [ -122.506058509098679, 37.720136017347265 ], [ -122.506066050462266, 37.720287316996625 ], [ -122.506093067115529, 37.720455453693035 ], [ -122.506119272327297, 37.720657598256366 ], [ -122.506215620201345, 37.720895976024821 ], [ -122.50629167450829, 37.721023102978798 ], [ -122.506401700968937, 37.721383832251519 ], [ -122.506521510466683, 37.721658550935217 ], [ -122.507655277014294, 37.728423963999113 ], [ -122.507663331414165, 37.728466062015535 ], [ -122.507703574614794, 37.728547442310145 ], [ -122.507748947428013, 37.728626675201951 ], [ -122.507757146370523, 37.728738132019352 ], [ -122.507784794329567, 37.728865395952631 ], [ -122.50778664879924, 37.728934039418284 ], [ -122.507794848177895, 37.729045496221595 ], [ -122.507815341525188, 37.729163954079155 ], [ -122.50786205937635, 37.729292953229624 ], [ -122.507900514994574, 37.72943617151067 ], [ -122.507937978539388, 37.729542665673854 ], [ -122.507979524242614, 37.729608229023043 ], [ -122.508001314382625, 37.729646658611678 ], [ -122.508029211854279, 37.729655111115953 ], [ -122.5080286514508, 37.729698385786008 ], [ -122.508045757198687, 37.729755437677454 ], [ -122.508054266358684, 37.729814352687157 ], [ -122.508053396658397, 37.729910168841855 ], [ -122.508060436991443, 37.729978723905262 ], [ -122.508062096980282, 37.730040159271667 ], [ -122.508075550679465, 37.730090062827138 ], [ -122.508077646560039, 37.730167629612303 ], [ -122.508084862782624, 37.730242705229408 ], [ -122.508102701340974, 37.730326871159861 ], [ -122.508101275259605, 37.730402094356123 ], [ -122.508118432954731, 37.730525073140598 ], [ -122.508154289380698, 37.730636058484791 ], [ -122.508159291744406, 37.730757184482151 ], [ -122.508147188358009, 37.730821258058114 ], [ -122.508157490852682, 37.730882546377835 ], [ -122.508176687224534, 37.73095295419229 ], [ -122.508155505168105, 37.731001044217557 ], [ -122.508070616958207, 37.731059491187089 ], [ -122.508063151964294, 37.731103226906185 ], [ -122.50803827155984, 37.731142452222485 ], [ -122.508010240050936, 37.731193062852363 ], [ -122.508020236798259, 37.731243025052876 ], [ -122.508042824992458, 37.73131097145712 ], [ -122.508040601277514, 37.731356677807476 ], [ -122.508006517533232, 37.731439325082015 ], [ -122.508021273414599, 37.731473410969826 ], [ -122.50803497807641, 37.731532581064045 ], [ -122.508027744858111, 37.731584897172127 ], [ -122.508025706262629, 37.731637468116226 ], [ -122.508040152865036, 37.731724095470533 ], [ -122.508058978047401, 37.731780774943978 ], [ -122.508063043647368, 37.731867235581163 ], [ -122.508091810132555, 37.731971817943496 ], [ -122.508115264680967, 37.732007815523275 ], [ -122.508158104591416, 37.732057217905187 ], [ -122.508170145127792, 37.732118820238121 ], [ -122.508180754565259, 37.732191434375828 ], [ -122.508206800359858, 37.732259321810233 ], [ -122.508252110705484, 37.732336151955884 ], [ -122.508247422336822, 37.732418641589092 ], [ -122.508261368501763, 37.73248673525643 ], [ -122.508297786010743, 37.732554445876552 ], [ -122.50831883177085, 37.732629285992957 ], [ -122.508349701883319, 37.732683699580726 ], [ -122.508381054023317, 37.73275596038183 ], [ -122.508401673597731, 37.732815012827984 ], [ -122.508412291945035, 37.732887970164001 ], [ -122.508377095537298, 37.732929431631767 ], [ -122.50834351603902, 37.732966745040173 ], [ -122.508312026503646, 37.733017414665078 ], [ -122.508294180910255, 37.733060983682996 ], [ -122.508292383963067, 37.733122478220693 ], [ -122.508302816757165, 37.733188571798578 ], [ -122.50828645856835, 37.733223187740961 ], [ -122.508287627239582, 37.733266432915535 ] ] ] }}
]}
================================================
FILE: bindings/kepler.gl-jupyter/pyproject.toml
================================================
[build-system]
requires = ["geopandas~=0.14.3", "ipywidgets~=8.1.5", "notebook~=6.0.1", "jupyter_packaging~=0.12.3", "jupyter-contrib-nbextensions~=0.7.0", "jupyterlab~=4.1.6", "pyarrow~=16.0.0", "setuptools>=69.5.1", "wheel"]
build-backend = "setuptools.build_meta"
================================================
FILE: bindings/kepler.gl-jupyter/requirements.txt
================================================
geopandas==0.14.3
ipywidgets==7.8.1
ipykernel==6.29.4
Shapely==2.0.4
jupyter_packaging==0.12.3
jupyter-contrib-nbextensions==0.7.0
notebook==6.0.1
setuptools==70.0.0
jupyter==1.0.0
jupyterlab==4.1.6
pyarrow==16.0.0
================================================
FILE: bindings/kepler.gl-jupyter/setup.cfg
================================================
[bdist_wheel]
universal=1
================================================
FILE: bindings/kepler.gl-jupyter/setup.py
================================================
# SPDX-License-Identifier: MIT
# Copyright contributors to the kepler.gl project
from __future__ import print_function
from distutils import log
from setuptools import setup, find_packages
import os
from jupyter_packaging import (
create_cmdclass,
install_npm,
ensure_targets,
combine_commands,
get_version,
skip_if_exists
)
# Name of the project
name = 'keplergl'
here = os.path.dirname(os.path.abspath(__file__))
long_description = 'Keplergl Jupyter Extension'
log.info('setup.py entered')
log.info('$PATH=%s' % os.environ['PATH'])
# Get version
version = get_version(os.path.join(name, '_version.py'))
js_dir = os.path.join(here, 'js')
# Representative files that should exist after a successful build
jstargets = [
os.path.join('keplergl', 'static', 'index.js'),
os.path.join('keplergl-jupyter', 'labextension', 'package.json'),
]
data_files_spec = [
('share/jupyter/nbextensions/keplergl-jupyter',
'keplergl/static', '**'),
('share/jupyter/labextensions/keplergl-jupyter',
'keplergl-jupyter/labextension', "**"),
('etc/jupyter/nbconfig/notebook.d', '.', 'keplergl-jupyter.json'),
]
cmdclass = create_cmdclass('jsdeps', data_files_spec=data_files_spec)
js_command = combine_commands(
install_npm(js_dir, npm=["yarn"], build_cmd='build'), ensure_targets(jstargets),
)
is_repo = os.path.exists(os.path.join(here, '.git'))
if is_repo:
cmdclass['jsdeps'] = js_command
else:
cmdclass['jsdeps'] = skip_if_exists(jstargets, js_command)
LONG_DESCRIPTION = 'A jupyter widget for kepler.gl, an advanced geospatial visualization tool, to render large-scale interactive maps.'
setup_args = {
'name': 'keplergl',
'version': version,
'description': 'This is a simple jupyter widget for kepler.gl, an advanced geospatial visualization tool, to render large-scale interactive maps.',
'long_description': LONG_DESCRIPTION,
'include_package_data': True,
'install_requires': [
'ipywidgets>=8.1.5',
'traittypes>=0.2.1',
'traitlets>=4.3.2',
'geopandas>=0.14.3',
'Shapely>=1.6.4.post2',
'jupyter_packaging>=0.12.3',
'jupyter>=1.0.0',
'jupyterlab>=4.1.6',
'notebook>=6.0.1',
'pyarrow>=16.0.0',
'geoarrow-pyarrow>=0.1.2',
'geoarrow-pandas>=0.1.1',
],
'packages': find_packages(),
'zip_safe': False,
'cmdclass': cmdclass,
'author': 'Shan He',
'author_email': 'shan@uber.com',
'url': 'https://github.com/keplergl/kepler.gl/tree/master/bindings/kepler.gl-jupyter',
'keywords': [
'ipython',
'jupyter',
'widgets',
'geospatial',
'visualization',
'webGL'
],
'classifiers': [
'Development Status :: 4 - Beta',
'Framework :: IPython',
'Intended Audience :: Developers',
'Intended Audience :: Science/Research',
'Topic :: Multimedia :: Graphics',
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
'Programming Language :: Python :: 3.12',
],
}
setup(**setup_args)
================================================
FILE: bindings/python/DEVELOPMENT.md
================================================
# Development Guide
This guide explains how to set up kepler.gl for Jupyter for local development.
## Prerequisites
- Python >= 3.9
- Node.js (for building the frontend)
- JupyterLab >= 4.0 or Notebook >= 7.0
## Installation
Navigate to the `bindings/python` directory:
```bash
cd bindings/python
```
### 1. Install JavaScript dependencies and build the frontend
```bash
npm install
npm run build
```
### 2. Install Python package in development mode
Using **uv** (recommended):
```bash
uv sync --dev
```
Or using **pip**:
```bash
pip install -e ".[dev]"
```
### 3. Start Jupyter
```bash
# With uv
uv run jupyter lab
# Or with pip
jupyter lab
```
## Development with Hot Reload
For active development with automatic rebuilding of the TypeScript/JavaScript:
```bash
# Terminal 1: Watch for TypeScript changes
npm run dev
# Terminal 2: Run Jupyter
uv run jupyter lab
```
The `npm run dev` command watches for changes in the `src/` directory and automatically rebuilds the widget JavaScript.
## Quick Test
```python
from keplergl import KeplerGl
# Create a map
map = KeplerGl(height=400)
map
```
## Running Tests
```bash
uv run pytest
```
## Available npm Scripts
- `npm run build` - Build TypeScript to `keplergl/static/`
- `npm run dev` - Build with watch mode for development
- `npm run typecheck` - Run TypeScript type checking
- `npm run lint` - Run ESLint on source files
## Publishing to PyPI
Publishing is done manually via GitHub Actions using the "Run workflow" button.
### Version Format
The version in `pyproject.toml` determines what type of release you can publish:
- **Prerelease versions**: Must have a suffix like `a`, `b`, `rc`, or `dev` followed by a number
- Examples: `0.4.0a1` (alpha), `0.4.0b1` (beta), `0.4.0rc1` (release candidate), `0.4.0.dev1` (development)
- **Official versions**: Clean semantic versions without any suffix
- Examples: `0.4.0`, `1.0.0`
### Publishing Steps
1. **Update the version** in both files:
- `pyproject.toml` (line: `version = "x.x.x"`)
- `keplergl/_version.py` (line: `__version__ = "x.x.x"`)
2. **Go to GitHub Actions** → "Build and Publish KeplerGL Python Package" workflow
3. **Click "Run workflow"** and select the appropriate option:
- **Prerelease** (checked by default): Publishes to PyPI as a prerelease. Version must have a prerelease suffix.
- **Official release** (unchecked): Publishes to PyPI as an official release. Version must be a clean version.
4. The workflow will:
- Build and test the package
- Validate that the version format matches the publish type
- Publish to PyPI if validation passes
### Validation Rules
| Checkbox | Version | Result |
|----------|---------|--------|
| ✓ Prerelease | `0.4.0a1` | ✅ Publishes |
| ✓ Prerelease | `0.4.0` | ❌ Fails (version must have prerelease suffix) |
| ☐ Official | `0.4.0` | ✅ Publishes |
| ☐ Official | `0.4.0a1` | ❌ Fails (version must not have prerelease suffix) |
================================================
FILE: bindings/python/README.md
================================================
# kepler.gl for Jupyter
[](https://pypi.org/project/keplergl/)
[](https://pypi.org/project/keplergl/#history)
This is the [kepler.gl](http://kepler.gl) Jupyter widget, an advanced geospatial visualization tool for rendering large-scale interactive maps in Jupyter Notebook and JupyterLab.
## Installation
```shell
pip install keplergl
```
### Prerequisites
- Python >= 3.9
- JupyterLab >= 4.0 or Notebook >= 7.0
## Quick Start
```python
from keplergl import KeplerGl
# Create a map
map = KeplerGl(height=400)
# Add data
map.add_data(data=df, name='my_data')
# Display the map
map
```
## Documentation
For full documentation, visit [https://docs.kepler.gl/docs/keplergl-jupyter](https://docs.kepler.gl/docs/keplergl-jupyter).
## License
MIT
================================================
FILE: bindings/python/esbuild.config.mjs
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import * as esbuild from 'esbuild';
import path from 'path';
import {fileURLToPath} from 'url';
import {createRequire} from 'module';
const require = createRequire(import.meta.url);
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const isWatch = process.argv.includes('--watch');
// Resolve apache-arrow to a single location
const arrowPath = path.dirname(require.resolve('apache-arrow'));
// Resolve browser polyfills for Node.js built-ins (point to actual entry files)
const assertPath = require.resolve('assert/');
const eventsPath = require.resolve('events/');
const buildOptions = {
entryPoints: {widget: 'src/index.ts'},
bundle: true,
format: 'esm',
outdir: 'keplergl/static',
loader: {
'.ts': 'ts',
'.tsx': 'tsx',
'.css': 'css'
},
external: [],
minify: !isWatch,
sourcemap: isWatch,
target: ['es2020'],
define: {
'process.env.NODE_ENV': isWatch ? '"development"' : '"production"',
'global': 'globalThis'
},
inject: ['./src/process-shim.js'],
// Use alias to ensure single instance of apache-arrow and provide browser polyfills
alias: {
'apache-arrow': arrowPath,
'assert': assertPath,
'events': eventsPath
}
};
async function build() {
if (isWatch) {
const ctx = await esbuild.context(buildOptions);
await ctx.watch();
console.log('Watching for changes...');
} else {
await esbuild.build(buildOptions);
console.log('Build complete!');
}
}
build().catch(() => process.exit(1));
================================================
FILE: bindings/python/keplergl/__init__.py
================================================
# SPDX-License-Identifier: MIT
# Copyright contributors to the kepler.gl project
"""Kepler.gl Jupyter Widget."""
from .widget import KeplerGl
from ._version import __version__
__all__ = ["KeplerGl", "__version__"]
================================================
FILE: bindings/python/keplergl/_version.py
================================================
# SPDX-License-Identifier: MIT
# Copyright contributors to the kepler.gl project
"""Version information."""
__version__ = "0.4.0rc1"
================================================
FILE: bindings/python/keplergl/serializers.py
================================================
# SPDX-License-Identifier: MIT
# Copyright contributors to the kepler.gl project
"""Data serialization for Python <-> JavaScript communication."""
import base64
from typing import Any, Optional
import pandas as pd
import geopandas as gpd
import pyarrow as pa
DEBUG = False
def _debug(msg):
if DEBUG:
print(f"[keplergl-serializer] {msg}")
def _try_parse_geojson(data: str) -> Optional[dict]:
"""Try to parse a string as GeoJSON. Returns parsed dict if valid GeoJSON, None otherwise."""
import json
try:
parsed = json.loads(data)
if isinstance(parsed, dict):
# Check for GeoJSON indicators
geojson_types = {"FeatureCollection", "Feature", "Point", "MultiPoint",
"LineString", "MultiLineString", "Polygon", "MultiPolygon",
"GeometryCollection"}
if parsed.get("type") in geojson_types:
return parsed
except (json.JSONDecodeError, TypeError):
pass
return None
def data_to_json(data: dict, widget) -> dict:
"""Serialize Python data for JavaScript consumption."""
_debug(f"data_to_json called with {len(data)} datasets")
result = {}
for name, dataset in data.items():
_debug(f" Serializing dataset '{name}' of type {type(dataset).__name__}")
result[name] = serialize_dataset(dataset, name)
_debug(f" Result format: {result[name].get('format')}")
_debug(f"data_to_json result: {list(result.keys())}")
return result
def data_from_json(data: dict, widget) -> dict:
"""Deserialize JavaScript data to Python (passthrough)."""
return data
def serialize_dataset(data: Any, name: str) -> dict:
"""Serialize a single dataset."""
if isinstance(data, gpd.GeoDataFrame):
return serialize_geodataframe(data, name)
elif isinstance(data, pd.DataFrame):
return serialize_dataframe(data, name)
elif isinstance(data, str):
# Try to detect if the string is GeoJSON
geojson_data = _try_parse_geojson(data)
if geojson_data is not None:
_debug(f" Detected GeoJSON string for '{name}'")
return {"id": name, "data": geojson_data, "format": "geojson"}
# Otherwise treat as CSV
return {"id": name, "data": data, "format": "csv"}
elif isinstance(data, dict):
return {"id": name, "data": data, "format": "geojson"}
else:
raise ValueError(f"Unsupported data type: {type(data)}")
def serialize_dataframe(df: pd.DataFrame, name: str) -> dict:
"""Serialize DataFrame to JSON format for kepler.gl.
We use JSON format instead of Arrow to avoid version mismatch issues
between the apache-arrow package used here and the one bundled with kepler.gl.
"""
columns = df.columns.tolist()
rows = df.values.tolist()
_debug(f"serialize_dataframe: {len(columns)} columns, {len(rows)} rows")
_debug(f" columns: {columns}")
_debug(f" first row: {rows[0] if rows else 'empty'}")
return {
"id": name,
"data": {
"columns": columns,
"data": rows,
},
"format": "df",
}
def serialize_geodataframe(gdf: gpd.GeoDataFrame, name: str) -> dict:
"""Serialize GeoDataFrame to GeoArrow format."""
import geoarrow.pyarrow as ga
# Convert geometry column to geoarrow format
geom_col = gdf.geometry.name
geom_array = ga.as_geoarrow(gdf.geometry)
# Build table with non-geometry columns as regular Arrow arrays
non_geom_cols = [c for c in gdf.columns if c != geom_col]
arrays = [pa.array(gdf[c]) for c in non_geom_cols]
arrays.append(geom_array)
col_names = non_geom_cols + [geom_col]
table = pa.table(dict(zip(col_names, arrays)))
sink = pa.BufferOutputStream()
with pa.ipc.new_stream(sink, table.schema) as writer:
writer.write_table(table)
arrow_bytes = sink.getvalue().to_pybytes()
return {
"id": name,
"data": base64.b64encode(arrow_bytes).decode("utf-8"),
"format": "geoarrow",
}
================================================
FILE: bindings/python/keplergl/widget.py
================================================
# SPDX-License-Identifier: MIT
# Copyright contributors to the kepler.gl project
"""Kepler.gl Jupyter Widget using anywidget."""
import pathlib
import copy
import anywidget
import traitlets
from .serializers import data_to_json, data_from_json
_STATIC_DIR = pathlib.Path(__file__).parent / "static"
class KeplerGl(anywidget.AnyWidget):
"""Kepler.gl Jupyter Widget using anywidget."""
_esm = _STATIC_DIR / "widget.js"
_css = _STATIC_DIR / "widget.css"
data = traitlets.Dict({}).tag(sync=True, to_json=data_to_json, from_json=data_from_json)
config = traitlets.Dict({}).tag(sync=True)
height = traitlets.Int(400).tag(sync=True)
def __init__(self, data=None, config=None, height=400, show_docs=False, **kwargs):
"""
Initialize KeplerGl widget.
Args:
data: Dict of dataset name to data (DataFrame, GeoDataFrame, CSV, GeoJSON)
config: Kepler.gl config dict
height: Widget height in pixels
show_docs: Deprecated, kept for compatibility
"""
super().__init__(**kwargs)
self.height = height
if config:
self.config = config
if data:
self._add_data_dict(data)
def add_data(self, data, name="data"):
"""Add data to the map."""
updated = copy.deepcopy(self.data)
updated[name] = data
self.data = updated
def _add_data_dict(self, data_dict):
"""Add multiple datasets from a dict."""
updated = copy.deepcopy(self.data)
for name, data in data_dict.items():
updated[name] = data
self.data = updated
def save_to_html(
self,
file_name="keplergl_map.html",
data=None,
config=None,
read_only=False,
center_map=False,
):
"""Export the map to a standalone HTML file.
Note: This method is no longer supported in the new anywidget-based implementation.
Please use the "Share" button in the map config panel to export your map.
"""
print(
"save_to_html() is no longer supported in this version.\n"
"Please use the 'Share' button in the map config panel to export your map to HTML."
)
================================================
FILE: bindings/python/notebooks/DataFrame.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"df = pd.DataFrame(\n",
" {'City': ['Buenos Aires', 'Brasilia', 'Santiago', 'Bogota', 'Caracas'],\n",
" 'Country': ['Argentina', 'Brazil', 'Chile', 'Colombia', 'Venezuela'],\n",
" 'Latitude': [-34.58, -15.78, -33.45, 4.60, 10.48],\n",
" 'Longitude': [-58.66, -47.91, -70.66, -74.08, -66.86],\n",
" 'Time': ['2019-09-01 08:00','2019-09-01 09:00','2019-09-01 10:00','2019-09-01 11:00', '2019-09-01 12:00']\n",
" })"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "37198f4ae24b463db826f3e81de6d4b3",
"version_major": 2,
"version_minor": 1
},
"text/plain": [
""
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import keplergl\n",
"w1 = keplergl.KeplerGl(height=600, data={'data_1': df})\n",
"w1"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"save_to_html() is no longer supported in this version.\n",
"Please use the 'Share' button in the map config panel to export your map to HTML.\n"
]
}
],
"source": [
"w1.save_to_html(file_name='keplergl_map.html')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
================================================
FILE: bindings/python/notebooks/GeoDataFrame.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import geopandas"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"df = pd.DataFrame(\n",
" {'City': ['Buenos Aires', 'Brasilia', 'Santiago', 'Bogota', 'Caracas'],\n",
" 'Country': ['Argentina', 'Brazil', 'Chile', 'Colombia', 'Venezuela'],\n",
" 'Latitude': [-34.58, -15.78, -33.45, 4.60, 10.48],\n",
" 'Longitude': [-58.66, -47.91, -70.66, -74.08, -66.86]})"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"point_gdf = geopandas.GeoDataFrame(df, geometry=geopandas.points_from_xy(df.Longitude, df.Latitude))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" OBJECTID \n",
" ZIP_CODE \n",
" ID \n",
" geometry \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 1 \n",
" 94107 \n",
" 94107 \n",
" POLYGON ((-122.40116 37.78202, -122.40037 37.7... \n",
" \n",
" \n",
" 1 \n",
" 2 \n",
" 94105 \n",
" 94105 \n",
" POLYGON ((-122.3925 37.79377, -122.39189 37.79... \n",
" \n",
" \n",
" 2 \n",
" 3 \n",
" 94129 \n",
" 94129 \n",
" POLYGON ((-122.47099 37.78753, -122.47229 37.7... \n",
" \n",
" \n",
" 3 \n",
" 4 \n",
" 94121 \n",
" 94121 \n",
" POLYGON ((-122.50446 37.78807, -122.50415 37.7... \n",
" \n",
" \n",
" 4 \n",
" 5 \n",
" 94118 \n",
" 94118 \n",
" POLYGON ((-122.44889 37.77839, -122.44977 37.7... \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" OBJECTID ZIP_CODE ID \\\n",
"0 1 94107 94107 \n",
"1 2 94105 94105 \n",
"2 3 94129 94129 \n",
"3 4 94121 94121 \n",
"4 5 94118 94118 \n",
"\n",
" geometry \n",
"0 POLYGON ((-122.40116 37.78202, -122.40037 37.7... \n",
"1 POLYGON ((-122.3925 37.79377, -122.39189 37.79... \n",
"2 POLYGON ((-122.47099 37.78753, -122.47229 37.7... \n",
"3 POLYGON ((-122.50446 37.78807, -122.50415 37.7... \n",
"4 POLYGON ((-122.44889 37.77839, -122.44977 37.7... "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"zipcode_gdf = geopandas.read_file('sf_zip_geo.json')\n",
"display(zipcode_gdf.head(5))"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "0de352dc6ee744e7b073abff5b4d2d8c",
"version_major": 2,
"version_minor": 1
},
"text/plain": [
""
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import keplergl\n",
"w1 = keplergl.KeplerGl(height=500)\n",
"w1"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"w1.add_data(data=zipcode_gdf, name=\"zipcode\")"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"w1.add_data(data=point_gdf, name='cities')"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"save_to_html() is no longer supported in this version.\n",
"Please use the 'Share' button in the map config panel to export your map to HTML.\n"
]
}
],
"source": [
"w1.save_to_html(file_name='city_map.html', read_only=True)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
================================================
FILE: bindings/python/notebooks/GeoJSON.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"with open('geojson-data.json', 'r') as f:\n",
" geojson = f.read()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "4e568feadd104e7fa7b957693328369c",
"version_major": 2,
"version_minor": 1
},
"text/plain": [
""
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import keplergl\n",
"map_1 = keplergl.KeplerGl(height=600)\n",
"map_1"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"map_1.add_data(geojson, \"geojson\")"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"save_to_html() is no longer supported in this version.\n",
"Please use the 'Share' button in the map config panel to export your map to HTML.\n"
]
}
],
"source": [
"map_1.save_to_html(file_name=\"geojson_map.html\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
================================================
FILE: bindings/python/notebooks/Load kepler.gl.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" hex_id value is_true float_value empty time\n",
"0 89283082c2fffff 64 True 64.1 11/1/17 11:00\n",
"1 8928308288fffff 73 True 73.1 11/1/17 11:00\n",
"2 89283082c07ffff 65 True 65.1 11/1/17 11:00\n",
"3 89283082817ffff 74 True 74.1 11/1/17 11:00\n",
"4 89283082c3bffff 66 True 66.1 11/1/17 11:00\n",
".. ... ... ... ... ... ...\n",
"83 8928309537bffff 4 True 4.1 11/1/17 11:00\n",
"84 89283082d93ffff 6 True 6.1 11/1/17 11:00\n",
"85 89283082d73ffff 1 True 1.1 11/1/17 13:00\n",
"86 8928309530bffff 1 True 1.1 11/1/17 11:00\n",
"87 8928309532bffff 1 True 1.1 11/1/17 11:00\n",
"\n",
"[88 rows x 6 columns]\n"
]
}
],
"source": [
"import pandas as pd\n",
"df = pd.read_csv('hex-data.csv')\n",
"df = df.fillna('')\n",
"print(df)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import json\n",
"with open('sf_zip_geo.json', 'r') as f:\n",
" geojson = f.read()\n",
"\n",
"json_data=json.loads(geojson)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"# assign config = hex_config\n",
"%run hex_config.py"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "bb5e76638fab46b39b476ad048984097",
"version_major": 2,
"version_minor": 1
},
"text/plain": [
""
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import keplergl\n",
"w1 = keplergl.KeplerGl(height=500, data={\"data_1\": df}, config=config)\n",
"# w1 = keplergl.KeplerGl(height=500)\n",
"w1"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"w1.add_data(df, 'data_1')"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'version': 'v1',\n",
" 'config': {'visState': {'layers': [{'type': 'hexagonId',\n",
" 'visualChannels': {'sizeField': {'type': 'integer', 'name': 'value'},\n",
" 'coverageField': None,\n",
" 'colorScale': 'quantize',\n",
" 'coverageScale': 'linear',\n",
" 'colorField': {'type': 'integer', 'name': 'value'},\n",
" 'sizeScale': 'linear'},\n",
" 'config': {'dataId': 'data_1',\n",
" 'color': [250, 116, 0],\n",
" 'textLabel': {'color': [255, 255, 255],\n",
" 'field': None,\n",
" 'size': 50,\n",
" 'anchor': 'middle',\n",
" 'offset': [0, 0]},\n",
" 'label': 'H3 Hexagon',\n",
" 'isVisible': True,\n",
" 'visConfig': {'coverageRange': [0, 1],\n",
" 'opacity': 0.8,\n",
" 'elevationScale': 5,\n",
" 'hi-precision': False,\n",
" 'coverage': 1,\n",
" 'enable3d': True,\n",
" 'sizeRange': [0, 500],\n",
" 'colorRange': {'category': 'Uber',\n",
" 'type': 'sequential',\n",
" 'colors': ['#194266',\n",
" '#355C7D',\n",
" '#63617F',\n",
" '#916681',\n",
" '#C06C84',\n",
" '#D28389',\n",
" '#E59A8F',\n",
" '#F8B195'],\n",
" 'reversed': False,\n",
" 'name': 'Sunrise 8'}},\n",
" 'columns': {'hex_id': 'hex_id'}},\n",
" 'id': 'jdys7lp'}],\n",
" 'interactionConfig': {'brush': {'enabled': False, 'size': 0.5},\n",
" 'tooltip': {'fieldsToShow': {'data_1': ['hex_id', 'value']},\n",
" 'enabled': True}},\n",
" 'splitMaps': [],\n",
" 'layerBlending': 'normal',\n",
" 'filters': []},\n",
" 'mapState': {'bearing': 2.6192893401015205,\n",
" 'dragRotate': True,\n",
" 'zoom': 12.32053899007826,\n",
" 'longitude': -122.42590232651203,\n",
" 'isSplit': False,\n",
" 'pitch': 37.374216241015446,\n",
" 'latitude': 37.76209132041332},\n",
" 'mapStyle': {'mapStyles': {},\n",
" 'topLayerGroups': {},\n",
" 'styleType': 'dark',\n",
" 'visibleLayerGroups': {'building': True,\n",
" 'land': True,\n",
" '3d building': False,\n",
" 'label': True,\n",
" 'water': True,\n",
" 'border': False,\n",
" 'road': True}}}}"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"w1.config"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"w1.add_data(json_data, 'geojson')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"w1.save_to_html(file_name='first_map.html', data={\"data_1\": df}, config=config)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
================================================
FILE: bindings/python/notebooks/geojson-data.json
================================================
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"fill": true
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
2.331032753,
48.8411359942
],
[
2.3269987106,
48.8425764529
],
[
2.3253250122,
48.8431130838
],
[
2.3240375519,
48.8435367357
],
[
2.3217630386,
48.8443840288
],
[
2.3203468323,
48.8448923977
],
[
2.3189735413,
48.8453160346
],
[
2.3167848587,
48.846558682
],
[
2.3136520386,
48.8456831836
],
[
2.3111844063,
48.8450618529
],
[
2.3070859909,
48.8438897762
],
[
2.2969740629,
48.8408994443
],
[
2.2952359915,
48.8427106112
],
[
2.2949945927,
48.84285183
],
[
2.2928863764,
48.8436249961
],
[
2.2912180424,
48.844327543
],
[
2.2873932123,
48.8458173336
],
[
2.2863632441,
48.8462833253
],
[
2.2854137421,
48.8467704938
],
[
2.2820448875,
48.849008584
],
[
2.2804355621,
48.8498063649
],
[
2.2793841362,
48.8498204848
],
[
2.2790408134,
48.8506535519
],
[
2.2756505013,
48.8526585039
],
[
2.2742128372,
48.8531667889
],
[
2.2726249695,
48.8535197615
],
[
2.2703289986,
48.8542539366
],
[
2.2671747208,
48.8551434035
],
[
2.2649002075,
48.855694018
],
[
2.2637414932,
48.8544233601
],
[
2.2617030144,
48.8551010483
],
[
2.2633981705,
48.8576564152
],
[
2.2649002075,
48.8599434285
],
[
2.2664451599,
48.8626538275
],
[
2.2666811943,
48.8631902432
],
[
2.267947197,
48.8647006461
],
[
2.2694063187,
48.8667897264
],
[
2.2713589668,
48.8690480934
],
[
2.2736120224,
48.871009967
],
[
2.2753071785,
48.8723507717
],
[
2.2773456573,
48.8737197667
],
[
2.2782897949,
48.8750040476
],
[
2.2804999352,
48.8774737258
],
[
2.2818946838,
48.8795058267
],
[
2.2835040092,
48.8808605148
],
[
2.2857570648,
48.882229277
],
[
2.2899627686,
48.8848396989
],
[
2.2913146019,
48.8857568418
],
[
2.294511795,
48.8876475141
],
[
2.2955846786,
48.8878732613
],
[
2.2964859009,
48.8878027154
],
[
2.297065258,
48.8876192956
],
[
2.2975587845,
48.8874923124
],
[
2.298116684,
48.8875064216
],
[
2.298438549,
48.8875910772
],
[
2.2989320755,
48.8879296979
],
[
2.2997903824,
48.8882965344
],
[
2.3006701469,
48.8886210414
],
[
2.3015713692,
48.889270049
],
[
2.3037815094,
48.8903423041
],
[
2.3057985306,
48.8900742425
],
[
2.3074293137,
48.8893405928
],
[
2.3093390465,
48.8887762396
],
[
2.311205864,
48.8880566801
],
[
2.314145565,
48.8876051864
],
[
2.3184370995,
48.8917954552
],
[
2.3220419884,
48.8897497449
],
[
2.325668335,
48.887703951
],
[
2.3268485069,
48.8851924481
],
[
2.3274922371,
48.8838378774
],
[
2.328063794,
48.883946667
],
[
2.329651662,
48.88493438
],
[
2.336046047,
48.88318471
],
[
2.339479275,
48.882422738
],
[
2.342912503,
48.882987163
],
[
2.345744913,
48.883551581
],
[
2.34951366,
48.884013132
],
[
2.35071529,
48.882827858
],
[
2.351959835,
48.881501444
],
[
2.352954691,
48.880503646
],
[
2.354234348,
48.8790743
],
[
2.355393062,
48.877752921
],
[
2.35625137,
48.876623947
],
[
2.3603439331,
48.8759495959
],
[
2.3634767532,
48.875413317
],
[
2.3630905151,
48.8741996118
],
[
2.3636484146,
48.8733528233
],
[
2.3643350601,
48.8725060204
],
[
2.3652791977,
48.8711511061
],
[
2.3658370972,
48.8704171788
],
[
2.3668670654,
48.8691468946
],
[
2.3678970337,
48.8694432972
],
[
2.3685836792,
48.8686105428
],
[
2.368991375,
48.8680459556
],
[
2.3677682877,
48.8677636597
],
[
2.3687553406,
48.8666626902
],
[
2.3702573776,
48.8647994559
],
[
2.371544838,
48.8632184755
],
[
2.3724031448,
48.8618350766
],
[
2.3724031448,
48.8604516395
],
[
2.3719739914,
48.8594634467
],
[
2.371544838,
48.8586164088
],
[
2.3711585999,
48.8575434736
],
[
2.3706436157,
48.8566681672
],
[
2.3701715469,
48.8555951902
],
[
2.3698282242,
48.8546916128
],
[
2.3700428009,
48.8529126471
],
[
2.3684120178,
48.8526302657
],
[
2.3662662506,
48.8520654983
],
[
2.3646354675,
48.8515007245
],
[
2.3644798994,
48.8514583662
],
[
2.3643136024,
48.8514195377
],
[
2.3640614748,
48.8513312911
],
[
2.3639059067,
48.8512854028
],
[
2.3637878895,
48.8512395145
],
[
2.3636591434,
48.8511759767
],
[
2.3634928465,
48.8511159687
],
[
2.363294363,
48.8510594905
],
[
2.3630422354,
48.8509888927
],
[
2.3628437519,
48.8509394742
],
[
2.3625648022,
48.8507806287
],
[
2.3624360561,
48.8507100305
],
[
2.3620980978,
48.8506641416
],
[
2.3619157076,
48.8506394322
],
[
2.3615992069,
48.8506217826
],
[
2.361395359,
48.8505829535
],
[
2.3611968756,
48.8505441243
],
[
2.3611646891,
48.8504982353
],
[
2.361100316,
48.8504452864
],
[
2.3609608412,
48.8503888075
],
[
2.3608535528,
48.8503287985
],
[
2.3607730865,
48.8502970291
],
[
2.3605155945,
48.8502299602
],
[
2.360419035,
48.8501805409
],
[
2.3603439331,
48.8501523013
],
[
2.3601508141,
48.8500287529
],
[
2.3589706421,
48.8495804459
],
[
2.3583698273,
48.8491850853
],
[
2.365322113,
48.8442710572
],
[
2.3629188538,
48.8400909296
],
[
2.3513317108,
48.8363624133
],
[
2.3368692398,
48.8393000554
],
[
2.3351955414,
48.8398367214
],
[
2.3342084885,
48.8402039106
],
[
2.3331356049,
48.8405146071
],
[
2.331032753,
48.8411359942
]
]
]
}
}
]
}
================================================
FILE: bindings/python/notebooks/hex-data.csv
================================================
hex_id,value,is_true,float_value,empty,time
89283082c2fffff,64,true,64.1,,11/1/17 11:00
8928308288fffff,73,true,73.1,,11/1/17 11:00
89283082c07ffff,65,true,65.1,,11/1/17 11:00
89283082817ffff,74,true,74.1,,11/1/17 11:00
89283082c3bffff,66,true,66.1,,11/1/17 11:00
89283082883ffff,76,true,76.1,,11/1/17 11:00
89283082c03ffff,60,true,60.1,,11/1/17 11:00
89283082807ffff,68,true,68.1,,11/1/17 10:00
8928308289bffff,49,true,49.1,,11/1/17 11:00
89283082c0fffff,41,true,41.1,,11/1/17 11:00
89283082c87ffff,50,true,50.1,,11/1/17 11:00
89283082d4fffff,45,true,45.1,,11/1/17 11:00
89283082c77ffff,41,true,41.1,,11/1/17 11:00
89283082c2bffff,53,true,53.1,,11/1/17 11:00
89283082803ffff,41,true,41.1,,11/1/17 11:00
89283082813ffff,43,true,43.1,,11/1/17 11:00
89283082d5bffff,45,true,45.1,,11/1/17 11:00
89283082897ffff,40,true,40.1,,11/1/17 11:00
89283082c67ffff,42,true,42.1,,11/1/17 11:00
89283082d47ffff,51,true,51.1,,11/1/17 11:00
89283082dc3ffff,52,true,52.1,,11/1/17 11:00
89283082c33ffff,43,true,43.1,,11/1/17 11:00
89283082c23ffff,40,true,40.1,,11/1/17 11:00
89283082887ffff,36,true,36.1,,11/1/17 11:00
89283082d4bffff,36,true,36.1,,11/1/17 11:00
892830828bbffff,48,true,48.1,,11/1/17 11:00
892830828b7ffff,28,true,28.1,,11/1/17 11:00
89283082c17ffff,34,true,34.1,,11/1/17 11:00
89283082c6fffff,21,true,21.1,,11/1/17 12:00
8928308288bffff,25,true,25.1,,11/1/17 11:00
892830828abffff,26,true,26.1,,11/1/17 11:00
89283082c27ffff,27,true,27.1,,11/1/17 11:00
89283082c8fffff,33,true,33.1,,11/1/17 11:00
89283082cafffff,29,true,29.1,,11/1/17 11:00
89283082c13ffff,27,true,27.1,,11/1/17 11:00
89283082cabffff,22,true,22.1,,11/1/17 11:00
89283082c63ffff,26,true,26.1,,11/1/17 11:00
89283082d43ffff,30,true,30.1,,11/1/17 11:00
89283082d53ffff,19,true,19.1,,11/1/17 11:00
892830828a3ffff,28,false,28.1,,11/1/17 11:00
89283082d1bffff,20,false,20.1,,11/1/17 11:00
89283095367ffff,17,false,17.1,,11/1/17 11:00
8928309536bffff,26,false,26.1,,11/1/17 11:00
89283082c37ffff,16,false,16.1,,11/1/17 11:00
89283082c73ffff,17,false,17.1,,11/1/17 11:00
89283082c8bffff,15,false,15.1,,11/1/17 11:00
89283082ca7ffff,27,false,27.1,,11/1/17 11:00
89283082cb3ffff,32,false,32.1,,11/1/17 11:00
89283082c0bffff,26,false,26.1,,11/1/17 11:00
89283082ca3ffff,19,false,19.1,,11/1/17 11:00
89283082dcfffff,18,false,18.1,,11/1/17 11:00
89283082c1bffff,20,false,20.1,,11/1/17 15:00
89283082ddbffff,18,false,18.1,,11/1/17 11:00
8928309534fffff,16,false,16.1,,11/1/17 11:00
89283082d03ffff,15,false,15.1,,11/1/17 11:00
89283082cbbffff,21,false,21.1,,11/1/17 11:00
89283082cd7ffff,9,true,9.1,,11/1/17 11:00
8928309534bffff,9,true,9.1,,11/1/17 11:00
892830828c7ffff,13,true,13.1,,11/1/17 11:00
89283082cc7ffff,12,true,12.1,,11/1/17 11:00
89283082d0bffff,19,true,19.1,,11/1/17 11:00
89283082dcbffff,19,true,19.1,,11/1/17 11:00
89283082dd3ffff,15,true,15.1,,11/1/17 11:00
89283082dd7ffff,15,true,15.1,,11/1/17 11:00
892830828d7ffff,13,true,13.1,,11/1/17 11:00
89283082d17ffff,5,true,5.1,,11/1/17 11:00
8928309536fffff,8,true,8.1,,11/1/17 11:00
89283095373ffff,6,true,6.1,,11/1/17 11:00
89283082cb7ffff,15,true,15.1,,11/1/17 11:00
89283082d83ffff,9,true,9.1,,11/1/17 11:00
89283082d07ffff,4,true,4.1,,11/1/17 11:00
89283082d0fffff,3,true,3.1,,11/1/17 11:00
89283082d13ffff,6,true,6.1,,11/1/17 11:00
89283082d9bffff,5,true,5.1,,11/1/17 11:00
89283082c83ffff,11,true,11.1,,11/1/17 11:00
89283082d8bffff,4,true,4.1,,11/1/17 11:00
89283082dc7ffff,5,true,5.1,,11/1/17 11:00
89283095377ffff,5,true,5.1,,11/1/17 11:00
89283082c97ffff,4,true,4.1,,11/1/17 11:00
89283082d7bffff,2,true,2.1,,11/1/17 11:00
89283082d8fffff,1,true,1.1,,11/1/17 11:00
89283095347ffff,3,true,3.1,,11/1/17 11:00
89283095363ffff,2,true,2.1,,11/1/17 11:00
8928309537bffff,4,true,4.1,,11/1/17 11:00
89283082d93ffff,6,true,6.1,,11/1/17 11:00
89283082d73ffff,1,true,1.1,,11/1/17 13:00
8928309530bffff,1,true,1.1,,11/1/17 11:00
8928309532bffff,1,true,1.1,,11/1/17 11:00
================================================
FILE: bindings/python/notebooks/hex_config.py
================================================
# SPDX-License-Identifier: MIT
# Copyright contributors to the kepler.gl project
config = {u'version': u'v1', u'config': {u'visState': {u'layers': [{u'type': u'hexagonId', u'visualChannels': {u'sizeField': {u'type': u'integer', u'name': u'value'}, u'coverageField': None, u'colorScale': u'quantize', u'coverageScale': u'linear', u'colorField': {u'type': u'integer', u'name': u'value'}, u'sizeScale': u'linear'}, u'config': {u'dataId': u'data_1', u'color': [250, 116, 0], u'textLabel': {u'color': [255, 255, 255], u'field': None, u'size': 50, u'anchor': u'middle', u'offset': [0, 0]}, u'label': u'H3 Hexagon', u'isVisible': True, u'visConfig': {u'coverageRange': [0, 1], u'opacity': 0.8, u'elevationScale': 5, u'hi-precision': False, u'coverage': 1, u'enable3d': True, u'sizeRange': [0, 500], u'colorRange': {u'category': u'Uber', u'type': u'sequential', u'colors': [u'#194266', u'#355C7D', u'#63617F', u'#916681', u'#C06C84', u'#D28389', u'#E59A8F', u'#F8B195'], u'reversed': False, u'name': u'Sunrise 8'}}, u'columns': {u'hex_id': u'hex_id'}}, u'id': u'jdys7lp'}], u'interactionConfig': {u'brush': {u'enabled': False, u'size': 0.5}, u'tooltip': {u'fieldsToShow': {u'data_1': [u'hex_id', u'value']}, u'enabled': True}}, u'splitMaps': [], u'layerBlending': u'normal', u'filters': []}, u'mapState': {u'bearing': 2.6192893401015205, u'dragRotate': True, u'zoom': 12.32053899007826, u'longitude': -122.42590232651203, u'isSplit': False, u'pitch': 37.374216241015446, u'latitude': 37.76209132041332}, u'mapStyle': {u'mapStyles': {}, u'topLayerGroups': {}, u'styleType': u'dark', u'visibleLayerGroups': {u'building': True, u'land': True, u'3d building': False, u'label': True, u'water': True, u'border': False, u'road': True}}}}
================================================
FILE: bindings/python/notebooks/sf_zip_geo.json
================================================
{"type": "FeatureCollection","features": [
{"type": "Feature", "properties": {"OBJECTID":1,"ZIP_CODE":94107,"ID":94107},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.401159718585049, 37.782024266952142 ], [ -122.400374366843309, 37.782644515545172 ], [ -122.400019020063766, 37.782925153640136 ], [ -122.399891477967842, 37.783025880124256 ], [ -122.398930331092998, 37.783784933304034 ], [ -122.397811613142864, 37.784666586003652 ], [ -122.396705177550587, 37.785542130425938 ], [ -122.395895701657864, 37.784896929203114 ], [ -122.395160622349934, 37.78431101230386 ], [ -122.394398389309941, 37.783701667981575 ], [ -122.39343711789931, 37.784459123881106 ], [ -122.39286959393705, 37.78478280203197 ], [ -122.39285700396303, 37.784773072758867 ], [ -122.392216553530702, 37.784278123341721 ], [ -122.392215026316663, 37.784279352365694 ], [ -122.392118766536498, 37.784205306785267 ], [ -122.392032919786118, 37.784168354830349 ], [ -122.391600764141245, 37.783823989838545 ], [ -122.391599105853345, 37.783822668268179 ], [ -122.390856721023212, 37.784410569188324 ], [ -122.389846392025618, 37.783609176617361 ], [ -122.389843136047602, 37.783611740842574 ], [ -122.388306939892615, 37.782385221520776 ], [ -122.388304301898813, 37.782356717503951 ], [ -122.388231340039766, 37.782146697467269 ], [ -122.388106738902522, 37.781931906493995 ], [ -122.388094863959623, 37.781887241816527 ], [ -122.387765464889313, 37.78194244138043 ], [ -122.387754811744713, 37.781795652877442 ], [ -122.385560654233757, 37.781935833609538 ], [ -122.385544999019174, 37.781932650370386 ], [ -122.38553439339303, 37.781923892586839 ], [ -122.385511671392734, 37.781778670688965 ], [ -122.384922372713746, 37.781810068903333 ], [ -122.384901998602373, 37.781825502544642 ], [ -122.384858074907243, 37.781799422577222 ], [ -122.384893494062709, 37.781763146995921 ], [ -122.38491634743859, 37.781777202531266 ], [ -122.38550727073536, 37.781741658296774 ], [ -122.385491676395333, 37.781604563077408 ], [ -122.385493075388183, 37.781591492690396 ], [ -122.38550321006835, 37.781581716485675 ], [ -122.385518655734231, 37.781576662678262 ], [ -122.38762837564704, 37.781450881969413 ], [ -122.387583140105036, 37.780964719298666 ], [ -122.387467577483136, 37.780979617487112 ], [ -122.387479366190874, 37.781103038700273 ], [ -122.387462086323822, 37.781104002067416 ], [ -122.387450297298699, 37.780980580858106 ], [ -122.387337984465276, 37.780987185935416 ], [ -122.387348026094102, 37.781109948402708 ], [ -122.387330746223768, 37.781110911750616 ], [ -122.387320704623349, 37.780988149281868 ], [ -122.387206644553231, 37.780994095205941 ], [ -122.387216703416328, 37.781117544403045 ], [ -122.387199423542512, 37.781118507731705 ], [ -122.387189364714985, 37.780995058807726 ], [ -122.387068420460224, 37.78100248851576 ], [ -122.387080191758074, 37.781125223313062 ], [ -122.387062911534741, 37.78112618662724 ], [ -122.387051140611234, 37.78100345182272 ], [ -122.386937097943829, 37.781010084204837 ], [ -122.386948869025886, 37.781132819015049 ], [ -122.386931588799087, 37.78113378231 ], [ -122.386919818091386, 37.781011047492527 ], [ -122.386812677010425, 37.7810168822962 ], [ -122.386824465334769, 37.781140303837503 ], [ -122.386807185104601, 37.781141267114201 ], [ -122.386795397161777, 37.781017845840225 ], [ -122.386676165495402, 37.781024560738594 ], [ -122.386687953248156, 37.781147982298883 ], [ -122.386670672668515, 37.781148945561135 ], [ -122.386658885297223, 37.781025524268173 ], [ -122.386543112789369, 37.781032183675542 ], [ -122.386554900668202, 37.781155605243434 ], [ -122.386537620431014, 37.781156568480647 ], [ -122.386525832933643, 37.781033147180089 ], [ -122.386411790166775, 37.781039778779515 ], [ -122.386423577828609, 37.781163200360375 ], [ -122.386406297587911, 37.781164163578339 ], [ -122.386394510307582, 37.7810407422648 ], [ -122.386282162758775, 37.781045973167615 ], [ -122.386293984730017, 37.781170767655468 ], [ -122.386276704139945, 37.78117173085996 ], [ -122.386264917419695, 37.781048309528096 ], [ -122.386147415421732, 37.781054996216575 ], [ -122.386159201954754, 37.781178417834589 ], [ -122.386141922053085, 37.781179381008279 ], [ -122.386130135209612, 37.78105595966862 ], [ -122.386019552249252, 37.781062535536719 ], [ -122.386031321484509, 37.781185270717479 ], [ -122.386014040887659, 37.781186233883489 ], [ -122.386002272033735, 37.781063498970049 ], [ -122.385879580345062, 37.78107026841095 ], [ -122.385891367127385, 37.781193690044354 ], [ -122.385874086872718, 37.781194653184308 ], [ -122.385862300471871, 37.781071231818238 ], [ -122.385755176650932, 37.781077752105325 ], [ -122.385766945797698, 37.781200487306606 ], [ -122.385749665539848, 37.78120145042832 ], [ -122.385737896774387, 37.781078715494381 ], [ -122.385622107018349, 37.781084687547477 ], [ -122.385633892683231, 37.781208109217374 ], [ -122.385616612767805, 37.781209072314041 ], [ -122.385604844221021, 37.781086337366979 ], [ -122.385487342103474, 37.781093023397624 ], [ -122.385499110464124, 37.781215758630843 ], [ -122.38548182985329, 37.781216721718849 ], [ -122.385470061873946, 37.781093986752957 ], [ -122.385352559732169, 37.781100672649266 ], [ -122.38536432752538, 37.781223407901315 ], [ -122.385347047602892, 37.781224370958491 ], [ -122.385335279499117, 37.781101635984861 ], [ -122.385219507099919, 37.781108294087041 ], [ -122.385231275020445, 37.781231029346657 ], [ -122.385213994748526, 37.781231992389863 ], [ -122.385202226517421, 37.781109257408659 ], [ -122.385086454440369, 37.781115915374649 ], [ -122.385098222142247, 37.781238650647374 ], [ -122.385080941520883, 37.781239613676604 ], [ -122.385069174200339, 37.781116878671227 ], [ -122.38495511409829, 37.781122822411653 ], [ -122.384966899006869, 37.781246244141819 ], [ -122.384949618382038, 37.781247207151821 ], [ -122.384937851277286, 37.781124472133506 ], [ -122.384823791153082, 37.781130415746894 ], [ -122.384835575844662, 37.781253837490027 ], [ -122.384818295216348, 37.781254800480774 ], [ -122.384792264836477, 37.780979154238715 ], [ -122.384809545055035, 37.780978191257269 ], [ -122.384831743135436, 37.781102819695278 ], [ -122.384925045670656, 37.781097207947639 ], [ -122.384923587517477, 37.780971560938383 ], [ -122.384940867732567, 37.780970597937682 ], [ -122.384963066031062, 37.781095226351141 ], [ -122.385056368546813, 37.781089614499592 ], [ -122.385054910171618, 37.780963967491779 ], [ -122.385072190383269, 37.780963004471836 ], [ -122.385094388899816, 37.781087632860746 ], [ -122.385189421508272, 37.781081993240349 ], [ -122.385187962562227, 37.780956346239556 ], [ -122.385205242424405, 37.780955383205644 ], [ -122.38522744150788, 37.781080011564157 ], [ -122.385322474096498, 37.781074371836517 ], [ -122.385321014925523, 37.780948724837195 ], [ -122.385338295130154, 37.780947761778229 ], [ -122.385360493742681, 37.78107239012293 ], [ -122.385457256077231, 37.781066722624757 ], [ -122.385455797024363, 37.780941075621371 ], [ -122.38547307722547, 37.78094011254268 ], [ -122.385495276407823, 37.781064740856642 ], [ -122.385592038722095, 37.781059073247853 ], [ -122.385590579095435, 37.780933426251508 ], [ -122.385607859293003, 37.780932463153057 ], [ -122.385630058353271, 37.781057091447337 ], [ -122.38572509122794, 37.781051451389651 ], [ -122.385723631030388, 37.780925804400319 ], [ -122.385740911570423, 37.780924841276843 ], [ -122.385763111197619, 37.781049469540704 ], [ -122.385849512311808, 37.781044654171389 ], [ -122.385848051896943, 37.78091900690886 ], [ -122.385865332440758, 37.780918044041726 ], [ -122.385887514843574, 37.781041985837916 ], [ -122.385989466046908, 37.781036234899503 ], [ -122.385988006094351, 37.780910587902042 ], [ -122.386005286281474, 37.780909624745334 ], [ -122.386027486347686, 37.781034252959756 ], [ -122.38611734695634, 37.781029382050761 ], [ -122.386115886434652, 37.78090373478566 ], [ -122.386133166625513, 37.780902771884811 ], [ -122.386155349124707, 37.781026713636507 ], [ -122.386250399355106, 37.78102175959976 ], [ -122.386248938262554, 37.780896112341686 ], [ -122.386266218795839, 37.780895149415798 ], [ -122.386288401860739, 37.781019091137082 ], [ -122.386381721962337, 37.781014164675518 ], [ -122.386380260647812, 37.780888517418902 ], [ -122.386397541177601, 37.780887554473743 ], [ -122.386419741895395, 37.781012182614816 ], [ -122.386513044542724, 37.781006569605005 ], [ -122.386511583006197, 37.780880922349844 ], [ -122.386528863532533, 37.780879959385452 ], [ -122.386551064468406, 37.781004587501954 ], [ -122.386646096514042, 37.780998946712984 ], [ -122.386644635444497, 37.780873299448245 ], [ -122.386661915621403, 37.780872336469891 ], [ -122.386684116778227, 37.780996964561524 ], [ -122.386782608677009, 37.780991268294322 ], [ -122.386781146684797, 37.780865621042153 ], [ -122.386798427204084, 37.780864658038261 ], [ -122.386820628587657, 37.780989286104372 ], [ -122.386907012122748, 37.780983783515829 ], [ -122.386905549920243, 37.780858136265046 ], [ -122.386922830436163, 37.780857173242921 ], [ -122.386945032026247, 37.780981801285769 ], [ -122.387038334595715, 37.780976187860247 ], [ -122.387036872171194, 37.780850540610921 ], [ -122.387054152683675, 37.780849577569541 ], [ -122.387076354491839, 37.780974205587825 ], [ -122.387174846330339, 37.780968508992949 ], [ -122.387173384021025, 37.7808428617396 ], [ -122.387190664183962, 37.780841898683754 ], [ -122.387212865872911, 37.78096652668205 ], [ -122.387306168748907, 37.78096091303906 ], [ -122.387304706217577, 37.780835265787175 ], [ -122.387321986377088, 37.780834302712059 ], [ -122.387344188284104, 37.780958930685784 ], [ -122.387435761378228, 37.780953344631229 ], [ -122.387434316073197, 37.780828383824961 ], [ -122.387451578437933, 37.780826734292219 ], [ -122.387473781252041, 37.780951362230645 ], [ -122.387582651602727, 37.780945499137275 ], [ -122.38754001837809, 37.780493630652451 ], [ -122.38744131821305, 37.780491090765793 ], [ -122.387419058221624, 37.780500374265543 ], [ -122.387330736209734, 37.780497667864211 ], [ -122.387308476209526, 37.780506951617653 ], [ -122.387208063026961, 37.780505125406954 ], [ -122.387184073602839, 37.780514436820333 ], [ -122.387081931006932, 37.780512638185321 ], [ -122.387059670971126, 37.780521921891747 ], [ -122.386964429936867, 37.780519325963184 ], [ -122.386942169884378, 37.780528609647433 ], [ -122.386852118103619, 37.780525930572708 ], [ -122.386829875474817, 37.780535900680007 ], [ -122.386736346744712, 37.780532590439464 ], [ -122.386712374345294, 37.780542588206671 ], [ -122.386618863049748, 37.780539964317235 ], [ -122.386594873201545, 37.780549275890777 ], [ -122.386499632141522, 37.780546679312224 ], [ -122.386475659366695, 37.780556677311395 ], [ -122.386383878154234, 37.780554025277233 ], [ -122.386359888272054, 37.780563336802956 ], [ -122.386266376955888, 37.780560712359396 ], [ -122.386242404491071, 37.780570710305611 ], [ -122.386143703562112, 37.780568168794694 ], [ -122.386119713984229, 37.780577479991436 ], [ -122.386022743164474, 37.78057491124985 ], [ -122.386000500402702, 37.780584880926071 ], [ -122.385901799477139, 37.780582339761835 ], [ -122.385877827288269, 37.780592337079185 ], [ -122.385784298190572, 37.780589026363579 ], [ -122.38576205573851, 37.780598995989244 ], [ -122.385668544412525, 37.780596371620753 ], [ -122.385646283822041, 37.780605654791167 ], [ -122.385554502585677, 37.780603002386016 ], [ -122.385532242331863, 37.780612285803919 ], [ -122.385433541724893, 37.780609743967645 ], [ -122.385411298534606, 37.78061971381274 ], [ -122.385310868512505, 37.780617199530866 ], [ -122.385288625649494, 37.780627169347277 ], [ -122.385191654786624, 37.780624599647666 ], [ -122.38516766472523, 37.780633910656128 ], [ -122.385079342290652, 37.780631202574007 ], [ -122.385057082314987, 37.780640485896626 ], [ -122.384960111442751, 37.78063791600659 ], [ -122.384936138770243, 37.780647913412501 ], [ -122.384835917442729, 37.780653636341071 ], [ -122.384842007573795, 37.78075723388941 ], [ -122.384817825799914, 37.78075899421075 ], [ -122.38480325384981, 37.78052574104445 ], [ -122.384827435209161, 37.780523981006105 ], [ -122.384843799331136, 37.780623294238858 ], [ -122.384923281326039, 37.780618589884874 ], [ -122.384925926962097, 37.780518286009212 ], [ -122.384957841591557, 37.780616663880899 ], [ -122.385044241908545, 37.780611849106826 ], [ -122.385045157967028, 37.780511572605498 ], [ -122.385078784737303, 37.780609236348262 ], [ -122.385154824277294, 37.780605273878329 ], [ -122.385157469939188, 37.780504969717121 ], [ -122.38518938452367, 37.780603347531915 ], [ -122.385275768076681, 37.780597846132551 ], [ -122.385276683130513, 37.780497569640254 ], [ -122.385310328316436, 37.780595919750695 ], [ -122.385398458680143, 37.78059107677575 ], [ -122.385399356494702, 37.780490114106904 ], [ -122.385433018927529, 37.78058915090709 ], [ -122.385519402086118, 37.780583648785594 ], [ -122.385520317170744, 37.78048337283478 ], [ -122.385553962326881, 37.780581722881479 ], [ -122.385633443879414, 37.780577017779677 ], [ -122.385634358810009, 37.780476741827854 ], [ -122.385666274013943, 37.780575119514069 ], [ -122.385749215060514, 37.780570359001402 ], [ -122.385750112750941, 37.780469396598548 ], [ -122.385783775282164, 37.780568432755352 ], [ -122.385864986912736, 37.780563700098369 ], [ -122.385865884092837, 37.780462737425502 ], [ -122.38589954712829, 37.780561773818384 ], [ -122.385987659981154, 37.780556243958578 ], [ -122.385988556648442, 37.780455281290152 ], [ -122.386022220190043, 37.78055431764264 ], [ -122.386106890951012, 37.780549529481313 ], [ -122.386107787802118, 37.780448566806321 ], [ -122.386141451153719, 37.780547603130415 ], [ -122.386229563971753, 37.780542073089819 ], [ -122.386232190406915, 37.780441082739081 ], [ -122.386264124167781, 37.780540146702961 ], [ -122.386347065143937, 37.780535386044313 ], [ -122.386349691419113, 37.78043439569084 ], [ -122.386381625333826, 37.780533459623001 ], [ -122.386462836549086, 37.780528726834362 ], [ -122.386465444877402, 37.780427049764754 ], [ -122.386497396725886, 37.780526800104532 ], [ -122.386582067431817, 37.780522011876563 ], [ -122.386584675942643, 37.78042033479867 ], [ -122.386616627602407, 37.780520085111789 ], [ -122.386699551102055, 37.78051463803542 ], [ -122.386702159451801, 37.78041296095477 ], [ -122.386734111266165, 37.780512711236199 ], [ -122.386817052181556, 37.780507950246935 ], [ -122.386817930281353, 37.780406301126988 ], [ -122.386851612353468, 37.780506023962438 ], [ -122.386929363990731, 37.7805013456708 ], [ -122.386930242282716, 37.780399696544364 ], [ -122.386963924156646, 37.780499419353383 ], [ -122.387046865035501, 37.780494657927875 ], [ -122.387047743173568, 37.78039300907502 ], [ -122.387081425188285, 37.780492731301436 ], [ -122.387171267622861, 37.780487172869918 ], [ -122.387173875339855, 37.780385496327504 ], [ -122.387205827768923, 37.780485246207022 ], [ -122.387295687629134, 37.780480374124949 ], [ -122.387296547982558, 37.780378038825731 ], [ -122.387330247768816, 37.780478447425573 ], [ -122.387406269602806, 37.780473796784797 ], [ -122.38740712980379, 37.780371461484656 ], [ -122.38744082973659, 37.78047187005302 ], [ -122.387527230063114, 37.780467053179258 ], [ -122.38749949992625, 37.780056836734332 ], [ -122.387400782538194, 37.780053609825671 ], [ -122.387378540131436, 37.780063580311925 ], [ -122.387290201196578, 37.780060187435744 ], [ -122.387267941315415, 37.780069470907662 ], [ -122.387167511635454, 37.780066958487033 ], [ -122.387143539437361, 37.780076956068172 ], [ -122.387041380009435, 37.780074471228168 ], [ -122.387019120092901, 37.780083754653084 ], [ -122.386922167327057, 37.780081873095298 ], [ -122.386901619695664, 37.780090442368873 ], [ -122.386811551008179, 37.78008707681861 ], [ -122.386787578762636, 37.780097074601919 ], [ -122.386695780329632, 37.780093736646045 ], [ -122.386671790289242, 37.780103048241536 ], [ -122.386578279887487, 37.780100424039603 ], [ -122.386554289830215, 37.78010973561117 ], [ -122.386459049681108, 37.780107138994076 ], [ -122.386435059945711, 37.780116450261254 ], [ -122.386343278946669, 37.780113798749966 ], [ -122.386319288841676, 37.780123109724549 ], [ -122.386225778441045, 37.780120485792217 ], [ -122.386201788319156, 37.780129796742877 ], [ -122.38610135893272, 37.780127283134078 ], [ -122.386079098889809, 37.780136566656026 ], [ -122.385982128640109, 37.780133997606264 ], [ -122.38595813883623, 37.780143308776367 ], [ -122.385859438837869, 37.78014076729638 ], [ -122.385837196191162, 37.780150737217127 ], [ -122.385743667990269, 37.780147426188911 ], [ -122.385719678159148, 37.780156737585067 ], [ -122.385627896776001, 37.780154084973319 ], [ -122.385603907274145, 37.780163396340377 ], [ -122.385513855977493, 37.78016071596884 ], [ -122.385489865760334, 37.780170027049152 ], [ -122.385392895494292, 37.780167457789418 ], [ -122.385368905944745, 37.780176768559457 ], [ -122.385270205929046, 37.780174226860836 ], [ -122.385246216015972, 37.78018353761145 ], [ -122.385150975133058, 37.78018094022346 ], [ -122.385126985555786, 37.780190251218855 ], [ -122.385038663996198, 37.78018754310051 ], [ -122.385014674056748, 37.780196854078561 ], [ -122.384919433510831, 37.780194256498035 ], [ -122.38489544320835, 37.780203567457356 ], [ -122.384795222823172, 37.780209290346271 ], [ -122.384801312515108, 37.780312887910483 ], [ -122.384777113810173, 37.780313961773459 ], [ -122.384762559495741, 37.780081395028191 ], [ -122.384786741057312, 37.780079634992532 ], [ -122.384803105027004, 37.780178948238863 ], [ -122.384882586203048, 37.780174243917422 ], [ -122.384885231532309, 37.780073940040232 ], [ -122.384917146262893, 37.780172317925249 ], [ -122.385001816666616, 37.780167530831704 ], [ -122.385004462173583, 37.780067226671626 ], [ -122.385036376713245, 37.780165604530019 ], [ -122.38511414553922, 37.780161614154224 ], [ -122.385116790908242, 37.780061310540667 ], [ -122.385148705594133, 37.780159688368748 ], [ -122.385233375608649, 37.780154900565314 ], [ -122.385236021162356, 37.780054596943422 ], [ -122.385267935657353, 37.780152974744887 ], [ -122.385356065837257, 37.780148131521123 ], [ -122.385358710872126, 37.780047827627314 ], [ -122.385390625872631, 37.780146205390146 ], [ -122.385477025953321, 37.780141390018422 ], [ -122.385479653051561, 37.780040399682747 ], [ -122.385511585982442, 37.780139463852002 ], [ -122.385591067071402, 37.78013475905297 ], [ -122.385593711788431, 37.78003445515364 ], [ -122.38562562709447, 37.78013283285312 ], [ -122.385706855349099, 37.780128787029341 ], [ -122.385709482473402, 37.780027796408206 ], [ -122.385741415359448, 37.780126860520987 ], [ -122.385824355914565, 37.780122100504215 ], [ -122.385825252791648, 37.780021137554606 ], [ -122.38585891591876, 37.780120173961421 ], [ -122.385945315592835, 37.780115358252047 ], [ -122.385947942745361, 37.780014367894388 ], [ -122.38597987560469, 37.780113432222926 ], [ -122.386066275948011, 37.78010861613928 ], [ -122.38606717251001, 37.780007653736739 ], [ -122.38610083595357, 37.78010669007471 ], [ -122.386188965678286, 37.780101846233919 ], [ -122.386191574380462, 37.780000169711762 ], [ -122.386223525670573, 37.780099919858799 ], [ -122.386306466157762, 37.780095159228338 ], [ -122.386309092126623, 37.77999416887333 ], [ -122.386341026143853, 37.780093232818778 ], [ -122.386422253963318, 37.780089186233084 ], [ -122.386424863030612, 37.77998750941989 ], [ -122.386456813943639, 37.780087259789596 ], [ -122.386541484497073, 37.780082471584841 ], [ -122.386544092702067, 37.77998079450537 ], [ -122.386576044464221, 37.780080544831833 ], [ -122.386658984914163, 37.780075784227932 ], [ -122.386661592958049, 37.779974107145748 ], [ -122.386693544875143, 37.780073857440478 ], [ -122.386776485303088, 37.780069096479352 ], [ -122.386777363799169, 37.779967447346195 ], [ -122.386809315183925, 37.780067197895306 ], [ -122.386888813892412, 37.780063178385696 ], [ -122.386889674448653, 37.77996084281277 ], [ -122.38692337384856, 37.780061251805442 ], [ -122.387006314247685, 37.780056490682639 ], [ -122.387007174648929, 37.779954155383322 ], [ -122.38704087419768, 37.780054564067953 ], [ -122.387130733547679, 37.78004969211122 ], [ -122.387133323862429, 37.779947329117419 ], [ -122.38716529349125, 37.780047765460061 ], [ -122.387255152824864, 37.780042893408485 ], [ -122.387256012876136, 37.779940557832525 ], [ -122.387289712762055, 37.78004096672084 ], [ -122.387365734157797, 37.780036316380411 ], [ -122.387366594049666, 37.779933980528931 ], [ -122.387400294082084, 37.78003438938579 ], [ -122.387486693563403, 37.780029572821469 ], [ -122.387461810378028, 37.779663260524117 ], [ -122.387378661112308, 37.779659784635669 ], [ -122.387356418813553, 37.779669754843859 ], [ -122.387276728664503, 37.779666223506673 ], [ -122.387252739526915, 37.779675535209975 ], [ -122.387173049376599, 37.779672003802716 ], [ -122.387150789943092, 37.779681287247612 ], [ -122.387067640671745, 37.779677811139862 ], [ -122.387043668592767, 37.779687808975972 ], [ -122.386969150543408, 37.779683507921064 ], [ -122.386945178103403, 37.779693505742671 ], [ -122.386868930320873, 37.779689232309579 ], [ -122.386844958564382, 37.779699230374298 ], [ -122.386765268401049, 37.779695698416859 ], [ -122.386741279182857, 37.779705009741512 ], [ -122.386659859644624, 37.77970150593859 ], [ -122.386635887496141, 37.77971150341719 ], [ -122.386556180245535, 37.77970728514304 ], [ -122.386533937822136, 37.779717255195997 ], [ -122.386452518273302, 37.779713750975354 ], [ -122.386428528664126, 37.77972306224185 ], [ -122.38635402805015, 37.779719447242712 ], [ -122.386331768168034, 37.779728731087609 ], [ -122.386245159413448, 37.779725309752138 ], [ -122.386222916935935, 37.779735279471808 ], [ -122.386151858355305, 37.779730922551266 ], [ -122.386127868702886, 37.77974023375657 ], [ -122.386048178882604, 37.779736701583559 ], [ -122.386025936036276, 37.779746671546171 ], [ -122.385946246559868, 37.779743139298724 ], [ -122.385922256538748, 37.779752450742315 ], [ -122.385842567054112, 37.779748918150233 ], [ -122.385818577011165, 37.779758229298103 ], [ -122.385742346663463, 37.779754641855682 ], [ -122.385718357291026, 37.779763952697529 ], [ -122.385635207994184, 37.779760475579685 ], [ -122.385611235349785, 37.779770473129936 ], [ -122.385528086050684, 37.779766995936541 ], [ -122.385504096654358, 37.779776307009364 ], [ -122.38542267708938, 37.779772802077623 ], [ -122.385400434501221, 37.779782772191204 ], [ -122.385319014927063, 37.779779266913316 ], [ -122.385296754890703, 37.779788550288139 ], [ -122.385225696313427, 37.779784192809487 ], [ -122.385201723952207, 37.779794190270913 ], [ -122.385120304035951, 37.779790685135936 ], [ -122.38509804431726, 37.779799968467685 ], [ -122.385020084218212, 37.779796407941809 ], [ -122.38499609406378, 37.779805719196837 ], [ -122.384916404566042, 37.779802185978852 ], [ -122.384894161901101, 37.779812155996879 ], [ -122.38480257260197, 37.779817053634027 ], [ -122.384809835241697, 37.779898657585051 ], [ -122.384782194261888, 37.779900472932383 ], [ -122.384761383067243, 37.779694102231538 ], [ -122.384789023963819, 37.779692286614427 ], [ -122.384808725038937, 37.779786739726958 ], [ -122.384879557453601, 37.779782173395887 ], [ -122.384880595342565, 37.779686702548538 ], [ -122.384914117331078, 37.779780247404453 ], [ -122.384983237080689, 37.779776395391224 ], [ -122.384984274829336, 37.77968092426827 ], [ -122.385017796952795, 37.779774469369393 ], [ -122.385085186616962, 37.779770645233363 ], [ -122.38508622457347, 37.779675173829325 ], [ -122.385119746476775, 37.779768718907071 ], [ -122.385188848787607, 37.77976418060323 ], [ -122.385189886610789, 37.779668709198148 ], [ -122.385223408641721, 37.779762254246563 ], [ -122.385283897452879, 37.779759226795328 ], [ -122.385284934821826, 37.779663755944007 ], [ -122.385318457309211, 37.779757300685375 ], [ -122.385385847281285, 37.779753476097383 ], [ -122.385386866740049, 37.779657318531406 ], [ -122.3854203897058, 37.77975086351293 ], [ -122.385491239136826, 37.779746983539091 ], [ -122.385492276232114, 37.779651512411178 ], [ -122.385525798982087, 37.779745057368359 ], [ -122.385598378143868, 37.779741149940357 ], [ -122.385599415094418, 37.779645678536831 ], [ -122.385632937976666, 37.779739223463643 ], [ -122.385705499691042, 37.779734629250548 ], [ -122.385706536510781, 37.779639158120546 ], [ -122.385740059531955, 37.779732703291586 ], [ -122.385805719718547, 37.779728905856508 ], [ -122.385806756416358, 37.779633435000086 ], [ -122.385840279547224, 37.779726979593605 ], [ -122.385909399199221, 37.7797231270374 ], [ -122.385910435756728, 37.779627655905408 ], [ -122.385943959022555, 37.779721200744085 ], [ -122.386013061231836, 37.779716661682606 ], [ -122.386014097656016, 37.779621190549562 ], [ -122.386047621049443, 37.779714735358894 ], [ -122.38611501060636, 37.779710910634236 ], [ -122.386116047238417, 37.779615439220123 ], [ -122.386149570411703, 37.779708984006099 ], [ -122.386208311974158, 37.779705297309562 ], [ -122.386211077885747, 37.779609798774842 ], [ -122.386242871788397, 37.779703371203219 ], [ -122.386317180591391, 37.779699435108718 ], [ -122.38631821662446, 37.77960396397274 ], [ -122.386351740393124, 37.779697508695882 ], [ -122.386415670790853, 37.779693738872112 ], [ -122.386416706351284, 37.779598267740703 ], [ -122.386450230587357, 37.779691812430414 ], [ -122.386519350181956, 37.779687959791211 ], [ -122.386520385602097, 37.779592488384218 ], [ -122.386553892529193, 37.77968534660009 ], [ -122.386623012105417, 37.779681493625532 ], [ -122.386624047399195, 37.779586022492111 ], [ -122.386657571897828, 37.779679567397658 ], [ -122.386728421189233, 37.779675686405767 ], [ -122.386729456700351, 37.779580215540342 ], [ -122.386762980969223, 37.779673759872402 ], [ -122.386832100523861, 37.779669906775261 ], [ -122.386833135894662, 37.779574435634252 ], [ -122.386866660298466, 37.779667980211499 ], [ -122.386932302936756, 37.779663495979172 ], [ -122.386933338178679, 37.779568024837168 ], [ -122.386966862705819, 37.779661569386036 ], [ -122.387030793048368, 37.779657799503305 ], [ -122.38704566565184, 37.779562106599087 ], [ -122.387054991513921, 37.779656725452249 ], [ -122.387136202059708, 37.779651991644378 ], [ -122.387139193519673, 37.77956541658935 ], [ -122.387170761825075, 37.779650065266061 ], [ -122.387239881329535, 37.779646211655297 ], [ -122.387241125495137, 37.779558977842669 ], [ -122.387274441082525, 37.779644284971994 ], [ -122.387341830851355, 37.779640459266005 ], [ -122.387344804633926, 37.779553198035785 ], [ -122.387376373154481, 37.7796378461085 ], [ -122.387448951768221, 37.779633937546841 ], [ -122.387428243590108, 37.779295714050406 ], [ -122.387339905566151, 37.779292321211003 ], [ -122.38731766337223, 37.779302291412563 ], [ -122.387236244241279, 37.77929878773282 ], [ -122.387212254525394, 37.779308099439604 ], [ -122.387132565463105, 37.779304567993648 ], [ -122.387108575718415, 37.779313879130164 ], [ -122.387028886654846, 37.779310347614164 ], [ -122.387004914343294, 37.779320345448582 ], [ -122.386932126735232, 37.779316016678415 ], [ -122.386908154408829, 37.779326014493151 ], [ -122.386828447902374, 37.779321796397241 ], [ -122.386804475567118, 37.779331794465456 ], [ -122.386726516216612, 37.779328234787421 ], [ -122.3867025267663, 37.779337546110341 ], [ -122.386624566736728, 37.779333986925117 ], [ -122.386600577610722, 37.779343297947158 ], [ -122.386520887847865, 37.7793397660989 ], [ -122.386496916150335, 37.779349763818921 ], [ -122.386417208949837, 37.779345545456096 ], [ -122.386393237236504, 37.77935554315502 ], [ -122.386318719558147, 37.779351241688801 ], [ -122.386296477216476, 37.779361211972173 ], [ -122.386211598617734, 37.779357762936172 ], [ -122.386187609086349, 37.779367073879669 ], [ -122.386113108495195, 37.779363458733613 ], [ -122.386089119302554, 37.779372769926113 ], [ -122.386011159604379, 37.779369210055243 ], [ -122.385987187482783, 37.779379207677103 ], [ -122.385909210351812, 37.779374961294259 ], [ -122.385885237875669, 37.779384959175481 ], [ -122.385802088988314, 37.779381481900515 ], [ -122.385778099750866, 37.779390793029705 ], [ -122.385698409983121, 37.779387260900187 ], [ -122.385676150450635, 37.779396544067176 ], [ -122.385598190747288, 37.779392983923266 ], [ -122.385574218216505, 37.779402981466639 ], [ -122.3854945117032, 37.779398762469064 ], [ -122.3854705391566, 37.779408759991362 ], [ -122.38538912034204, 37.779405255030689 ], [ -122.385366860087544, 37.779414538699463 ], [ -122.385285441271535, 37.779411033667223 ], [ -122.385261469031803, 37.779421030866885 ], [ -122.385190410808178, 37.779416673366669 ], [ -122.38516642079081, 37.779425984382435 ], [ -122.385088461426918, 37.77942242389598 ], [ -122.38506448916398, 37.779432421330149 ], [ -122.384984782302112, 37.779428201993547 ], [ -122.384960810030293, 37.779438199681202 ], [ -122.384881120582591, 37.779434666444651 ], [ -122.38485713086655, 37.779443977391921 ], [ -122.384765559446308, 37.779449561719943 ], [ -122.384771214222269, 37.779535998445006 ], [ -122.384747015071127, 37.779537072038458 ], [ -122.38473308847739, 37.779329217537743 ], [ -122.384757287215081, 37.779328143952647 ], [ -122.384773494195869, 37.779421279213679 ], [ -122.384846073080865, 37.779417372248531 ], [ -122.384848858140316, 37.779322559636441 ], [ -122.384880632782526, 37.779415445992221 ], [ -122.384949752194402, 37.77941159399834 ], [ -122.384952537135234, 37.779316781932884 ], [ -122.384984294475274, 37.779408981541515 ], [ -122.385051684148522, 37.779405157144254 ], [ -122.385056216100068, 37.779311003588973 ], [ -122.385086243853095, 37.779403231376833 ], [ -122.385155363235981, 37.779399378987847 ], [ -122.385158147906921, 37.779304566642743 ], [ -122.38518992292822, 37.779397452915447 ], [ -122.385248663600038, 37.779393766707848 ], [ -122.385253195301217, 37.779299613144822 ], [ -122.385283223287274, 37.779391840608099 ], [ -122.385354072735922, 37.779387960985474 ], [ -122.385358586870339, 37.779293120699045 ], [ -122.385388632410709, 37.779386034580241 ], [ -122.385459481495417, 37.779382154625232 ], [ -122.385462265784483, 37.779287342547207 ], [ -122.385494023751633, 37.779379542293618 ], [ -122.385561413364954, 37.77937571733046 ], [ -122.385565944668585, 37.779281563755077 ], [ -122.385595973035649, 37.779373791139029 ], [ -122.385663362299539, 37.779369966397688 ], [ -122.385667876044934, 37.779275126373676 ], [ -122.385697921964919, 37.779368040176379 ], [ -122.385765311917211, 37.779364215640285 ], [ -122.385769825525102, 37.779269375337698 ], [ -122.385799871570299, 37.779362289114509 ], [ -122.385874162638899, 37.779357667403531 ], [ -122.38587696382136, 37.779263541485342 ], [ -122.385908722286104, 37.779355740845865 ], [ -122.385976111863471, 37.779351915920223 ], [ -122.385978912570593, 37.779257790005062 ], [ -122.386010671519301, 37.779349989881837 ], [ -122.386078060733283, 37.77934616462889 ], [ -122.386080844570401, 37.779251352255542 ], [ -122.386112620376821, 37.779344238286029 ], [ -122.386174820757347, 37.779340496265526 ], [ -122.386179333847906, 37.779245656221427 ], [ -122.386209380395755, 37.779338569894314 ], [ -122.386283671761092, 37.779333947919731 ], [ -122.386288202139696, 37.779239794041324 ], [ -122.386318231386639, 37.779332021242034 ], [ -122.386380431746588, 37.779328279113052 ], [ -122.386384962016137, 37.779234125779993 ], [ -122.386414991380946, 37.77932635295614 ], [ -122.38648584000218, 37.779322472115325 ], [ -122.386488640754166, 37.779228346176467 ], [ -122.386520399624118, 37.779320545652922 ], [ -122.386589518862621, 37.779316692697755 ], [ -122.386592302045827, 37.779221880311852 ], [ -122.386624078479215, 37.779314766204962 ], [ -122.386691468335471, 37.779310941139499 ], [ -122.386694251035379, 37.779216128482069 ], [ -122.386726027939744, 37.77930901434226 ], [ -122.386793400000514, 37.779304502779596 ], [ -122.38679620001615, 37.779210376838677 ], [ -122.386827959599159, 37.779302575952464 ], [ -122.386897078804992, 37.779298722816996 ], [ -122.386901608410881, 37.779204569189005 ], [ -122.386931638412193, 37.779296796508632 ], [ -122.386992108980877, 37.779293081467337 ], [ -122.386996638465945, 37.779198927835616 ], [ -122.387026668576013, 37.779291154856551 ], [ -122.387095787760913, 37.779287301604562 ], [ -122.38710029967234, 37.779192461524332 ], [ -122.387130347350677, 37.779285374963401 ], [ -122.387199466531811, 37.779281521925199 ], [ -122.387204309717603, 37.779199724010219 ], [ -122.387234026109212, 37.779279594979052 ], [ -122.387304857552181, 37.779275027470717 ], [ -122.387309700628478, 37.779193229825893 ], [ -122.387339417137795, 37.779273101042833 ], [ -122.387415455175415, 37.779269136564935 ], [ -122.387394991136247, 37.778940523542531 ], [ -122.387315302113649, 37.778936992225411 ], [ -122.387291312863496, 37.778946303668732 ], [ -122.387218525259328, 37.778941975080627 ], [ -122.38719628281504, 37.778951945540015 ], [ -122.38712349555685, 37.77894761688772 ], [ -122.387099505926273, 37.778956928022971 ], [ -122.387025006394012, 37.778953313441747 ], [ -122.387002746472433, 37.778962597145551 ], [ -122.386929976655324, 37.778958954818265 ], [ -122.386905987003843, 37.778968266188713 ], [ -122.386836658833175, 37.778963881995679 ], [ -122.386812687306417, 37.778973880055133 ], [ -122.386736440270226, 37.778969606535817 ], [ -122.386712468022296, 37.778979604036806 ], [ -122.386637951048542, 37.77897530276654 ], [ -122.386613979138446, 37.778985300516517 ], [ -122.386549822682738, 37.778980146669305 ], [ -122.386527580483204, 37.778990116996944 ], [ -122.386449603383866, 37.778985870976705 ], [ -122.386425631783965, 37.778995868408273 ], [ -122.386356303615884, 37.778991483932835 ], [ -122.386332313881979, 37.779000795186512 ], [ -122.386256084279836, 37.778997207801154 ], [ -122.386233824940902, 37.779006491348653 ], [ -122.386164496774228, 37.779002106760423 ], [ -122.386140524798748, 37.779012104688697 ], [ -122.386067737197138, 37.779007775390234 ], [ -122.386043765192852, 37.779017772749661 ], [ -122.385962346433857, 37.779014268190103 ], [ -122.385938356643209, 37.779023579363574 ], [ -122.385865569388116, 37.779019249934791 ], [ -122.385841597013936, 37.779029247533202 ], [ -122.385768809758915, 37.779024918044691 ], [ -122.385744837376848, 37.779034915898023 ], [ -122.385675509212518, 37.779030531022293 ], [ -122.385651520065593, 37.779039841851741 ], [ -122.385578749547165, 37.77903619870164 ], [ -122.385554760393234, 37.779045509785973 ], [ -122.385481989874023, 37.779041866576151 ], [ -122.385458000713072, 37.779051177915363 ], [ -122.385385212767062, 37.779046848201126 ], [ -122.385361223578457, 37.779056158971507 ], [ -122.385286723685297, 37.779052543297539 ], [ -122.385262734143524, 37.779061854327978 ], [ -122.385195135701593, 37.77905744150933 ], [ -122.385171163224882, 37.779067438971381 ], [ -122.385094916187072, 37.779063164390635 ], [ -122.385070944393846, 37.779073162095791 ], [ -122.385001616233609, 37.779068776823863 ], [ -122.38497935636353, 37.77907805986537 ], [ -122.384906586186588, 37.779074416294911 ], [ -122.384884326309916, 37.779083699593059 ], [ -122.384796197708141, 37.779088542459625 ], [ -122.384801451464668, 37.77915919068996 ], [ -122.384780712232896, 37.779160209251955 ], [ -122.384765734942761, 37.778979153747279 ], [ -122.384786456703722, 37.778977448743071 ], [ -122.384804149136215, 37.779060946405302 ], [ -122.384871538841949, 37.779057121830682 ], [ -122.384874585188271, 37.778972606432866 ], [ -122.384906098382288, 37.779055195841352 ], [ -122.384966568862538, 37.779051482113282 ], [ -122.384969632515677, 37.778967652883104 ], [ -122.385001128397789, 37.779049556096091 ], [ -122.385058156860921, 37.779046584353601 ], [ -122.385061202980566, 37.778962068401654 ], [ -122.385092716384577, 37.779044658035005 ], [ -122.385158376003019, 37.779040861234485 ], [ -122.38516315173905, 37.77895631817001 ], [ -122.385192918111116, 37.779038248990936 ], [ -122.385249946543951, 37.779035276606521 ], [ -122.385253009876607, 37.778951447368748 ], [ -122.385284506064338, 37.779033350506261 ], [ -122.385350165317007, 37.779029553604488 ], [ -122.385353228882295, 37.778945724358508 ], [ -122.385382995459778, 37.779027655131593 ], [ -122.385445195618914, 37.779023913770359 ], [ -122.385448258723784, 37.778940084252753 ], [ -122.385479755121978, 37.779021987338304 ], [ -122.385541972691954, 37.779018932096108 ], [ -122.385545018273902, 37.778934416680386 ], [ -122.385576532197149, 37.779017005910269 ], [ -122.385638732330676, 37.779013264172356 ], [ -122.385641777795314, 37.77892874847948 ], [ -122.385673291830699, 37.779011337958153 ], [ -122.38573203252615, 37.779007651778535 ], [ -122.385735094960694, 37.77892382225879 ], [ -122.385766592014193, 37.779005725262394 ], [ -122.385828792128677, 37.779001983424223 ], [ -122.385831854467739, 37.778918154451013 ], [ -122.385863351625531, 37.779000057428874 ], [ -122.385925569154423, 37.778997001709705 ], [ -122.385930344007448, 37.778912458338894 ], [ -122.385960128639468, 37.778995075411409 ], [ -122.386030959889439, 37.778990508668088 ], [ -122.386034022338819, 37.778906679409381 ], [ -122.386065519368728, 37.778988582338918 ], [ -122.386127736893627, 37.778985527062204 ], [ -122.386132511508848, 37.778900983408484 ], [ -122.386162278927955, 37.778982913985502 ], [ -122.386221036657432, 37.7789799137378 ], [ -122.386224081811065, 37.778895398298431 ], [ -122.386255596133822, 37.778977987627471 ], [ -122.386319526256145, 37.778974217575232 ], [ -122.386322588033238, 37.778890388314295 ], [ -122.38635408572037, 37.778972291161459 ], [ -122.386412826344156, 37.778968604368089 ], [ -122.386417618076294, 37.778884747421706 ], [ -122.386447385803351, 37.778966677926974 ], [ -122.386514775006972, 37.77896285296778 ], [ -122.386517836902243, 37.778879023421496 ], [ -122.386549334453889, 37.778960926222204 ], [ -122.386602903347566, 37.778958008816609 ], [ -122.386605964804218, 37.778874179548069 ], [ -122.386637462796912, 37.778956082319787 ], [ -122.386699662825961, 37.778952340022151 ], [ -122.386702724173148, 37.778868510751018 ], [ -122.386734222270135, 37.778950413496958 ], [ -122.386799881728336, 37.778946616056871 ], [ -122.386804673015121, 37.778862758819848 ], [ -122.386834441160303, 37.778944689227728 ], [ -122.386894928894066, 37.778941660955091 ], [ -122.38689797293344, 37.778857145503274 ], [ -122.386929488335198, 37.77893973464726 ], [ -122.386989958613299, 37.77893601960681 ], [ -122.386993002191389, 37.778851503883409 ], [ -122.387024518042367, 37.778934092996543 ], [ -122.387086718033501, 37.778930350494704 ], [ -122.387091509002346, 37.778846493520362 ], [ -122.387121277457396, 37.778928423856051 ], [ -122.387183477445888, 37.778924681577777 ], [ -122.387186764992791, 37.77884977579707 ], [ -122.387218036857675, 37.778922754636191 ], [ -122.387280254273051, 37.778919698476713 ], [ -122.387283524285621, 37.778844106523373 ], [ -122.387314813687013, 37.77891777178133 ], [ -122.387382202448663, 37.778913946057301 ], [ -122.387364166474967, 37.778612763090031 ], [ -122.387286207520319, 37.778609204336291 ], [ -122.387262218365407, 37.778618515499687 ], [ -122.387185989110648, 37.778614928715285 ], [ -122.387161999948319, 37.778624240132871 ], [ -122.387092672083611, 37.778619856090089 ], [ -122.387070429718904, 37.778629826526299 ], [ -122.386994183021031, 37.778625553173391 ], [ -122.386971941319302, 37.778635523030793 ], [ -122.386900883746804, 37.778631166560793 ], [ -122.386876911637231, 37.778641164370391 ], [ -122.38679893557611, 37.778636918569845 ], [ -122.386774963796881, 37.778646916353182 ], [ -122.386707365642749, 37.778642504401184 ], [ -122.386683376072511, 37.77865181600145 ], [ -122.386614065647606, 37.778648118121843 ], [ -122.386590076741811, 37.778657429142889 ], [ -122.386510387715276, 37.778653897287107 ], [ -122.386486398801594, 37.778663208561632 ], [ -122.386417070940411, 37.778658824121642 ], [ -122.386393098756784, 37.778668821832838 ], [ -122.38631686949239, 37.77866523448656 ], [ -122.386292880557747, 37.778674545996267 ], [ -122.38622009293212, 37.778670216797138 ], [ -122.386197851113138, 37.778680186508431 ], [ -122.386125063833461, 37.778675857245105 ], [ -122.38610282131512, 37.778685827224102 ], [ -122.386028304671399, 37.778681525568288 ], [ -122.38600433277405, 37.778691523194873 ], [ -122.385931545494543, 37.77868719381209 ], [ -122.385909285516078, 37.778696477309893 ], [ -122.385834786309914, 37.778692862251056 ], [ -122.385810796946046, 37.778702173118987 ], [ -122.385741486517588, 37.778698474726497 ], [ -122.385717497147184, 37.778707785850045 ], [ -122.385642980157812, 37.778703483956278 ], [ -122.385619007862559, 37.778713481784578 ], [ -122.385549680005639, 37.778709096834618 ], [ -122.385525708373962, 37.778719094083733 ], [ -122.385451191384348, 37.778714792068747 ], [ -122.385428949109837, 37.778724761915029 ], [ -122.385354432120124, 37.778720459838901 ], [ -122.385330442694098, 37.778729770883643 ], [ -122.385257672841163, 37.778726127529652 ], [ -122.385235413119702, 37.778735411169237 ], [ -122.385147302363819, 37.778740940194126 ], [ -122.385154355852308, 37.778814307082541 ], [ -122.385130156934849, 37.778815380480168 ], [ -122.385113449499144, 37.778634352661491 ], [ -122.385137630588289, 37.778632592828004 ], [ -122.385155236200447, 37.778712657669637 ], [ -122.385222625586081, 37.778708833443275 ], [ -122.385225758626859, 37.778627749705855 ], [ -122.38525718494833, 37.778706907076334 ], [ -122.38531938483824, 37.778703165506691 ], [ -122.385322517780125, 37.778622082041188 ], [ -122.385352214498553, 37.778701267322347 ], [ -122.385416144082598, 37.778697497765265 ], [ -122.385419276918626, 37.778616414297126 ], [ -122.385450703441506, 37.77869557161619 ], [ -122.38551290331219, 37.778691829944421 ], [ -122.385517765757882, 37.778610719084014 ], [ -122.38554746266594, 37.778689903767003 ], [ -122.385606220534413, 37.778686903820002 ], [ -122.385611082870923, 37.77860579268107 ], [ -122.385640779890451, 37.778684977889775 ], [ -122.385704709445832, 37.778681208176224 ], [ -122.385707841966195, 37.778600124700183 ], [ -122.385739268789678, 37.778679281942566 ], [ -122.385798008866331, 37.778675595460832 ], [ -122.385801141637501, 37.77859451225126 ], [ -122.385832568205146, 37.778673669199819 ], [ -122.385896498100962, 37.77866989992588 ], [ -122.385899630058546, 37.778588816175542 ], [ -122.385931057427598, 37.778667973361443 ], [ -122.385991527195401, 37.778664259112972 ], [ -122.385994659747908, 37.778583175623524 ], [ -122.386026086530904, 37.778662333069811 ], [ -122.386090016393183, 37.778658563141803 ], [ -122.386093148146045, 37.778577479660726 ], [ -122.386124575716508, 37.778656636795191 ], [ -122.386185062898718, 37.778653608892128 ], [ -122.386202015472293, 37.778571617834082 ], [ -122.386209244307707, 37.778651848558759 ], [ -122.386280092656236, 37.778647968384718 ], [ -122.386284954247373, 37.778566856942867 ], [ -122.386314651962735, 37.778646041707809 ], [ -122.386380311166334, 37.778642244226567 ], [ -122.386385172654656, 37.778561133055092 ], [ -122.386414870481516, 37.778640318069463 ], [ -122.386473610832795, 37.778636630970986 ], [ -122.386476742511945, 37.778555547473879 ], [ -122.386508170135954, 37.778634704511973 ], [ -122.386577288736902, 37.778630851563484 ], [ -122.386580420309613, 37.778549768338095 ], [ -122.386611848034704, 37.778628925074045 ], [ -122.386670588381151, 37.778625238426613 ], [ -122.386673719491867, 37.778544154655052 ], [ -122.386705147666916, 37.778623311635243 ], [ -122.386762158289017, 37.778619652349228 ], [ -122.386765307091096, 37.778539255288756 ], [ -122.386796717583763, 37.778617726080171 ], [ -122.386864106438878, 37.778613900371958 ], [ -122.386867237344845, 37.778532816869664 ], [ -122.386898665721333, 37.778611973798455 ], [ -122.386959152842579, 37.77860894577281 ], [ -122.386962284329485, 37.778527861982276 ], [ -122.38699369467254, 37.778606332452348 ], [ -122.387057641885832, 37.778603248718746 ], [ -122.387060772580114, 37.778522165211164 ], [ -122.387092183716675, 37.778600635643997 ], [ -122.38715094145212, 37.778597634927166 ], [ -122.387154334023649, 37.778526848079068 ], [ -122.387183771011991, 37.778595735958248 ], [ -122.38724942978078, 37.778591937998534 ], [ -122.387254551963991, 37.778521123457843 ], [ -122.387283989043027, 37.778590011312069 ], [ -122.387351378207768, 37.778586185868939 ], [ -122.387340432224974, 37.778359741993853 ], [ -122.385336224880277, 37.778480397809368 ], [ -122.385292215885698, 37.77845088576418 ], [ -122.385332752982109, 37.778411780987071 ], [ -122.385371486072913, 37.77843794377425 ], [ -122.387505436887736, 37.778315896876499 ], [ -122.387507690304943, 37.778336462786434 ], [ -122.387691125877438, 37.77833695908997 ], [ -122.387623881872372, 37.778210305157842 ], [ -122.390410335866818, 37.777142437885963 ], [ -122.390374260520773, 37.777113759158638 ], [ -122.390348522259259, 37.777093298197975 ], [ -122.389857561580598, 37.776499598895249 ], [ -122.389810930692391, 37.776503093591124 ], [ -122.389821814335647, 37.776590819837281 ], [ -122.38767762612953, 37.776716506820485 ], [ -122.387616143310936, 37.776748393866363 ], [ -122.387584974466847, 37.776747519757691 ], [ -122.387567625478937, 37.776745737093393 ], [ -122.387552006163176, 37.776743927007061 ], [ -122.387536369402838, 37.776741430474004 ], [ -122.387505026105131, 37.776733691622944 ], [ -122.387489337013818, 37.776729135749626 ], [ -122.387475360143554, 37.776723865736592 ], [ -122.387461365830632, 37.776717909277224 ], [ -122.387447354082425, 37.776711266646082 ], [ -122.387419295684069, 37.77669660766567 ], [ -122.387406978711525, 37.776688564173618 ], [ -122.387394643958672, 37.776679834515676 ], [ -122.387373399569938, 37.776660946088832 ], [ -122.387362760285328, 37.776650815560998 ], [ -122.38735385031967, 37.776640657346583 ], [ -122.387344922566982, 37.776629812692306 ], [ -122.387335978065309, 37.776618281581548 ], [ -122.387328762881694, 37.776606722784834 ], [ -122.387323277015341, 37.77659513630249 ], [ -122.387316044392662, 37.776582891060237 ], [ -122.387312271446064, 37.776570590705511 ], [ -122.387306768480713, 37.776558317497482 ], [ -122.387304707400645, 37.776545302738185 ], [ -122.387302663771393, 37.776532974698164 ], [ -122.387298541607819, 37.776506944904682 ], [ -122.387299939508821, 37.776493875044565 ], [ -122.387299608083069, 37.776480832320061 ], [ -122.387311076202096, 37.776319268586136 ], [ -122.387103587414643, 37.776325337046984 ], [ -122.387082386717438, 37.776103864569507 ], [ -122.385027425864848, 37.776335891081246 ], [ -122.385011788936296, 37.776333394493314 ], [ -122.384999507467228, 37.776326723359297 ], [ -122.384988868215274, 37.776316592896777 ], [ -122.385025875302759, 37.776274797468226 ], [ -122.384827030762366, 37.775394163410851 ], [ -122.384880527469605, 37.775388501004997 ], [ -122.384877317104468, 37.775330181090084 ], [ -122.386995863440688, 37.775082030997162 ], [ -122.386923061819843, 37.774327799469994 ], [ -122.381813822024597, 37.774615486663201 ], [ -122.381456516831207, 37.771917559332238 ], [ -122.384671101595274, 37.773340605158566 ], [ -122.384690336061794, 37.773348538332996 ], [ -122.384706059111224, 37.773354467747083 ], [ -122.38472349432422, 37.773359682786399 ], [ -122.384740912113955, 37.773364211103086 ], [ -122.384758312493929, 37.773368053246259 ], [ -122.384775695456668, 37.773371208941398 ], [ -122.384793061001673, 37.77337367818847 ], [ -122.384812120957065, 37.773374747168276 ], [ -122.384829452003999, 37.773375843238945 ], [ -122.384848494879705, 37.773376225487283 ], [ -122.38486577332894, 37.77337526249628 ], [ -122.386759568868584, 37.773272861257844 ], [ -122.386575835242937, 37.772851405934894 ], [ -122.38657206225551, 37.772839105279289 ], [ -122.386575190127743, 37.772826007459408 ], [ -122.386581812023351, 37.772814227444925 ], [ -122.386593692364443, 37.772805109622055 ], [ -122.386717419519911, 37.772771540111776 ], [ -122.386708370613761, 37.772755890279406 ], [ -122.386704597609267, 37.772743589627844 ], [ -122.386699094688865, 37.772731316663254 ], [ -122.386691548686684, 37.772706715359256 ], [ -122.38668746217553, 37.772682058686371 ], [ -122.386685401318488, 37.772669044181889 ], [ -122.386683357538772, 37.772656715579039 ], [ -122.386682694959006, 37.772630630932561 ], [ -122.386684111009814, 37.772618246955815 ], [ -122.386683779716421, 37.772605204495207 ], [ -122.386685195434609, 37.772592821073083 ], [ -122.386688340360166, 37.772580409425913 ], [ -122.386661929793348, 37.772494305123679 ], [ -122.386659886368264, 37.772481976514491 ], [ -122.386661302081109, 37.772469592817821 ], [ -122.38666965348915, 37.772457784842032 ], [ -122.386681551212874, 37.772449354004202 ], [ -122.386714186256512, 37.772439903990914 ], [ -122.386679336788333, 37.772362175448528 ], [ -122.386644902453284, 37.772368906802633 ], [ -122.386631976023693, 37.772336837636807 ], [ -122.386620901217455, 37.772309545906367 ], [ -122.386592865526183, 37.772227587668034 ], [ -122.386585249868389, 37.772200240573625 ], [ -122.386577616780784, 37.772172207033208 ], [ -122.386570001134302, 37.772144859937534 ], [ -122.386558193761417, 37.772088737774723 ], [ -122.386541497954923, 37.771976381892166 ], [ -122.386539053911875, 37.771948265304715 ], [ -122.386438565499603, 37.771943006477983 ], [ -122.386459543589496, 37.771678968587629 ], [ -122.386414488196351, 37.771676255706971 ], [ -122.386416883827636, 37.771634327179655 ], [ -122.386370064064607, 37.77163026961771 ], [ -122.386370799901215, 37.771591114275026 ], [ -122.386346586274058, 37.771591501747267 ], [ -122.386349295737674, 37.771561929239198 ], [ -122.386373509355195, 37.77156154176641 ], [ -122.386383018231356, 37.77145906765827 ], [ -122.386277185313745, 37.771447713434846 ], [ -122.386286481744634, 37.771404987761201 ], [ -122.386248187810011, 37.771395986654248 ], [ -122.386213474980906, 37.771391735029944 ], [ -122.386175916991888, 37.77134357828146 ], [ -122.386158586399219, 37.771342482408336 ], [ -122.386142916299207, 37.771338612516935 ], [ -122.386128940538697, 37.771333342339254 ], [ -122.386116624249169, 37.771325298710295 ], [ -122.38610598590013, 37.771315168059481 ], [ -122.386097059315517, 37.771304323294956 ], [ -122.386091556948031, 37.771292050293354 ], [ -122.386142815223778, 37.771266508342599 ], [ -122.38608534348306, 37.771183647247369 ], [ -122.386039082134474, 37.771201555805888 ], [ -122.386023428808656, 37.771198372355109 ], [ -122.386011095814837, 37.771189642258307 ], [ -122.386041843996964, 37.771174042639558 ], [ -122.38589549059256, 37.770997835524099 ], [ -122.385920430782591, 37.770821635056869 ], [ -122.385847920885212, 37.770691630725352 ], [ -122.385837299399952, 37.770682186505887 ], [ -122.385823306356514, 37.770676229845748 ], [ -122.385795755972097, 37.770681477661917 ], [ -122.3857856231634, 37.770691253905198 ], [ -122.385782477468226, 37.770703665268918 ], [ -122.385798079922523, 37.771250048587049 ], [ -122.385622255652152, 37.772162083932052 ], [ -122.385554576344688, 37.772154239361129 ], [ -122.385681891861481, 37.771444190077446 ], [ -122.385515420224039, 37.771429684819722 ], [ -122.38546780756441, 37.771530707856108 ], [ -122.385335917119292, 37.771651620630855 ], [ -122.385287036807085, 37.771634547559174 ], [ -122.385642517132254, 37.770847369439849 ], [ -122.385683664105002, 37.770764304300435 ], [ -122.385720236601344, 37.770637361956886 ], [ -122.385724274638122, 37.77059197382043 ], [ -122.385559320924514, 37.770637189122013 ], [ -122.383154992189901, 37.769708715839762 ], [ -122.383375582677616, 37.76933298733065 ], [ -122.385570199525418, 37.770179656618097 ], [ -122.385492733315886, 37.769990673321502 ], [ -122.38547497668678, 37.769836444052352 ], [ -122.38501929687861, 37.768856908704215 ], [ -122.384893636964136, 37.768882266758567 ], [ -122.384787561607197, 37.76865665734794 ], [ -122.38500549801104, 37.768585873156887 ], [ -122.385007528170945, 37.768529529274218 ], [ -122.385037840293677, 37.768496768478933 ], [ -122.385006697245259, 37.768428594043755 ], [ -122.38508052413836, 37.768406124957501 ], [ -122.385042550658142, 37.768341493386622 ], [ -122.38510771303342, 37.768318476117585 ], [ -122.385167686616882, 37.76829554179551 ], [ -122.385149073018809, 37.768175662662372 ], [ -122.385147029970554, 37.768163334292169 ], [ -122.385144812710706, 37.768144141461285 ], [ -122.38470084491486, 37.768171155877575 ], [ -122.384624005099198, 37.768074869544797 ], [ -122.383881223535184, 37.768121766230543 ], [ -122.383842264982363, 37.767745376829602 ], [ -122.382456893000523, 37.767832748125578 ], [ -122.382439473722869, 37.767691561099248 ], [ -122.384901003015941, 37.7675361686969 ], [ -122.384848518174209, 37.767018283287165 ], [ -122.384847918040649, 37.767012360130963 ], [ -122.382854528282635, 37.767138299649837 ], [ -122.382800567665527, 37.766784124750316 ], [ -122.385859942984411, 37.766599245791156 ], [ -122.385894343938588, 37.766523155929399 ], [ -122.385924379700455, 37.76641142564803 ], [ -122.385933483994975, 37.766361149056699 ], [ -122.385914237836445, 37.766284543788501 ], [ -122.385992644580284, 37.766169979928648 ], [ -122.386291877422522, 37.765689977677845 ], [ -122.386372587962043, 37.765598038596792 ], [ -122.386520103480208, 37.765411635088689 ], [ -122.386541125110512, 37.765285627921941 ], [ -122.386469993174757, 37.765277839225583 ], [ -122.386436744413672, 37.76505861928149 ], [ -122.386447302231559, 37.764929345689509 ], [ -122.386483096429387, 37.76490817106005 ], [ -122.386501478211272, 37.764814482226171 ], [ -122.386491269379732, 37.764616868735338 ], [ -122.38644793023208, 37.764613442288407 ], [ -122.386451155646682, 37.764399819097633 ], [ -122.386482284438713, 37.7643993208899 ], [ -122.386481482527714, 37.764367744084808 ], [ -122.386603169586195, 37.764322532741204 ], [ -122.386601548243974, 37.76425869323451 ], [ -122.386585931922852, 37.764256883010674 ], [ -122.386571940029569, 37.764250926432666 ], [ -122.38656131971895, 37.764241482262236 ], [ -122.38655581779787, 37.764229209267128 ], [ -122.38655550400469, 37.764216853507875 ], [ -122.386720358990686, 37.764100218114386 ], [ -122.386739211018067, 37.764025063281011 ], [ -122.386733691302794, 37.764012103852934 ], [ -122.38672476584992, 37.764001259116526 ], [ -122.386714128120815, 37.763991128513133 ], [ -122.38670010140504, 37.763983799331974 ], [ -122.386686126988522, 37.763978529213567 ], [ -122.386670492591179, 37.763976032291019 ], [ -122.386649740182264, 37.763976364463595 ], [ -122.386634036749314, 37.763971122014347 ], [ -122.386621721632579, 37.763963078702353 ], [ -122.386611066835059, 37.763952261637705 ], [ -122.386603852994298, 37.763940702770881 ], [ -122.386600062668251, 37.763927715381541 ], [ -122.386601461140231, 37.763914645215138 ], [ -122.386604606072254, 37.763902234094914 ], [ -122.386738907102767, 37.763808749639459 ], [ -122.386828889531799, 37.763741383598706 ], [ -122.386840716091143, 37.763730206671987 ], [ -122.386855983933643, 37.763718287929905 ], [ -122.386869539846316, 37.763707083316298 ], [ -122.386884824769794, 37.763695851022327 ], [ -122.386900145253236, 37.763685991607943 ], [ -122.38691721218359, 37.763676790958648 ], [ -122.386934296546428, 37.763668276753165 ], [ -122.386951398349183, 37.763660449266119 ], [ -122.386970246931185, 37.763653279988162 ], [ -122.386989112953756, 37.763646797428088 ], [ -122.387007996064526, 37.763641001316863 ], [ -122.387026897301666, 37.763635891637833 ], [ -122.387047562432002, 37.763632127441824 ], [ -122.387066515625051, 37.76362907682639 ], [ -122.387271786163467, 37.763605188503739 ], [ -122.387241692331358, 37.763510215504958 ], [ -122.386905339639924, 37.763549936808673 ], [ -122.386894896912324, 37.763479371256736 ], [ -122.386775626938885, 37.763415354890846 ], [ -122.386725141086345, 37.763471101073094 ], [ -122.386629276523749, 37.763443106355105 ], [ -122.386635775530237, 37.763426520918784 ], [ -122.386503316054672, 37.763388124513462 ], [ -122.386596764100844, 37.763184731253212 ], [ -122.386314395824243, 37.763102036396099 ], [ -122.386214308919619, 37.763316522997265 ], [ -122.385510514730285, 37.763329843761532 ], [ -122.385502904472929, 37.763234510683318 ], [ -122.385278141497096, 37.763240166132988 ], [ -122.385288368966343, 37.763370480347639 ], [ -122.38518118352205, 37.763373568175126 ], [ -122.385104258477085, 37.762319301701545 ], [ -122.384682038971576, 37.762111108737756 ], [ -122.384291646501694, 37.762134518628663 ], [ -122.384461265879253, 37.764047083641032 ], [ -122.384304084745608, 37.764057150214732 ], [ -122.384132119672074, 37.762256559028991 ], [ -122.383427389000644, 37.762300785113965 ], [ -122.383450606038608, 37.762465914870035 ], [ -122.383630300057192, 37.762456862777178 ], [ -122.3836690703355, 37.762553071423532 ], [ -122.383744969614881, 37.762544304446941 ], [ -122.383904907669475, 37.764143878058199 ], [ -122.383832343655854, 37.764147784454543 ], [ -122.383810360659879, 37.764236036587789 ], [ -122.383580701961776, 37.764253441592125 ], [ -122.383538646212543, 37.764164152408867 ], [ -122.383462623420698, 37.764168114122675 ], [ -122.383459954192517, 37.764131073630139 ], [ -122.383299279201026, 37.764139821513076 ], [ -122.383109557752064, 37.762320284660944 ], [ -122.382290828789408, 37.762371818989514 ], [ -122.38251353675102, 37.764606298459128 ], [ -122.382344144468703, 37.764612437347246 ], [ -122.382121545934865, 37.762382076243206 ], [ -122.38174844490716, 37.762405201559091 ], [ -122.381695087947634, 37.764738170521944 ], [ -122.381631135065035, 37.764740565182315 ], [ -122.381630936164214, 37.764801000118787 ], [ -122.381492672008349, 37.764806640579245 ], [ -122.381450941763589, 37.76493503772344 ], [ -122.381172352882004, 37.76493330344676 ], [ -122.381123981911756, 37.764799477425129 ], [ -122.380983831900423, 37.764798967139676 ], [ -122.381029346103958, 37.762223710202747 ], [ -122.38330764917707, 37.762081573209855 ], [ -122.382185556454559, 37.760879873475361 ], [ -122.382168402620636, 37.760885641207267 ], [ -122.382152908506868, 37.760888635257665 ], [ -122.382137362223574, 37.760889570238476 ], [ -122.382121780810863, 37.760889132328003 ], [ -122.38210441862546, 37.760886662951151 ], [ -122.382090445117498, 37.760881392285128 ], [ -122.382076454213362, 37.760875434895482 ], [ -122.382064140442054, 37.760867390822959 ], [ -122.382053521188098, 37.760857946240883 ], [ -122.382044596105573, 37.76084710115525 ], [ -122.382023253267107, 37.760824093302155 ], [ -122.382014294110562, 37.760811875582888 ], [ -122.382005317206719, 37.760798970871889 ], [ -122.381998069607818, 37.76078603882209 ], [ -122.381986997879679, 37.76075874660679 ], [ -122.381983174441103, 37.760744386430567 ], [ -122.381981079958692, 37.760729998921875 ], [ -122.381980366958516, 37.760701854577775 ], [ -122.381981731049137, 37.76068741129496 ], [ -122.381984824092612, 37.760672940679711 ], [ -122.38198793521687, 37.760659156500736 ], [ -122.381992775285752, 37.760645344714604 ], [ -122.381695267558513, 37.760647347915544 ], [ -122.381838070964363, 37.762118779804872 ], [ -122.381335375976406, 37.762148093200558 ], [ -122.381148296266858, 37.760157516712624 ], [ -122.380611046370689, 37.760188065470565 ], [ -122.380912187127535, 37.763336013717719 ], [ -122.380701275367471, 37.763342126118935 ], [ -122.380400282533174, 37.760199669192616 ], [ -122.379507164112297, 37.760250310896886 ], [ -122.379808005517475, 37.763456637815253 ], [ -122.379779318273378, 37.763485250755494 ], [ -122.379565016753276, 37.763494162073435 ], [ -122.379533176547326, 37.763466514378344 ], [ -122.379201704975202, 37.759937914686475 ], [ -122.381256986630419, 37.759667520373661 ], [ -122.381256577752055, 37.759583059710486 ], [ -122.381469121143184, 37.759573486743299 ], [ -122.381446760180623, 37.75930533388199 ], [ -122.381389798546991, 37.759310363785765 ], [ -122.381303248927566, 37.759308311423226 ], [ -122.381202252005025, 37.758325846274602 ], [ -122.381200105587652, 37.758309399127988 ], [ -122.381197941449869, 37.758292265813587 ], [ -122.381197089710227, 37.758258629870305 ], [ -122.381199679398975, 37.758224251997007 ], [ -122.381200991455458, 37.758207749648136 ], [ -122.38120401536365, 37.75819053325035 ], [ -122.381207056652954, 37.758174003300283 ], [ -122.381221367866601, 37.758124330651064 ], [ -122.381234402126012, 37.75809253323947 ], [ -122.381242648836448, 37.758076607200529 ], [ -122.381262669528837, 37.75804744489573 ], [ -122.381289433303067, 37.758011307974613 ], [ -122.381302797797105, 37.757992553063836 ], [ -122.381314432708805, 37.757973825759706 ], [ -122.381327797196747, 37.757955071120548 ], [ -122.381337703552219, 37.757936371131194 ], [ -122.381360938912749, 37.75789754361324 ], [ -122.381380716140868, 37.757858771292213 ], [ -122.381390587715856, 37.757838698951588 ], [ -122.381398729699725, 37.757818653670306 ], [ -122.381408600911726, 37.757798581058942 ], [ -122.381416742893265, 37.757778536050878 ], [ -122.381423155645805, 37.757758518646433 ], [ -122.381431297626008, 37.7577384739118 ], [ -122.381444088336707, 37.757697065930351 ], [ -122.381450501074838, 37.757677048524144 ], [ -122.381464499104396, 37.757615019779642 ], [ -122.381469148185403, 37.757593657075738 ], [ -122.381475021977749, 37.757552359783979 ], [ -122.381477941486636, 37.757531024690024 ], [ -122.381480843608969, 37.757509003148037 ], [ -122.381427480867771, 37.75751946944429 ], [ -122.381405721286413, 37.757343328372727 ], [ -122.381468641764485, 37.757300433411309 ], [ -122.381446638421224, 37.75711468207534 ], [ -122.381323864533158, 37.757116641937891 ], [ -122.381323169199888, 37.757089184020202 ], [ -122.381364426846005, 37.75707891127486 ], [ -122.381321992818584, 37.756564544822638 ], [ -122.381321662531036, 37.756551502035926 ], [ -122.38132307883005, 37.756539118369027 ], [ -122.381326206602509, 37.756526020931318 ], [ -122.381331099013835, 37.756514268226432 ], [ -122.381339449129754, 37.756502460600949 ], [ -122.381347834701543, 37.756492025859821 ], [ -122.381357966510507, 37.756482250242897 ], [ -122.381369844881263, 37.756473132920476 ], [ -122.381383504601786, 37.756466047611781 ], [ -122.381397181710526, 37.756459649024094 ], [ -122.381399266420004, 37.75640536415446 ], [ -122.381383669266881, 37.756404239961626 ], [ -122.381368019603769, 37.756401055879024 ], [ -122.381354081758502, 37.756397158017677 ], [ -122.381338379955181, 37.756391914861666 ], [ -122.381324389963666, 37.756385957652711 ], [ -122.38129976407464, 37.756369869336808 ], [ -122.381289145560629, 37.756360424678547 ], [ -122.381280238512659, 37.756350265974667 ], [ -122.381265813968113, 37.756327147557755 ], [ -122.381260331236177, 37.756315560741236 ], [ -122.381258271437829, 37.756302546110341 ], [ -122.381256229700497, 37.756290217367201 ], [ -122.381255916815178, 37.756277861302344 ], [ -122.381240855709805, 37.755888041607285 ], [ -122.381237067430561, 37.75587505429101 ], [ -122.381229855216972, 37.755863495353786 ], [ -122.381219219049328, 37.755853363971241 ], [ -122.381205211793798, 37.755846720574091 ], [ -122.381189545219783, 37.75584285001387 ], [ -122.381023178934683, 37.755831084166076 ], [ -122.381005052890941, 37.755798410637965 ], [ -122.380939344081298, 37.755799459348452 ], [ -122.380938179657051, 37.755753467322073 ], [ -122.381031311951133, 37.755742366765169 ], [ -122.381010248974547, 37.755730341878809 ], [ -122.38098743910173, 37.755717658143908 ], [ -122.380924145958886, 37.755677464760758 ], [ -122.380881915817497, 37.755649296531168 ], [ -122.380862530269653, 37.755635184397235 ], [ -122.380841397836633, 37.755620413687737 ], [ -122.380821994593731, 37.755605615653565 ], [ -122.380802573973469, 37.755590130893374 ], [ -122.38078488252836, 37.755574618260482 ], [ -122.380758354080839, 37.755551693216646 ], [ -122.380751124581494, 37.755539447252119 ], [ -122.380745589509232, 37.755525801070959 ], [ -122.38074007147074, 37.755512841343261 ], [ -122.380736283298162, 37.75549985401004 ], [ -122.38073074823852, 37.755486208102681 ], [ -122.380728671510397, 37.755472506457778 ], [ -122.380724865279745, 37.755458832961516 ], [ -122.380718635462969, 37.755417728569704 ], [ -122.380718270538722, 37.755403313156876 ], [ -122.380719652161702, 37.755389556598288 ], [ -122.380719304614729, 37.755375827633614 ], [ -122.380722067512963, 37.755348314521783 ], [ -122.380728289091294, 37.755320746216135 ], [ -122.380731417602021, 37.755307648505891 ], [ -122.380736257562816, 37.755293837033165 ], [ -122.38074597221329, 37.755267586159846 ], [ -122.380759145196464, 37.755241280371166 ], [ -122.380767425749198, 37.755226726990642 ], [ -122.380777557807846, 37.755216951415953 ], [ -122.380789436047536, 37.755207834150042 ], [ -122.3808030608416, 37.755199376285184 ], [ -122.380814973485883, 37.755191631918663 ], [ -122.380828633023739, 37.75518454667273 ], [ -122.380844056826504, 37.755178806720394 ], [ -122.380857751116352, 37.755173094367549 ], [ -122.380873209326097, 37.755168727313375 ], [ -122.380888684919853, 37.755165046980004 ], [ -122.380905907041537, 37.755162024947012 ], [ -122.380921434762783, 37.75516040367944 ], [ -122.380952524623297, 37.755158534314724 ], [ -122.380976698502963, 37.755156774772679 ], [ -122.380999125498533, 37.755154356655588 ], [ -122.381021534766717, 37.755151252091551 ], [ -122.381043927344422, 37.755147461063977 ], [ -122.381066302193489, 37.755142983589487 ], [ -122.38108865965917, 37.755137819662529 ], [ -122.38111099939502, 37.755131969288627 ], [ -122.38113332243789, 37.755125432451251 ], [ -122.381153915967687, 37.755118923215505 ], [ -122.381176203900949, 37.755111013753655 ], [ -122.38119676265265, 37.755103131339425 ], [ -122.381225828164943, 37.755089619604064 ], [ -122.381246943141264, 37.755103703797808 ], [ -122.381242963358787, 37.755083165829973 ], [ -122.38126015068255, 37.755078770848776 ], [ -122.381277355393678, 37.755075062587856 ], [ -122.381292865706087, 37.755072754823154 ], [ -122.38131010484075, 37.755070419733926 ], [ -122.381327362035009, 37.75506877053013 ], [ -122.381361945276268, 37.755068218467898 ], [ -122.381396598051168, 37.755070412188203 ], [ -122.381413958860932, 37.755072881946376 ], [ -122.381448715950555, 37.755079194614936 ], [ -122.381480084590436, 37.755088307721437 ], [ -122.381497532329476, 37.755094209708098 ], [ -122.381511539483228, 37.755100853620512 ], [ -122.381527276134307, 37.755107469370813 ], [ -122.381548321633034, 37.755118807717949 ], [ -122.381562363566104, 37.755126824520609 ], [ -122.381579829044853, 37.755133412663042 ], [ -122.381595565024199, 37.755140028689837 ], [ -122.381612996090695, 37.755145244200165 ], [ -122.381630391696547, 37.755149086822691 ], [ -122.381647770609987, 37.755152242983492 ], [ -122.381665131447221, 37.755154712704652 ], [ -122.381684187368847, 37.755155781907895 ], [ -122.38170149639484, 37.755156192273823 ], [ -122.382833235564902, 37.755035795269471 ], [ -122.383668861276263, 37.754971624407645 ], [ -122.383685978819074, 37.754964483555838 ], [ -122.38372028351472, 37.754952947636127 ], [ -122.383737470668777, 37.75494855256818 ], [ -122.383756404038564, 37.75494481631263 ], [ -122.383773626345388, 37.754941794129564 ], [ -122.383792594868737, 37.754939430758334 ], [ -122.383811580457817, 37.754937754111957 ], [ -122.38384268824322, 37.754936570147059 ], [ -122.383861726388119, 37.754936952556008 ], [ -122.383880781586896, 37.754938021140639 ], [ -122.383896396575224, 37.754939831714687 ], [ -122.384073136269635, 37.754951427650568 ], [ -122.384099862744918, 37.754913917176538 ], [ -122.384076095308828, 37.754658835300546 ], [ -122.383998950777894, 37.754618177983438 ], [ -122.383899356302948, 37.754647239093948 ], [ -122.383797997440993, 37.754674954869053 ], [ -122.383696604385719, 37.754701297650087 ], [ -122.383569360630759, 37.75473148712782 ], [ -122.383548680403266, 37.754734564546567 ], [ -122.3835279827709, 37.754736955513799 ], [ -122.383505538587656, 37.754738687938882 ], [ -122.38348480614728, 37.754739706002738 ], [ -122.383441577306456, 37.754740396857535 ], [ -122.383400008003704, 37.754738313997002 ], [ -122.38337920595491, 37.754736586250608 ], [ -122.383356657006146, 37.754734199690795 ], [ -122.383335820163737, 37.754731099315492 ], [ -122.383314965907985, 37.754727311939398 ], [ -122.383295841160447, 37.754723497196949 ], [ -122.383254063070865, 37.754713177184357 ], [ -122.383234885782983, 37.75470730309371 ], [ -122.383213961945074, 37.754700770182538 ], [ -122.383194767270453, 37.754694209911989 ], [ -122.383175537439726, 37.754686276198775 ], [ -122.383158037470992, 37.754678315390812 ], [ -122.383138807994129, 37.754670381666052 ], [ -122.383103737780345, 37.754651713981168 ], [ -122.383086185277548, 37.75464169354953 ], [ -122.383068615380594, 37.754630986667287 ], [ -122.383052774639708, 37.754620252154247 ], [ -122.383036916504807, 37.754608831191064 ], [ -122.383015731729387, 37.754592001250259 ], [ -122.38299259130558, 37.754566275663684 ], [ -122.382971180378888, 37.754540521890775 ], [ -122.382949752076243, 37.754514081940449 ], [ -122.382930053282664, 37.754487614354218 ], [ -122.382908625009904, 37.754461174396191 ], [ -122.382888908501968, 37.754434020360335 ], [ -122.382870920808742, 37.754406838701115 ], [ -122.382842850708954, 37.754363390808408 ], [ -122.382816907001839, 37.754323234339928 ], [ -122.382797016608123, 37.754289216082142 ], [ -122.382791480900465, 37.754275569725095 ], [ -122.382785928504248, 37.754261237457797 ], [ -122.38278210489284, 37.754246877022375 ], [ -122.382781722177867, 37.754231775164968 ], [ -122.382784449823419, 37.754202889097733 ], [ -122.382789271581657, 37.754188390821014 ], [ -122.382795840220822, 37.754174551362205 ], [ -122.382804155740061, 37.754161370721022 ], [ -122.382814217447034, 37.754148848908173 ], [ -122.382826043083483, 37.754137672365715 ], [ -122.382839615252593, 37.75412715464509 ], [ -122.382853204821586, 37.754117323645531 ], [ -122.382868575702929, 37.754109523814002 ], [ -122.382885693124038, 37.754102383077345 ], [ -122.382904591526582, 37.754097274061955 ], [ -122.382896892098685, 37.754066494402807 ], [ -122.382890922160428, 37.754035687111681 ], [ -122.382884969278336, 37.754005566273698 ], [ -122.382876487005475, 37.753943896449059 ], [ -122.382873975008934, 37.75391303391072 ], [ -122.382869733880582, 37.753882198997694 ], [ -122.382868951022118, 37.753851308833418 ], [ -122.382866421635015, 37.753819759846344 ], [ -122.382865638778583, 37.753788869681728 ], [ -122.38286753098933, 37.753727034381221 ], [ -122.382869667430043, 37.75367480879347 ], [ -122.382867485984363, 37.753656988767865 ], [ -122.382865286797127, 37.753638482299571 ], [ -122.382861376571569, 37.753620689893637 ], [ -122.382850096841622, 37.753585160622798 ], [ -122.382842745420064, 37.753568109920103 ], [ -122.382833665214591, 37.753551086561764 ], [ -122.382822855548582, 37.753534091107603 ], [ -122.382812063283737, 37.753517782100509 ], [ -122.382801288419827, 37.753502159540567 ], [ -122.382788801838672, 37.753487251326646 ], [ -122.382774586124242, 37.75347237018628 ], [ -122.382742765715449, 37.753445409495008 ], [ -122.382726873440859, 37.753432615860532 ], [ -122.382709269084074, 37.753420535751609 ], [ -122.382691682135089, 37.753409142362763 ], [ -122.382672383117907, 37.753398463047603 ], [ -122.382653119587403, 37.753389156614546 ], [ -122.382611168393765, 37.753371971889877 ], [ -122.382590227592559, 37.7533647524183 ], [ -122.382569321590282, 37.753358906113988 ], [ -122.382546703510585, 37.753353773605845 ], [ -122.382524103512239, 37.753349327255975 ], [ -122.382501520571083, 37.75334556763007 ], [ -122.382478972425403, 37.753343181170841 ], [ -122.382456441314361, 37.753341480611873 ], [ -122.382433945688362, 37.753341153208574 ], [ -122.382402821501856, 37.753341650348268 ], [ -122.38237864858533, 37.753343409903252 ], [ -122.382356222188207, 37.753345828558139 ], [ -122.382297501266095, 37.753349513077993 ], [ -122.38226810654271, 37.753349982559506 ], [ -122.382240423203967, 37.753349737974666 ], [ -122.382210993352999, 37.753348834550927 ], [ -122.382181546112378, 37.753347244671602 ], [ -122.382152081137065, 37.753344968342162 ], [ -122.382124328241176, 37.753341977937026 ], [ -122.382094811792641, 37.753337642237426 ], [ -122.38206700673382, 37.753332592473967 ], [ -122.382039184289724, 37.753326856255676 ], [ -122.38201134446112, 37.753320433582523 ], [ -122.38200001736864, 37.75331754288009 ], [ -122.381983487255724, 37.753313324729064 ], [ -122.381957341428489, 37.753305501265011 ], [ -122.3819294494578, 37.75329701950217 ], [ -122.38187705455077, 37.753277254112369 ], [ -122.381850839550978, 37.753266685100435 ], [ -122.3818017982653, 37.753242746046119 ], [ -122.381777242861062, 37.753229403614625 ], [ -122.381754416238635, 37.753216033574361 ], [ -122.381731572936843, 37.753201977344837 ], [ -122.381708677132991, 37.753185861496782 ], [ -122.381985040410456, 37.753169774197133 ], [ -122.382560765120331, 37.753136419940226 ], [ -122.382560989570067, 37.75313671714089 ], [ -122.382951309683904, 37.753114103639163 ], [ -122.383438933023925, 37.753085850281579 ], [ -122.383914427464433, 37.753058600498669 ], [ -122.384879974685347, 37.753002645165687 ], [ -122.385845520438053, 37.752946681373402 ], [ -122.385845731512404, 37.752946669205699 ], [ -122.386811064397406, 37.752890709951139 ], [ -122.386811676199414, 37.752890674609837 ], [ -122.387755875750031, 37.752835749697695 ], [ -122.387756291326852, 37.752835725460692 ], [ -122.387756280477618, 37.752835611637821 ], [ -122.387633974640565, 37.751559603455405 ], [ -122.387585270262662, 37.750263378063039 ], [ -122.388507729357968, 37.750205975353602 ], [ -122.389478017653872, 37.750145107673561 ], [ -122.390433038183829, 37.750118341633915 ], [ -122.391418367221192, 37.750140606282606 ], [ -122.391693805117924, 37.750111668488358 ], [ -122.391705979739527, 37.750110389401705 ], [ -122.391714686151033, 37.750109474739723 ], [ -122.391929934247997, 37.750086859865874 ], [ -122.392350740047519, 37.750026024134087 ], [ -122.392354048972692, 37.750025545503377 ], [ -122.392381992909165, 37.750021506018193 ], [ -122.393314555211816, 37.749918012051069 ], [ -122.393322792145199, 37.749917097944952 ], [ -122.393340265733656, 37.749915158351328 ], [ -122.395231400136637, 37.749808114846253 ], [ -122.395307862010839, 37.749803786070743 ], [ -122.396273544250747, 37.74974560058007 ], [ -122.397285415820363, 37.749684622841229 ], [ -122.40206163398004, 37.749396678541473 ], [ -122.402063015501824, 37.749396333205695 ], [ -122.402215286387033, 37.749358244852793 ], [ -122.402746245055127, 37.749375020002113 ], [ -122.402866303074774, 37.749478453789486 ], [ -122.402866309087059, 37.749478458911533 ], [ -122.402968925612569, 37.749550036933734 ], [ -122.403054692816028, 37.74954427306843 ], [ -122.403203674195439, 37.749534260068266 ], [ -122.403260968692152, 37.749530409553117 ], [ -122.403568849778438, 37.749475672986911 ], [ -122.403592456970202, 37.749471475909672 ], [ -122.403667613571599, 37.749458113882532 ], [ -122.403783562755194, 37.749432891426196 ], [ -122.403735650894049, 37.749583872707518 ], [ -122.403514246938869, 37.750281563827826 ], [ -122.403378511001179, 37.750679445903444 ], [ -122.403214572776321, 37.751164169122518 ], [ -122.403175027775376, 37.751281093014263 ], [ -122.403072643662085, 37.751794247946641 ], [ -122.403060331379024, 37.751915861053995 ], [ -122.403006670294943, 37.752445905732571 ], [ -122.402978169178084, 37.75275045704997 ], [ -122.40301031565609, 37.753201877425177 ], [ -122.403011715723153, 37.753221541143297 ], [ -122.403127143734139, 37.75447773377249 ], [ -122.403244936870763, 37.755759623462495 ], [ -122.403245024221292, 37.755760575231484 ], [ -122.403305530792395, 37.756165877853867 ], [ -122.403395700993769, 37.756471262485057 ], [ -122.403543859417937, 37.75680412126377 ], [ -122.403689260967766, 37.757015002579273 ], [ -122.403774084903432, 37.757138026202746 ], [ -122.403774405770974, 37.757138490742172 ], [ -122.404168659910013, 37.75752977302043 ], [ -122.404441730762329, 37.757748221369937 ], [ -122.40472107938929, 37.757950649275713 ], [ -122.404835145723425, 37.7580339263735 ], [ -122.405048169961901, 37.758189448369819 ], [ -122.405545221503274, 37.758536929330724 ], [ -122.405903135660481, 37.758934413706449 ], [ -122.406103779268008, 37.759196479511928 ], [ -122.406247868764623, 37.759429354319998 ], [ -122.406261953936678, 37.75945211819198 ], [ -122.406389357641601, 37.759804405761585 ], [ -122.406492391998796, 37.760255279712112 ], [ -122.406492697683589, 37.760686469836571 ], [ -122.406479479731502, 37.760730932047331 ], [ -122.4062826701159, 37.761392945250627 ], [ -122.406147061407296, 37.7616371808829 ], [ -122.406021608630979, 37.761863123291867 ], [ -122.405925510731336, 37.762011914887523 ], [ -122.405653838302513, 37.762432552128487 ], [ -122.405384490436404, 37.76297005284507 ], [ -122.40532469627189, 37.76313750682079 ], [ -122.405258413683796, 37.763323129887908 ], [ -122.405203088479681, 37.763478066930332 ], [ -122.405104592203571, 37.763852244172895 ], [ -122.405059622300016, 37.764310557738277 ], [ -122.405089602982216, 37.764628538373131 ], [ -122.404841911264157, 37.764643492872132 ], [ -122.404496977488066, 37.764664317561468 ], [ -122.403527034519726, 37.764722870371436 ], [ -122.402563396844656, 37.764781034314389 ], [ -122.401598999326723, 37.764839236400867 ], [ -122.401604204317508, 37.764894634517518 ], [ -122.401720515816834, 37.766132520250999 ], [ -122.40075504647362, 37.766190486570189 ], [ -122.399760960198876, 37.766250252443854 ], [ -122.39980174760619, 37.766587745781216 ], [ -122.399677637243116, 37.766695444602661 ], [ -122.4004285874814, 37.76730030349627 ], [ -122.400680751363893, 37.767503407870436 ], [ -122.400877239583821, 37.76748837440357 ], [ -122.401842503677628, 37.76743077711658 ], [ -122.401962350744, 37.768706209224241 ], [ -122.402926809989424, 37.76864812762463 ], [ -122.403037758616776, 37.769828657390953 ], [ -122.403406518421917, 37.769807099957397 ], [ -122.403615112128733, 37.769893190404822 ], [ -122.403877699904385, 37.770062866265505 ], [ -122.403531054507056, 37.770336670466769 ], [ -122.401656665936628, 37.77181711392474 ], [ -122.399647849152032, 37.773403860176856 ], [ -122.399516440682405, 37.773507653276255 ], [ -122.399433130909728, 37.773573455617395 ], [ -122.400212340411557, 37.77419510487973 ], [ -122.400592319049849, 37.774498244536282 ], [ -122.400981567656032, 37.774808775969753 ], [ -122.402524096584528, 37.776039321403807 ], [ -122.40337073826143, 37.776714700215486 ], [ -122.403505778866929, 37.776822422431877 ], [ -122.403673439982725, 37.776956165214415 ], [ -122.404070256642925, 37.777272702482797 ], [ -122.404605505853894, 37.777699659794813 ], [ -122.405068508898097, 37.778068981419388 ], [ -122.405615266425855, 37.778505104539292 ], [ -122.404431250807633, 37.779440334605447 ], [ -122.403387209275081, 37.78026497235011 ], [ -122.401159718585049, 37.782024266952142 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":2,"ZIP_CODE":94105,"ID":94105},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.39249932896719, 37.793768814133983 ], [ -122.391890260341384, 37.794278544568918 ], [ -122.391788865572423, 37.794170982455135 ], [ -122.39173429034625, 37.79420276052317 ], [ -122.391666728649753, 37.794132425256194 ], [ -122.391723034266192, 37.79410061945832 ], [ -122.391673228351905, 37.794047854124599 ], [ -122.391982015107928, 37.793871906128679 ], [ -122.391589022782, 37.793527982873798 ], [ -122.391723231555744, 37.793429001692992 ], [ -122.390805927608938, 37.792657675413892 ], [ -122.388808599369057, 37.790978116182679 ], [ -122.388930714411984, 37.790880018842998 ], [ -122.388611692601799, 37.790313089306778 ], [ -122.388048971491713, 37.790507516256234 ], [ -122.388012417064502, 37.790431188672287 ], [ -122.388369268465311, 37.790308044637399 ], [ -122.388285919009036, 37.790161047422416 ], [ -122.388320274159014, 37.790150883121463 ], [ -122.388243932142601, 37.790007207265845 ], [ -122.388219415789919, 37.789995925591761 ], [ -122.388076857804336, 37.790038725053051 ], [ -122.38779803320179, 37.790149885537438 ], [ -122.385731305877229, 37.790973806479329 ], [ -122.385715648397209, 37.790970622998962 ], [ -122.385703294724394, 37.790961206457723 ], [ -122.385509561738004, 37.790556391724344 ], [ -122.385507518014222, 37.790544063409705 ], [ -122.385514141658973, 37.790532283492631 ], [ -122.385686917933171, 37.79045260764569 ], [ -122.387606646474296, 37.789787359176458 ], [ -122.387348795424046, 37.789311467853956 ], [ -122.38734757309517, 37.78931176210844 ], [ -122.385363735345749, 37.789788908162748 ], [ -122.385346470166525, 37.789790557672781 ], [ -122.385330865935444, 37.789789433734306 ], [ -122.3853151742195, 37.789784877582385 ], [ -122.385301142770246, 37.789777548268411 ], [ -122.385290501190326, 37.789767417313975 ], [ -122.385283285054584, 37.789755858694043 ], [ -122.385108047186435, 37.789329458915937 ], [ -122.385106003217075, 37.789317130597112 ], [ -122.385109132387825, 37.789304032849302 ], [ -122.385115773404124, 37.789292939120834 ], [ -122.385127656568173, 37.78928382174719 ], [ -122.385141339390941, 37.789277422487608 ], [ -122.385148542800621, 37.789220309385662 ], [ -122.387188020139192, 37.788773590697055 ], [ -122.387049561519532, 37.788228488916552 ], [ -122.385265755459955, 37.788520039162925 ], [ -122.385250134063114, 37.78851822849537 ], [ -122.385234425193858, 37.78851298588809 ], [ -122.385222089078539, 37.788504256015905 ], [ -122.385214890495845, 37.788493383558084 ], [ -122.385126670096767, 37.788154179856562 ], [ -122.385126356426341, 37.788141823596902 ], [ -122.385129502623784, 37.788129412294914 ], [ -122.385137873116122, 37.788118290909864 ], [ -122.385149773868434, 37.788109860244717 ], [ -122.385165203482913, 37.788104119771369 ], [ -122.38712311120571, 37.787785749180493 ], [ -122.387152415559953, 37.787781160094404 ], [ -122.38716964498991, 37.787778137163613 ], [ -122.38718858690207, 37.78777440037284 ], [ -122.387205798545097, 37.787770691273494 ], [ -122.387224740799539, 37.787766954471365 ], [ -122.387241935339802, 37.787762558917869 ], [ -122.387260859452994, 37.787758135677656 ], [ -122.387278054335084, 37.787753740113331 ], [ -122.387312408509445, 37.787743576101576 ], [ -122.387329567801103, 37.787737807654125 ], [ -122.387346745228243, 37.787732725636424 ], [ -122.387363887068403, 37.787726270740649 ], [ -122.38738104704403, 37.787720502274603 ], [ -122.38740694457185, 37.787241442038656 ], [ -122.387019444956891, 37.787247644385083 ], [ -122.384558944804354, 37.787400993480382 ], [ -122.384543323667074, 37.787399182993411 ], [ -122.384527632511421, 37.787394627009306 ], [ -122.384515296650974, 37.787385896512234 ], [ -122.384504655873897, 37.787375765751548 ], [ -122.384499135159118, 37.787362806267062 ], [ -122.384342210870813, 37.785748083262355 ], [ -122.384341897348037, 37.785735727269817 ], [ -122.384346773449252, 37.785723288336335 ], [ -122.38435689108006, 37.785712825798925 ], [ -122.384370521056837, 37.785704367292539 ], [ -122.384385968349036, 37.785699313626168 ], [ -122.387217967726542, 37.785525599931667 ], [ -122.387242186237785, 37.785525212275893 ], [ -122.387269846695702, 37.785524082797316 ], [ -122.387295742393547, 37.78552160811531 ], [ -122.387323367958444, 37.785519105736952 ], [ -122.387349245861117, 37.785515944605116 ], [ -122.387375089561743, 37.785511410569285 ], [ -122.387402662781668, 37.785506848841521 ], [ -122.387454279688384, 37.785495034977437 ], [ -122.387478323373855, 37.785487782842686 ], [ -122.387504079475306, 37.785479816566138 ], [ -122.387528105357717, 37.785471877983142 ], [ -122.387553826899222, 37.785462538802953 ], [ -122.387580894103834, 37.785438070169313 ], [ -122.387630346985745, 37.78486455148672 ], [ -122.385458308223278, 37.78499338709468 ], [ -122.385413881876744, 37.784606785946664 ], [ -122.387221366105805, 37.784501641660896 ], [ -122.387418079949683, 37.784479264504995 ], [ -122.38743876829875, 37.784476186423468 ], [ -122.387483534893533, 37.784467229088612 ], [ -122.387528231689217, 37.784455525961853 ], [ -122.387550562288524, 37.78444898795393 ], [ -122.387571145938807, 37.78444179118685 ], [ -122.387593442333781, 37.784433880546885 ], [ -122.387613991073025, 37.784425310610295 ], [ -122.38765505365474, 37.784406798388098 ], [ -122.387673819852623, 37.78439619708557 ], [ -122.387677823231684, 37.784349435820396 ], [ -122.387709046749492, 37.783875783688671 ], [ -122.386286930602978, 37.783958976243902 ], [ -122.386236533710786, 37.783405597391891 ], [ -122.387525601081578, 37.78333071590594 ], [ -122.387695596747974, 37.783278550154108 ], [ -122.387751878035047, 37.783246059476667 ], [ -122.387776877347846, 37.78286796141245 ], [ -122.3875502225155, 37.782801544578085 ], [ -122.387525883466154, 37.782797127453357 ], [ -122.387484228568439, 37.78279230054234 ], [ -122.387463418560699, 37.782790573250665 ], [ -122.387440913647538, 37.782790246810194 ], [ -122.387420138539767, 37.78278989267335 ], [ -122.387388984601131, 37.782789704683182 ], [ -122.387368261829351, 37.782791409869013 ], [ -122.387347521611616, 37.782792428607252 ], [ -122.384758972173714, 37.782940280456494 ], [ -122.384743316428853, 37.782937096842417 ], [ -122.384732711445736, 37.782928338977264 ], [ -122.384679972094801, 37.782554918115103 ], [ -122.384681388329753, 37.782542534464426 ], [ -122.384691505480149, 37.782532071892298 ], [ -122.384705187096728, 37.782525672675533 ], [ -122.387509249137921, 37.78234690330077 ], [ -122.387528224534123, 37.782344539065186 ], [ -122.387554136561661, 37.78234275076899 ], [ -122.38762294594062, 37.782322839482177 ], [ -122.387787765874378, 37.782275144853472 ], [ -122.387765464889313, 37.78194244138043 ], [ -122.388106738902522, 37.781931906493995 ], [ -122.388231340039766, 37.782146697467269 ], [ -122.388304301898813, 37.782356717503951 ], [ -122.388306939892615, 37.782385221520776 ], [ -122.389843136047602, 37.783611740842574 ], [ -122.389846392025618, 37.783609176617361 ], [ -122.390856721023212, 37.784410569188324 ], [ -122.391599105853345, 37.783822668268179 ], [ -122.391600764141245, 37.783823989838545 ], [ -122.392032919786118, 37.784168354830349 ], [ -122.392118766536498, 37.784205306785267 ], [ -122.392215026316663, 37.784279352365694 ], [ -122.392216553530702, 37.784278123341721 ], [ -122.39285700396303, 37.784773072758867 ], [ -122.39286959393705, 37.78478280203197 ], [ -122.39343711789931, 37.784459123881106 ], [ -122.394398389309941, 37.783701667981575 ], [ -122.395160622349934, 37.78431101230386 ], [ -122.395895701657864, 37.784896929203114 ], [ -122.396705177550587, 37.785542130425938 ], [ -122.397811613142864, 37.784666586003652 ], [ -122.399369533643153, 37.785899247741973 ], [ -122.400468483886854, 37.785030285141588 ], [ -122.400994549885382, 37.785441790992316 ], [ -122.400998469557948, 37.785444857061968 ], [ -122.401480059865179, 37.785821567351917 ], [ -122.401489835489045, 37.785829214187501 ], [ -122.402025419766176, 37.786248152290575 ], [ -122.402575227394536, 37.786678208153539 ], [ -122.403028193190352, 37.787024418822838 ], [ -122.403028734856406, 37.78702485040828 ], [ -122.403342641535644, 37.787274627660381 ], [ -122.403430800369534, 37.787641848645734 ], [ -122.403239953883428, 37.787802352067843 ], [ -122.40290309900054, 37.788085647297414 ], [ -122.402903089488873, 37.788085654318181 ], [ -122.402404665507532, 37.788463925757384 ], [ -122.402065730098272, 37.788721152097366 ], [ -122.401375490979433, 37.789264321921429 ], [ -122.400067228055164, 37.790303858609981 ], [ -122.399919790020746, 37.790414442896498 ], [ -122.399480001759599, 37.790744297277485 ], [ -122.399222136170906, 37.790956214990921 ], [ -122.39914859901539, 37.791016648609592 ], [ -122.399148598683425, 37.79101664916432 ], [ -122.398264448861653, 37.791716058450703 ], [ -122.39826444614279, 37.791716060417308 ], [ -122.397840810091907, 37.792047595331439 ], [ -122.39738344591872, 37.792405521295422 ], [ -122.396504486670068, 37.793097082520163 ], [ -122.396376076969489, 37.793198086984006 ], [ -122.396302004629632, 37.793256350149633 ], [ -122.396302004290646, 37.793256350429786 ], [ -122.395983670970253, 37.793501461560965 ], [ -122.395622922555773, 37.793779228585429 ], [ -122.39533276386878, 37.794011429145591 ], [ -122.395317307728533, 37.794023797689903 ], [ -122.394971722038662, 37.794300351169447 ], [ -122.394747579547172, 37.794479718347191 ], [ -122.394745733667804, 37.794478246556643 ], [ -122.394745701490038, 37.794478274267938 ], [ -122.394150899798674, 37.794987788593353 ], [ -122.39270797067924, 37.793614415765255 ], [ -122.392702063215523, 37.793608792659974 ], [ -122.39249932896719, 37.793768814133983 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":3,"ZIP_CODE":94129,"ID":94129},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.470990721149789, 37.787534455433345 ], [ -122.472290534181823, 37.787395917162272 ], [ -122.472401902490546, 37.787384046501884 ], [ -122.47254342327507, 37.787368961705944 ], [ -122.472782224474642, 37.787331534391747 ], [ -122.473316434470121, 37.787247805418339 ], [ -122.474432824368861, 37.787072820298278 ], [ -122.474584006514732, 37.787049123020516 ], [ -122.47616220885665, 37.786978730627588 ], [ -122.478707989065171, 37.78691405835 ], [ -122.481375583614479, 37.787198893328011 ], [ -122.483910676418589, 37.787705653817092 ], [ -122.483911841345289, 37.78771598691722 ], [ -122.484019551359538, 37.788671434543716 ], [ -122.484071292407094, 37.789571562974182 ], [ -122.484214987310182, 37.789767611906584 ], [ -122.484758163249651, 37.789969442365155 ], [ -122.485095392905748, 37.790094746949087 ], [ -122.486221786002261, 37.790513270391187 ], [ -122.486196663014411, 37.790544596769486 ], [ -122.486148110204482, 37.790605847513199 ], [ -122.486108757859654, 37.790687545376898 ], [ -122.486034586054117, 37.790761588869977 ], [ -122.48595999185838, 37.790819844471812 ], [ -122.485896199163861, 37.790893713055688 ], [ -122.485740384038749, 37.791021323419344 ], [ -122.48558351329909, 37.791238913899868 ], [ -122.485411383576832, 37.791468435611826 ], [ -122.485284654257228, 37.791712987869268 ], [ -122.484994993901111, 37.791948608146861 ], [ -122.484752903676167, 37.79221570331633 ], [ -122.484541285320944, 37.792522116372695 ], [ -122.484363647892437, 37.79274005429609 ], [ -122.484183607122475, 37.793062416612024 ], [ -122.484072129345151, 37.793295035940602 ], [ -122.483858237133077, 37.793646123471206 ], [ -122.483593432919847, 37.794035150786577 ], [ -122.48329368676049, 37.794671303481294 ], [ -122.483518531231283, 37.794730014502065 ], [ -122.48308859662535, 37.79561146099627 ], [ -122.482999467368202, 37.795903449272551 ], [ -122.48285101972256, 37.796177893057802 ], [ -122.482765752291186, 37.796484924353678 ], [ -122.482667211606753, 37.796813467545597 ], [ -122.482504820847737, 37.797149264997877 ], [ -122.482349642968302, 37.797495928150028 ], [ -122.482180347467406, 37.797832527598885 ], [ -122.482169137762298, 37.797996159399602 ], [ -122.482136359830861, 37.798129936813986 ], [ -122.482085493238017, 37.798234488898757 ], [ -122.482121580114068, 37.798289507917929 ], [ -122.482129545147487, 37.798328517967903 ], [ -122.482111649834962, 37.798371396374968 ], [ -122.482102148276397, 37.798404519393337 ], [ -122.482087585279373, 37.798442534909526 ], [ -122.482079722552115, 37.798472196426395 ], [ -122.482040900643639, 37.798509246213612 ], [ -122.481958513784505, 37.798535353148957 ], [ -122.481870239865685, 37.798535463289312 ], [ -122.481831454802517, 37.798573885582073 ], [ -122.48191348856912, 37.79872908258961 ], [ -122.481933747767386, 37.798774753652147 ], [ -122.481894064444091, 37.798779540742402 ], [ -122.481782518807989, 37.79868595916038 ], [ -122.481759479485277, 37.798795537302446 ], [ -122.481735532663109, 37.798806240772073 ], [ -122.481729674725472, 37.79884616987701 ], [ -122.481697076819628, 37.79885701872184 ], [ -122.481553967429107, 37.798748172710248 ], [ -122.481544740366218, 37.798791592096414 ], [ -122.481675391067768, 37.798887599511232 ], [ -122.481685177680191, 37.798930012650303 ], [ -122.481641997341171, 37.798933485499177 ], [ -122.481619981772425, 37.798951710306021 ], [ -122.481601609693158, 37.798976741512377 ], [ -122.481583384160913, 37.799007264136819 ], [ -122.481561643359143, 37.799035785621555 ], [ -122.481552599461594, 37.799086069282282 ], [ -122.48153672724159, 37.799139901359283 ], [ -122.481507471077649, 37.799211126714575 ], [ -122.481470873600131, 37.799266680501994 ], [ -122.481417267273812, 37.799333507835762 ], [ -122.481380082795965, 37.799367095921824 ], [ -122.481394839952742, 37.799401184738606 ], [ -122.48138749011072, 37.799450066445814 ], [ -122.481313103352264, 37.799516556146521 ], [ -122.481199920275785, 37.799556228466017 ], [ -122.481106226731853, 37.799612741364335 ], [ -122.481068868952889, 37.799704704484391 ], [ -122.481063386681015, 37.799823601791012 ], [ -122.481042139949025, 37.799870656721012 ], [ -122.48098682060791, 37.799938199625082 ], [ -122.480980184705871, 37.800013851703859 ], [ -122.480977156432658, 37.800224730569639 ], [ -122.480974804661557, 37.800331213761126 ], [ -122.480860274222692, 37.800385329797535 ], [ -122.480757965088657, 37.800443360304584 ], [ -122.48067857879505, 37.800582040732152 ], [ -122.48065611449222, 37.800648344612128 ], [ -122.480592381330325, 37.800724956178229 ], [ -122.480537665874181, 37.800815150409605 ], [ -122.480468568377589, 37.800950224199951 ], [ -122.480375485908439, 37.801094628286094 ], [ -122.480295978813317, 37.801293743123836 ], [ -122.480202328037436, 37.801416867810858 ], [ -122.480181840275407, 37.801557305763211 ], [ -122.480071801739967, 37.801844835145566 ], [ -122.480027318791514, 37.802059156846411 ], [ -122.480044134726015, 37.802235365083838 ], [ -122.480004943470632, 37.80238847850972 ], [ -122.479965705600534, 37.802604771748101 ], [ -122.479928024203545, 37.802749618690633 ], [ -122.479899085376999, 37.802897752511299 ], [ -122.479813341330441, 37.803057827736559 ], [ -122.479734279947053, 37.803208863153962 ], [ -122.479678141843124, 37.803310755542739 ], [ -122.479612025097651, 37.803427923840943 ], [ -122.479496444899141, 37.803572704736546 ], [ -122.479357004588351, 37.803861413494445 ], [ -122.479173928312875, 37.80433146553451 ], [ -122.479146809127258, 37.804483001950985 ], [ -122.479060667102701, 37.804693214811543 ], [ -122.478953175659996, 37.804881810346664 ], [ -122.478815220557294, 37.805291358623961 ], [ -122.47872883882674, 37.805492647931004 ], [ -122.478723432948883, 37.805679530333919 ], [ -122.47869664200617, 37.805843422292654 ], [ -122.478685946257201, 37.805961720018743 ], [ -122.478628322791295, 37.806008011253461 ], [ -122.478654742843744, 37.806089976088074 ], [ -122.478631304779441, 37.806119899160173 ], [ -122.478660343597923, 37.806170230012903 ], [ -122.478638955177018, 37.806277032642242 ], [ -122.478627125019798, 37.806352771870088 ], [ -122.478625044107972, 37.806469551574978 ], [ -122.47857586751384, 37.806637939992576 ], [ -122.478562516078711, 37.80678649853526 ], [ -122.478544650108333, 37.806960541692234 ], [ -122.478526703332861, 37.807066600081164 ], [ -122.478526389161814, 37.807184723319764 ], [ -122.478521297177736, 37.807253482414033 ], [ -122.478488208711909, 37.807311036148292 ], [ -122.478483958170003, 37.807411370608691 ], [ -122.478496304822514, 37.807549883734964 ], [ -122.478476156109295, 37.807833156107016 ], [ -122.478405186887699, 37.808093245296376 ], [ -122.478343748883177, 37.808126216988313 ], [ -122.478060427750734, 37.808278265895638 ], [ -122.477897062640963, 37.80844925522419 ], [ -122.477885395973601, 37.808531172189731 ], [ -122.477923697644769, 37.808669250052077 ], [ -122.477956528906134, 37.809251736581921 ], [ -122.477922196862778, 37.80978247039468 ], [ -122.477956931601639, 37.810111519960003 ], [ -122.477924513902849, 37.810324264541741 ], [ -122.477975357212003, 37.810543166576302 ], [ -122.477691959274622, 37.810627579828761 ], [ -122.477738440983671, 37.81094269802653 ], [ -122.477669662799912, 37.810960332923507 ], [ -122.477465352217308, 37.810997758254302 ], [ -122.4773147668257, 37.811025342092201 ], [ -122.476951827952391, 37.810983355163785 ], [ -122.476621797907725, 37.810876948869407 ], [ -122.47656163509636, 37.810893065263848 ], [ -122.476466638674822, 37.81083628492037 ], [ -122.47639876264958, 37.810757761311969 ], [ -122.476244453139699, 37.810423848047549 ], [ -122.476192907539087, 37.810243414175943 ], [ -122.47615497008627, 37.809858792499412 ], [ -122.47604874198008, 37.809640130705603 ], [ -122.475967371125094, 37.809574880888988 ], [ -122.475790153494444, 37.809485827869665 ], [ -122.475539966877108, 37.809387008587656 ], [ -122.474949730564461, 37.809260233883315 ], [ -122.474802168498073, 37.809179610065499 ], [ -122.474477490769161, 37.809143842083898 ], [ -122.474059299537672, 37.809106891534391 ], [ -122.473248913495638, 37.809099164155811 ], [ -122.472667246163553, 37.80903404071298 ], [ -122.472248345244111, 37.80897031306057 ], [ -122.471807567969009, 37.808865058985567 ], [ -122.471692590128313, 37.808861156356251 ], [ -122.471577117792876, 37.808857237159089 ], [ -122.471241422813662, 37.80879760884919 ], [ -122.470932885927255, 37.808717610499883 ], [ -122.47066006806898, 37.808613665617798 ], [ -122.470600816238615, 37.80859886080146 ], [ -122.470032562336371, 37.809430372877515 ], [ -122.469989867152222, 37.809452374737276 ], [ -122.469923620349192, 37.809434939483481 ], [ -122.469403337873828, 37.809203958897747 ], [ -122.469386781047135, 37.809167151824653 ], [ -122.469446470968407, 37.809067952374448 ], [ -122.469513627885206, 37.809054469737255 ], [ -122.470046113471852, 37.809288679655658 ], [ -122.470536336868321, 37.808582769832967 ], [ -122.47042036446561, 37.808452854807648 ], [ -122.470227327454069, 37.808354443608728 ], [ -122.470098624189163, 37.80826663136105 ], [ -122.470013817898405, 37.808202121652926 ], [ -122.469815463486142, 37.808098991213633 ], [ -122.469586546186093, 37.807953106986339 ], [ -122.469305300471973, 37.807727061403774 ], [ -122.469233592741006, 37.807568936815628 ], [ -122.469112342826094, 37.807370435141976 ], [ -122.46886886007195, 37.807066844008062 ], [ -122.468789265438318, 37.807002933173059 ], [ -122.468641769161479, 37.806924361175163 ], [ -122.468442727148087, 37.806860383444018 ], [ -122.468303117397753, 37.806818075943092 ], [ -122.46814816670377, 37.806980670547468 ], [ -122.46804250856195, 37.806913074050627 ], [ -122.468204198687829, 37.806743499513175 ], [ -122.468154584727131, 37.80670037662253 ], [ -122.467927641872478, 37.806563383834956 ], [ -122.4677672527434, 37.806455496134681 ], [ -122.467355591928154, 37.806141659736177 ], [ -122.467203291926239, 37.806012347645776 ], [ -122.466996296046148, 37.805909356729394 ], [ -122.466671493417238, 37.805802836197401 ], [ -122.466463320033583, 37.805982110961864 ], [ -122.466652133036774, 37.805790797867139 ], [ -122.466274152924925, 37.805653990321176 ], [ -122.466075349709101, 37.80558203392561 ], [ -122.465895016150796, 37.805570618742252 ], [ -122.465648753037854, 37.805488195293123 ], [ -122.46546102999136, 37.805393808021854 ], [ -122.464551731906468, 37.805113664168701 ], [ -122.464230324554308, 37.805004333527904 ], [ -122.463987997870177, 37.804939695859083 ], [ -122.463579617827847, 37.804879883064366 ], [ -122.463271699005631, 37.804887756693624 ], [ -122.462952230341088, 37.804917109899002 ], [ -122.4624302743036, 37.805013698161765 ], [ -122.462214023782167, 37.805018669869817 ], [ -122.462027122615794, 37.804955166469341 ], [ -122.461896643188638, 37.804930554615567 ], [ -122.461601325019004, 37.804956755736356 ], [ -122.461272453201914, 37.805023344559039 ], [ -122.461007547032963, 37.805086808651389 ], [ -122.459772513833471, 37.805253612450713 ], [ -122.45957795006224, 37.805293241948746 ], [ -122.459540191073017, 37.805305543773983 ], [ -122.45950068434351, 37.805317187894794 ], [ -122.459462907558404, 37.805328803259258 ], [ -122.459423363879012, 37.805339074505127 ], [ -122.45938555118417, 37.805349316978521 ], [ -122.459306427886148, 37.805368486538775 ], [ -122.459227232780066, 37.805384910313265 ], [ -122.459185886621981, 37.805392464497949 ], [ -122.459106618316682, 37.805406142481793 ], [ -122.459065217794489, 37.805411637333286 ], [ -122.459025547917307, 37.805417103422087 ], [ -122.458984129270405, 37.80542191181479 ], [ -122.458944422811243, 37.805426005021417 ], [ -122.458902967930442, 37.80542944052501 ], [ -122.458861494934339, 37.805432189583698 ], [ -122.458788912310027, 37.805436828799479 ], [ -122.458735345621889, 37.80544046541047 ], [ -122.458683526998115, 37.80544475969581 ], [ -122.458631726477662, 37.805449740388731 ], [ -122.458578213760234, 37.805455436499734 ], [ -122.458526449095928, 37.805461790012899 ], [ -122.458474703215558, 37.805468829647623 ], [ -122.458371283182728, 37.805485655405761 ], [ -122.458319609004732, 37.805495440705506 ], [ -122.458269665819927, 37.805505197514321 ], [ -122.45821802818655, 37.805516356173719 ], [ -122.458168120492331, 37.805527485811837 ], [ -122.458116519376176, 37.805540017007239 ], [ -122.458066648197928, 37.805552519182882 ], [ -122.457989327072951, 37.805574405126777 ], [ -122.45793619470966, 37.805594515430641 ], [ -122.457883043876322, 37.805613939560359 ], [ -122.457829874920449, 37.805632677510189 ], [ -122.457774957510779, 37.805650757180459 ], [ -122.457721751946011, 37.805668121951648 ], [ -122.457666780196845, 37.805684142829186 ], [ -122.457610078443324, 37.805700191847833 ], [ -122.457500062415335, 37.80572948720183 ], [ -122.457443287865871, 37.805742790973085 ], [ -122.457386495190917, 37.805755408011883 ], [ -122.457329684053221, 37.805767338598564 ], [ -122.457272855492562, 37.805778582715845 ], [ -122.457186701695477, 37.805793746855791 ], [ -122.457077909022615, 37.805803793319789 ], [ -122.456970882463025, 37.805815183288864 ], [ -122.456862180533747, 37.805828661426311 ], [ -122.456755226634087, 37.80584279746536 ], [ -122.456648326952561, 37.805858992150092 ], [ -122.456541463411881, 37.805876559873688 ], [ -122.456434635998889, 37.805895500361686 ], [ -122.45632959276756, 37.805916471347693 ], [ -122.456224568256204, 37.805938128659257 ], [ -122.456119597596228, 37.80596184517497 ], [ -122.456014644961741, 37.805986248302439 ], [ -122.45591147681688, 37.806012681382633 ], [ -122.455806614105612, 37.806040516209428 ], [ -122.455705248815832, 37.806069666405428 ], [ -122.455564429228914, 37.806112518618505 ], [ -122.45530695988451, 37.806195761893825 ], [ -122.454600415883462, 37.806430130022392 ], [ -122.454483234784888, 37.806468999744823 ], [ -122.454353658700001, 37.806478701096999 ], [ -122.454308145719423, 37.806459540393945 ], [ -122.454293829263207, 37.806375996256122 ], [ -122.454085665791084, 37.806359530611644 ], [ -122.454069929877903, 37.806353610767474 ], [ -122.453815604080873, 37.806293271483817 ], [ -122.453295386032664, 37.806259311412973 ], [ -122.452781551105744, 37.806270567825713 ], [ -122.452438711570082, 37.806267316310901 ], [ -122.451653324871984, 37.806353109244483 ], [ -122.450906745259303, 37.80653233722969 ], [ -122.450459653590798, 37.806646175036533 ], [ -122.44991286747026, 37.806721142700994 ], [ -122.449819483247254, 37.806724746830461 ], [ -122.449720673642986, 37.806719513093618 ], [ -122.449631038513971, 37.806734042766898 ], [ -122.449554038474531, 37.806768278664137 ], [ -122.44947869660497, 37.806799740182214 ], [ -122.449399659671798, 37.806822335243758 ], [ -122.449304851007483, 37.806837636909691 ], [ -122.449171524916196, 37.806836407131136 ], [ -122.449109070409847, 37.806831258752986 ], [ -122.449048183710957, 37.806819903592029 ], [ -122.449010891791161, 37.806784123494651 ], [ -122.448891660899136, 37.806726348099637 ], [ -122.448806459828916, 37.806711961234221 ], [ -122.448728288255808, 37.806701578532227 ], [ -122.448565239272398, 37.806755090545202 ], [ -122.448529100304583, 37.806763241657009 ], [ -122.448455091339923, 37.806133486140737 ], [ -122.448455258275729, 37.806133277363898 ], [ -122.448323332142422, 37.805007750605469 ], [ -122.448321161555853, 37.804993824977359 ], [ -122.448279145759457, 37.80472422506687 ], [ -122.44824552349904, 37.804508484024247 ], [ -122.448240728857812, 37.804477717258706 ], [ -122.448240723025904, 37.804477679722268 ], [ -122.448245764546613, 37.8044754914729 ], [ -122.448316879890498, 37.804444627382082 ], [ -122.448814547024654, 37.804228638340902 ], [ -122.448954929708933, 37.80412855834809 ], [ -122.449124213448584, 37.804007874392056 ], [ -122.449253815658196, 37.803861977230383 ], [ -122.449388062152011, 37.803710849923448 ], [ -122.449495662264184, 37.803470319431604 ], [ -122.449583722697156, 37.803153095621241 ], [ -122.449583713807527, 37.803152915295549 ], [ -122.449565462756809, 37.802791419060213 ], [ -122.449536106109235, 37.802697377072583 ], [ -122.449460220896157, 37.80245428555321 ], [ -122.449178591741017, 37.802073857413127 ], [ -122.449043488821943, 37.801965383441527 ], [ -122.448802640091088, 37.801772003872607 ], [ -122.448359651469772, 37.801586782043685 ], [ -122.447921599691895, 37.801532283988202 ], [ -122.447857007904148, 37.801596177616553 ], [ -122.447819731578562, 37.801633051558142 ], [ -122.447819572978844, 37.801633208279924 ], [ -122.447802865090509, 37.801525678628579 ], [ -122.447614227653389, 37.80032479990944 ], [ -122.447613279369918, 37.80032370169468 ], [ -122.447466030932901, 37.799389886853575 ], [ -122.447400275900733, 37.798948048802856 ], [ -122.447341437979304, 37.798552685345861 ], [ -122.447327769221047, 37.798519415660031 ], [ -122.447303043858923, 37.798459232650295 ], [ -122.447209582420982, 37.797849561838987 ], [ -122.44715829626513, 37.797515005478481 ], [ -122.44715829625072, 37.79751500492933 ], [ -122.447014738232738, 37.796578510197754 ], [ -122.447014738218328, 37.796578509648619 ], [ -122.446928896449293, 37.796018515191513 ], [ -122.44687098056005, 37.795640691997477 ], [ -122.446751148304088, 37.794858932799087 ], [ -122.446727777275527, 37.794706465308671 ], [ -122.446727777261131, 37.794706464759514 ], [ -122.446587862952981, 37.793765120337646 ], [ -122.446446456540414, 37.792813716046261 ], [ -122.446446033268856, 37.792810866507708 ], [ -122.446299573716246, 37.791878694429421 ], [ -122.446299547924625, 37.791878529215651 ], [ -122.44720637942703, 37.791763091830468 ], [ -122.447679208068394, 37.79170289872647 ], [ -122.449367313308201, 37.791487980191171 ], [ -122.449385188501296, 37.791484927305568 ], [ -122.450995459060991, 37.791209906278311 ], [ -122.452035629818212, 37.790998907609811 ], [ -122.454248357567437, 37.79059310209788 ], [ -122.455878319348855, 37.790294143976332 ], [ -122.457498733292852, 37.789996912625632 ], [ -122.459011873160264, 37.789719335764374 ], [ -122.459028627866218, 37.789715983297555 ], [ -122.459250455476877, 37.789713291862398 ], [ -122.45947565027717, 37.789710559160014 ], [ -122.459781586189493, 37.789596250165474 ], [ -122.459925547070256, 37.789542753604124 ], [ -122.468653534340191, 37.787783523544832 ], [ -122.470990721149789, 37.787534455433345 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":4,"ZIP_CODE":94121,"ID":94121},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.504456509027335, 37.788067554312491 ], [ -122.504150949920984, 37.788096097763379 ], [ -122.504066815467581, 37.788120877294119 ], [ -122.504049145771674, 37.78810744254686 ], [ -122.503997231067004, 37.788107638193928 ], [ -122.503846231021797, 37.788091662877633 ], [ -122.503713944876083, 37.788063694207068 ], [ -122.503612889329972, 37.788038628655784 ], [ -122.503526395190363, 37.78804009845387 ], [ -122.503485137277139, 37.78805041389267 ], [ -122.503463545305024, 37.78801987747579 ], [ -122.503373498826377, 37.788017973822534 ], [ -122.503335534005146, 37.788022052592311 ], [ -122.503263415949803, 37.788043193399247 ], [ -122.503234378285072, 37.788057421563131 ], [ -122.503243398050046, 37.788071003120102 ], [ -122.503209152201507, 37.78808463302547 ], [ -122.503179577522019, 37.788078954832578 ], [ -122.503144887269229, 37.788076110778647 ], [ -122.503077958752755, 37.78809716302807 ], [ -122.503049013609541, 37.788114823274398 ], [ -122.503006581160705, 37.78814576070333 ], [ -122.502956321560973, 37.788143180813591 ], [ -122.502925535751373, 37.788156752131144 ], [ -122.502902751007483, 37.788146151342978 ], [ -122.502865053026014, 37.788095972678335 ], [ -122.502836115946863, 37.78804976589835 ], [ -122.502789020665148, 37.78803614434397 ], [ -122.502704311593945, 37.788039643712104 ], [ -122.502589076168022, 37.788066323379901 ], [ -122.502515190951499, 37.788086120259166 ], [ -122.502425496104195, 37.788097257971025 ], [ -122.502376106845503, 37.788126939838207 ], [ -122.502316846531585, 37.7881114644726 ], [ -122.502255070395776, 37.788131055545016 ], [ -122.502169528699341, 37.788103665363288 ], [ -122.502105689513968, 37.788110929794158 ], [ -122.50207398762231, 37.788154733004774 ], [ -122.502071249254328, 37.788181562090124 ], [ -122.501989944924048, 37.788182942633284 ], [ -122.501951813392949, 37.78818084312524 ], [ -122.501912664088508, 37.788140990459205 ], [ -122.501912016401619, 37.788116965280736 ], [ -122.501877326179624, 37.788114120853955 ], [ -122.501877973840479, 37.788138145483494 ], [ -122.501858399507697, 37.788182429188559 ], [ -122.501842192404723, 37.788223222019695 ], [ -122.501801304245816, 37.788247265660054 ], [ -122.501766151357245, 37.788227260005755 ], [ -122.501756965310037, 37.788207500503631 ], [ -122.50172600293584, 37.788150340007959 ], [ -122.501700517223497, 37.788167941185236 ], [ -122.50167957356264, 37.788161429621908 ], [ -122.501619212555269, 37.788169321478662 ], [ -122.501569767420492, 37.788196943730178 ], [ -122.501591358665465, 37.788227480492822 ], [ -122.501533078675976, 37.788248385310276 ], [ -122.501514596042369, 37.788204747707923 ], [ -122.50145942465268, 37.788212551659868 ], [ -122.501437657642668, 37.788239704012419 ], [ -122.501335150234794, 37.788224962263008 ], [ -122.501268313574613, 37.788249445888859 ], [ -122.50115878458611, 37.788295256277053 ], [ -122.501091780980232, 37.788313561975109 ], [ -122.501021937979715, 37.788290711431223 ], [ -122.501006184350814, 37.78828411139213 ], [ -122.50097195648992, 37.788298427073251 ], [ -122.500993621505359, 37.788331709648567 ], [ -122.500947376526028, 37.788349663239131 ], [ -122.500879097304491, 37.788320605139283 ], [ -122.500861336013799, 37.788303738053742 ], [ -122.500826830696198, 37.788307757577726 ], [ -122.500806349431429, 37.788318405959657 ], [ -122.500754452719278, 37.788319286610971 ], [ -122.500738328529678, 37.78829895802815 ], [ -122.500712935348687, 37.788319991115557 ], [ -122.500640723790397, 37.788337698187455 ], [ -122.500593831459696, 37.788331626454848 ], [ -122.500550140713713, 37.78831588602435 ], [ -122.500538567416584, 37.788335997845735 ], [ -122.50048939950284, 37.78837391630227 ], [ -122.500458095017024, 37.788368266503305 ], [ -122.500446429574566, 37.788384946179491 ], [ -122.50034045177307, 37.788434129242091 ], [ -122.500272801380206, 37.788428409551436 ], [ -122.500256870701349, 37.788479498553457 ], [ -122.500250772830086, 37.788574372083048 ], [ -122.500192399744307, 37.788591844106463 ], [ -122.500174472488098, 37.788568799078057 ], [ -122.500178293975864, 37.788517915512088 ], [ -122.500130319126384, 37.788535897847389 ], [ -122.500091521884229, 37.788509086399898 ], [ -122.500099172636652, 37.788471872673249 ], [ -122.500066212558522, 37.788468998362944 ], [ -122.50006658231419, 37.788482726609828 ], [ -122.500011040812936, 37.788476801362307 ], [ -122.499966794796208, 37.788440467945314 ], [ -122.499878115891249, 37.788489357153694 ], [ -122.499810631863213, 37.788489815307436 ], [ -122.499785570748472, 37.78852320387022 ], [ -122.499760324750355, 37.788549727891812 ], [ -122.499797151337432, 37.788567645255235 ], [ -122.499803450517931, 37.788608742793357 ], [ -122.49976162645244, 37.788662331112889 ], [ -122.499733393517658, 37.788642207768127 ], [ -122.499727335024716, 37.788610033760072 ], [ -122.49968724080243, 37.78866359271359 ], [ -122.499634371443463, 37.788692645687142 ], [ -122.499577562358439, 37.788703910220832 ], [ -122.499554630056736, 37.788687817377856 ], [ -122.499511356576448, 37.788623310977023 ], [ -122.499481164550005, 37.788530426400044 ], [ -122.499432590648397, 37.788461889419303 ], [ -122.499336411156918, 37.788425062960037 ], [ -122.499266771879846, 37.788409762065221 ], [ -122.499202877060384, 37.788414965914313 ], [ -122.499128103233858, 37.788401812217707 ], [ -122.499099500985864, 37.788367960195586 ], [ -122.499041638784547, 37.788340098176221 ], [ -122.498955421371278, 37.788351861015244 ], [ -122.498920128036829, 37.788390916780045 ], [ -122.498889600061332, 37.788414096736403 ], [ -122.498846352726645, 37.788414829911119 ], [ -122.498829249780883, 37.788358120749585 ], [ -122.498858133988094, 37.78827384858316 ], [ -122.49881028141921, 37.788232082242921 ], [ -122.498779365121052, 37.788240846950437 ], [ -122.498721638945739, 37.788282343161484 ], [ -122.498684745303493, 37.788326233159403 ], [ -122.498610415395817, 37.78832955335983 ], [ -122.498598336042235, 37.788266578082698 ], [ -122.498619439354101, 37.78821471490064 ], [ -122.498602392043921, 37.788160064708592 ], [ -122.498537684539031, 37.788135065438439 ], [ -122.498508608985759, 37.788147919585676 ], [ -122.498480069151427, 37.788180680090115 ], [ -122.498393075984339, 37.788163612611328 ], [ -122.498359007071954, 37.788119551978269 ], [ -122.498367465612489, 37.788047987710556 ], [ -122.498258002596998, 37.788031987711385 ], [ -122.498205083784299, 37.787930560386634 ], [ -122.498141496631646, 37.787882879514228 ], [ -122.498020127555392, 37.787874635204304 ], [ -122.497965657850202, 37.7879085217278 ], [ -122.497937733854386, 37.787835513791961 ], [ -122.497862794972676, 37.787816181447418 ], [ -122.497833152644503, 37.787872309616162 ], [ -122.497858996475657, 37.787932304773527 ], [ -122.497838976582202, 37.787960113577462 ], [ -122.497779058543074, 37.787984477979037 ], [ -122.497727525397508, 37.787934532426668 ], [ -122.4976806523715, 37.787929145955836 ], [ -122.497620549305267, 37.78794664601778 ], [ -122.497594065916346, 37.787927179270163 ], [ -122.49754290189, 37.78789096244769 ], [ -122.49750382929264, 37.787853853467084 ], [ -122.497544349339876, 37.787816083058736 ], [ -122.497526053110533, 37.787779309105126 ], [ -122.497500930399411, 37.787746084497506 ], [ -122.497517139436695, 37.787705292265386 ], [ -122.497507659501551, 37.787674549599402 ], [ -122.497485331532715, 37.787616555022737 ], [ -122.497458570647495, 37.787586791856477 ], [ -122.497406323956653, 37.787574629197884 ], [ -122.49735786900257, 37.787574763042187 ], [ -122.497315176016556, 37.787596088453697 ], [ -122.497275259657627, 37.787591957457558 ], [ -122.497216443565691, 37.787592953772126 ], [ -122.497168648080745, 37.787553245760044 ], [ -122.497138187607533, 37.787514617578381 ], [ -122.497106127216909, 37.787480823939255 ], [ -122.497044990964866, 37.787459883810421 ], [ -122.496999885071403, 37.787455840347057 ], [ -122.496923235404381, 37.787437223130333 ], [ -122.496894579157143, 37.787401311287425 ], [ -122.49685734707576, 37.787368291637833 ], [ -122.496811927818939, 37.787352579117055 ], [ -122.496751769988833, 37.787368019451996 ], [ -122.496728617227618, 37.787343688934776 ], [ -122.496685721170834, 37.787357463425209 ], [ -122.496639544906756, 37.787313607347343 ], [ -122.496583690806744, 37.787296011229486 ], [ -122.496547105206147, 37.787287016686854 ], [ -122.496516354783793, 37.787301958649365 ], [ -122.49646797383916, 37.787304838384266 ], [ -122.496443903661216, 37.787310739875238 ], [ -122.496383616604291, 37.787321374760424 ], [ -122.496337075877918, 37.787328343443079 ], [ -122.496276530804948, 37.787329368567015 ], [ -122.496247565545247, 37.787346340725328 ], [ -122.496197934785357, 37.787367096454552 ], [ -122.496141439524379, 37.787390028597343 ], [ -122.496086747911505, 37.787415677408667 ], [ -122.496068420456311, 37.787442083500181 ], [ -122.496016690354622, 37.787449139908034 ], [ -122.495972174940263, 37.787467062259353 ], [ -122.495951842506244, 37.787478615416269 ], [ -122.495939786703687, 37.787485465489738 ], [ -122.495905650481646, 37.787503211836551 ], [ -122.495879794980965, 37.787507083489736 ], [ -122.495820979283494, 37.78750807910243 ], [ -122.49579201419597, 37.787525051142431 ], [ -122.495771716907484, 37.787542562920031 ], [ -122.495716453167731, 37.787546932051697 ], [ -122.495690597288615, 37.78755080339463 ], [ -122.495618108578682, 37.787558210990248 ], [ -122.495602871400223, 37.787570830192877 ], [ -122.495572047584162, 37.787583026463722 ], [ -122.495539604212951, 37.787599370571847 ], [ -122.495514135330879, 37.787617657121146 ], [ -122.495483182354334, 37.787625048105859 ], [ -122.495437195053938, 37.787652609233902 ], [ -122.495395954684781, 37.787663608544698 ], [ -122.495370190617706, 37.787670911683094 ], [ -122.495333314088882, 37.787715487058371 ], [ -122.495282044474621, 37.787739703822119 ], [ -122.495193913200154, 37.787744628911668 ], [ -122.495147390885393, 37.787752283545302 ], [ -122.495107603658113, 37.787752956804084 ], [ -122.495081894872186, 37.787762319709344 ], [ -122.495049506978233, 37.787780722682484 ], [ -122.494942531016747, 37.787792833838672 ], [ -122.494936422880045, 37.787823153702263 ], [ -122.49487624549289, 37.787837906657984 ], [ -122.494850021018962, 37.787828049271276 ], [ -122.494803406419749, 37.787832271634258 ], [ -122.494754880927445, 37.787894212652994 ], [ -122.494747761584406, 37.787951332156055 ], [ -122.494723178126165, 37.788002566741419 ], [ -122.494687204176572, 37.788080776838861 ], [ -122.494700862218465, 37.788138231843071 ], [ -122.494641953469724, 37.788135794738686 ], [ -122.494554921507401, 37.788052798168373 ], [ -122.494515868416002, 37.788016374906285 ], [ -122.4945350783522, 37.787958364153376 ], [ -122.494513047598829, 37.787911351574522 ], [ -122.494517883781597, 37.787833668269109 ], [ -122.494492854234224, 37.787803875161934 ], [ -122.494463538439888, 37.787807804761236 ], [ -122.494432676774579, 37.787818627891369 ], [ -122.494408993418205, 37.787838943934148 ], [ -122.494413448366132, 37.787875952476604 ], [ -122.494396887310245, 37.787903702167263 ], [ -122.49434981175834, 37.787890763675087 ], [ -122.494353194757167, 37.787823406042577 ], [ -122.494335895597104, 37.78782369865479 ], [ -122.49430957902598, 37.787810409012593 ], [ -122.494266331651687, 37.787811140513561 ], [ -122.49416034840992, 37.787795764612234 ], [ -122.494129594818148, 37.787746152815927 ], [ -122.494106737724252, 37.787732804619111 ], [ -122.494080878906914, 37.78767212220432 ], [ -122.494005791021607, 37.787582742860096 ], [ -122.49397989817011, 37.78758524069908 ], [ -122.493937148914341, 37.787604505606133 ], [ -122.49390314117592, 37.787627056362858 ], [ -122.493853140270886, 37.787634082573049 ], [ -122.493776804515477, 37.787627132573334 ], [ -122.493743568607016, 37.787613959813378 ], [ -122.493738061048077, 37.787613306047696 ], [ -122.493682801772195, 37.787606746485388 ], [ -122.493586205100101, 37.787618680905503 ], [ -122.493496509486093, 37.787629812101237 ], [ -122.493461856653141, 37.787628337503875 ], [ -122.493419162517711, 37.787649661504638 ], [ -122.493384362282285, 37.787642696015901 ], [ -122.493336275791464, 37.787656556752133 ], [ -122.493293636533849, 37.787679939994845 ], [ -122.493241832649318, 37.78768424947036 ], [ -122.493193617141287, 37.7876933054322 ], [ -122.493182042295089, 37.787713416527986 ], [ -122.493127220447846, 37.787734258699906 ], [ -122.493090653466112, 37.787725949238315 ], [ -122.493056424336842, 37.787740262623288 ], [ -122.493004582859115, 37.787743199151691 ], [ -122.492969929990394, 37.787741724684366 ], [ -122.492955061461288, 37.787768072078173 ], [ -122.492913931184304, 37.787783188809769 ], [ -122.492855170492433, 37.787786242224989 ], [ -122.492860417128782, 37.787852767193691 ], [ -122.492830071355925, 37.787882810136729 ], [ -122.492771255320051, 37.787883804228279 ], [ -122.492769800087729, 37.787829576197716 ], [ -122.492735920840914, 37.787856931882516 ], [ -122.49268687433684, 37.78777054473629 ], [ -122.492679439061774, 37.787751441716487 ], [ -122.492627892968244, 37.787765361179233 ], [ -122.492565672509713, 37.787768472646512 ], [ -122.492506929887313, 37.787772212321414 ], [ -122.492446513322577, 37.787778040470201 ], [ -122.492381054094224, 37.787789447708391 ], [ -122.492305602297094, 37.78781544526975 ], [ -122.492216274554934, 37.787840303764064 ], [ -122.492178548608294, 37.787853302497936 ], [ -122.492118555140365, 37.787874918314273 ], [ -122.492079412316457, 37.787899615509929 ], [ -122.492057605141056, 37.787925393277668 ], [ -122.491876207129678, 37.788001938945712 ], [ -122.491812827679937, 37.788026359033061 ], [ -122.491772083659185, 37.788055890066879 ], [ -122.491719745560601, 37.788104846164785 ], [ -122.491654323091851, 37.788117625573307 ], [ -122.491646041850075, 37.7881315002275 ], [ -122.491614039214184, 37.788164317512276 ], [ -122.491501375628616, 37.788222533071625 ], [ -122.491447583651606, 37.788217260993214 ], [ -122.491404851437281, 37.788237211413325 ], [ -122.491281422016286, 37.788281187084038 ], [ -122.491218428658357, 37.788320021552913 ], [ -122.491190014384841, 37.788357585284182 ], [ -122.491137087049111, 37.788384575161345 ], [ -122.491061983912687, 37.788423614320799 ], [ -122.490946338544006, 37.788499734606098 ], [ -122.490859530409139, 37.788554079246722 ], [ -122.490843207112334, 37.788590751992317 ], [ -122.490818381167585, 37.788633062206074 ], [ -122.490696422877051, 37.78873195173508 ], [ -122.490605105739689, 37.78881178134435 ], [ -122.490527498874997, 37.788886572527467 ], [ -122.490413287423564, 37.788951680519325 ], [ -122.490407103746506, 37.78897925443183 ], [ -122.490354139232181, 37.78900487109366 ], [ -122.490306437661019, 37.789033145843504 ], [ -122.490251889996458, 37.789064283086574 ], [ -122.490252239550742, 37.789077325209703 ], [ -122.490220015123754, 37.789101904980171 ], [ -122.490046709329732, 37.789222262378196 ], [ -122.489918657120555, 37.789352156846768 ], [ -122.489828681483118, 37.789482095324693 ], [ -122.489700630133797, 37.789482882790033 ], [ -122.489592566089883, 37.789454489856745 ], [ -122.489300670464104, 37.789412030065776 ], [ -122.489191447548507, 37.789340391834585 ], [ -122.488990889258972, 37.789283342302205 ], [ -122.48848285911852, 37.789442306771541 ], [ -122.488100013149761, 37.789428847345718 ], [ -122.488028309941384, 37.789530320047362 ], [ -122.487863707315668, 37.789588034282978 ], [ -122.487736999824023, 37.789574375465854 ], [ -122.487584402186499, 37.78949866010057 ], [ -122.487564674856429, 37.789472896340307 ], [ -122.487563664349921, 37.78943514280558 ], [ -122.487464302267156, 37.789473215069947 ], [ -122.48744759425297, 37.789430918694578 ], [ -122.487369692668253, 37.789430171560369 ], [ -122.487296628705792, 37.789480848156245 ], [ -122.487120114954962, 37.789610869819036 ], [ -122.487051777894393, 37.789708851205745 ], [ -122.4869376141597, 37.789840568479555 ], [ -122.486809390152729, 37.789964281705743 ], [ -122.486730121786451, 37.790041845235905 ], [ -122.486553036429143, 37.790150586495734 ], [ -122.486429009493079, 37.790237144752382 ], [ -122.486335272657072, 37.790356155991162 ], [ -122.486245109599949, 37.790414674064778 ], [ -122.486236878145661, 37.790495160989501 ], [ -122.486221786002261, 37.790513270391187 ], [ -122.485095392905748, 37.790094746949087 ], [ -122.484316748868366, 37.789805424389257 ], [ -122.484214987310182, 37.789767611906584 ], [ -122.484071292407094, 37.789571562974182 ], [ -122.484019551359538, 37.788671434543716 ], [ -122.483911841345289, 37.78771598691722 ], [ -122.483910676418589, 37.787705653817092 ], [ -122.481375583614479, 37.787198893328011 ], [ -122.479861181106074, 37.787037199203986 ], [ -122.478707989065171, 37.78691405835 ], [ -122.477707716230128, 37.786939475526701 ], [ -122.476637454822679, 37.786966661899442 ], [ -122.476572244768761, 37.786128658440397 ], [ -122.476575166016133, 37.786128513873635 ], [ -122.476575148769683, 37.786128282045887 ], [ -122.476436803741322, 37.784271125057622 ], [ -122.476306551695615, 37.782405954593735 ], [ -122.476169188584777, 37.78047585000003 ], [ -122.476025278884237, 37.778553841183147 ], [ -122.475888270951586, 37.776692974324831 ], [ -122.475750968701433, 37.774828017958995 ], [ -122.475613644972711, 37.772962670675476 ], [ -122.475613625589148, 37.772962410314676 ], [ -122.476694205661246, 37.772912858094969 ], [ -122.477069824745385, 37.772895630732648 ], [ -122.477766947236773, 37.772863655180586 ], [ -122.478836951668541, 37.772814568639937 ], [ -122.47883762078969, 37.772814536530767 ], [ -122.478848715172788, 37.772814028898644 ], [ -122.479904580478745, 37.772765580938412 ], [ -122.480978851643016, 37.772716079930653 ], [ -122.481947659007389, 37.77267180789157 ], [ -122.482048961146063, 37.772667157434498 ], [ -122.483119121668807, 37.772618024364625 ], [ -122.483119139145145, 37.772618264154566 ], [ -122.484194219251819, 37.772569315707138 ], [ -122.484194201052048, 37.772569061919981 ], [ -122.485152053625171, 37.772525429693054 ], [ -122.485261332297384, 37.772520422109807 ], [ -122.485262022888591, 37.772520390701253 ], [ -122.486334053115812, 37.772471462244795 ], [ -122.486678527930636, 37.772455879683093 ], [ -122.487398288926627, 37.772423078182946 ], [ -122.487398306387334, 37.772423316873983 ], [ -122.487399123482518, 37.77242327974907 ], [ -122.488470602075608, 37.772374307055074 ], [ -122.488471323394165, 37.772374169626119 ], [ -122.489539486385709, 37.772325343661755 ], [ -122.49061689309373, 37.772276279654356 ], [ -122.490617013718605, 37.772276274046327 ], [ -122.491688031137627, 37.772227293012065 ], [ -122.492761363210761, 37.772178246338406 ], [ -122.493316307377469, 37.772153213706439 ], [ -122.493832479293559, 37.77212966191987 ], [ -122.493832498174271, 37.772129926957135 ], [ -122.493833180817205, 37.772129896182108 ], [ -122.494902921073546, 37.772080894286702 ], [ -122.494903299427449, 37.772080795311069 ], [ -122.495971990075716, 37.772031913255347 ], [ -122.497046812008847, 37.771982808835908 ], [ -122.497412740335307, 37.771966238858134 ], [ -122.498113882732468, 37.771934487449556 ], [ -122.499183042122894, 37.771885392463027 ], [ -122.500200291234236, 37.771838923903807 ], [ -122.500257545202601, 37.771836308607973 ], [ -122.501327700223527, 37.771787274197017 ], [ -122.502399595949868, 37.771738155153713 ], [ -122.502399732131124, 37.771738148994636 ], [ -122.503472688521128, 37.771689380410749 ], [ -122.503472690942445, 37.771689380369601 ], [ -122.504544396347384, 37.771640577944709 ], [ -122.505611140464779, 37.771591516134151 ], [ -122.50668530503512, 37.771542352938617 ], [ -122.506685577396198, 37.771542340610623 ], [ -122.506991972993774, 37.771528822999358 ], [ -122.507750664399296, 37.771495034126787 ], [ -122.507750665782908, 37.771495034103232 ], [ -122.508780633594597, 37.771447480819759 ], [ -122.508823169175031, 37.771445503888728 ], [ -122.508823330922013, 37.771445496187766 ], [ -122.508867990729883, 37.771443447055226 ], [ -122.509894749698645, 37.771396032095495 ], [ -122.509894781266311, 37.771396329054475 ], [ -122.511053819156686, 37.771347546731022 ], [ -122.511055400217217, 37.771347479926334 ], [ -122.512571364940968, 37.771283657974607 ], [ -122.51313192303401, 37.771260053409627 ], [ -122.51314077587368, 37.771331323581165 ], [ -122.513103639776702, 37.771429475690731 ], [ -122.513116974838326, 37.771538439951165 ], [ -122.5131111559662, 37.771706791559524 ], [ -122.513101727800077, 37.771741976505247 ], [ -122.513108516285712, 37.771800920539754 ], [ -122.513097415135022, 37.771902061732895 ], [ -122.513158379126494, 37.77223615155534 ], [ -122.513150048202618, 37.772247968474822 ], [ -122.513145175599931, 37.772259726057939 ], [ -122.513142070416649, 37.772272827219133 ], [ -122.513140694405962, 37.772285899124284 ], [ -122.513142777404809, 37.77229891140734 ], [ -122.51314831943732, 37.772311864891819 ], [ -122.513155553774638, 37.772323415987366 ], [ -122.513162806726825, 37.772335653782996 ], [ -122.513171807785298, 37.772348547918142 ], [ -122.513179470052052, 37.772375886809904 ], [ -122.513181590285754, 37.772390272493183 ], [ -122.513180232870297, 37.772404030275354 ], [ -122.513177164205956, 37.772418504300951 ], [ -122.513164035088622, 37.772444825057953 ], [ -122.513153956021, 37.772455985088065 ], [ -122.513145624725894, 37.77246780201267 ], [ -122.513139041542303, 37.772480275551658 ], [ -122.513134206485844, 37.772493406254469 ], [ -122.513132830469672, 37.772506478159016 ], [ -122.513133202560653, 37.772520206404018 ], [ -122.513137015097556, 37.772533189699409 ], [ -122.513142557139105, 37.772546142909071 ], [ -122.513149791498321, 37.772557694004483 ], [ -122.513128650263695, 37.772862969521874 ], [ -122.513143974877181, 37.772917647305441 ], [ -122.513134546565453, 37.772952831971672 ], [ -122.513140759176039, 37.773054363934854 ], [ -122.513127629925961, 37.773080684410282 ], [ -122.513121083909837, 37.773094531347873 ], [ -122.513117996938973, 37.773108318663766 ], [ -122.513113180104355, 37.773122136070647 ], [ -122.513110502783931, 37.773151024750284 ], [ -122.513109145348821, 37.773164782804365 ], [ -122.513109926760848, 37.773193612966814 ], [ -122.513112046989562, 37.773207998100119 ], [ -122.513115877809639, 37.773221667551859 ], [ -122.513119727927929, 37.77323602341751 ], [ -122.513123558750877, 37.773249692868944 ], [ -122.513130848990954, 37.773263303241755 ], [ -122.513136372841529, 37.773275570567371 ], [ -122.513136837962776, 37.773292730939929 ], [ -122.513139032281771, 37.773309862056486 ], [ -122.513139962541018, 37.773344183350439 ], [ -122.513137434071865, 37.77337856371112 ], [ -122.513137899208886, 37.773395724632501 ], [ -122.51313663480029, 37.773412914815644 ], [ -122.513133622247153, 37.773429448109219 ], [ -122.513132357829548, 37.773446638017631 ], [ -122.513129363533338, 37.773463857742755 ], [ -122.513124956674076, 37.773492776231812 ], [ -122.513123636099678, 37.773507907142864 ], [ -122.513125756700802, 37.773522292818349 ], [ -122.513127895547086, 37.773537364376381 ], [ -122.513130108829742, 37.773555182186904 ], [ -122.51313457258631, 37.77359218983559 ], [ -122.513137102897502, 37.773685543750098 ], [ -122.51313464849045, 37.773722669817865 ], [ -122.513133402680765, 37.77374054642582 ], [ -122.513130445590789, 37.773759139276294 ], [ -122.513129218723165, 37.773777702029449 ], [ -122.513126261969134, 37.773796294599215 ], [ -122.513121575665878, 37.773814916705028 ], [ -122.513118599957409, 37.773832822854594 ], [ -122.513113913995852, 37.773851444954062 ], [ -122.513110938637425, 37.773869351371971 ], [ -122.513106251972374, 37.773887973208282 ], [ -122.513098199929146, 37.77391008650784 ], [ -122.513115558504083, 37.774550522030069 ], [ -122.513135161617555, 37.77469921031755 ], [ -122.513164585532962, 37.774890995995399 ], [ -122.513170483591551, 37.775108592933201 ], [ -122.513148799533084, 37.77520236034195 ], [ -122.513166877896921, 37.775294761967629 ], [ -122.513138108336719, 37.775382469681844 ], [ -122.513154511511672, 37.775413093012311 ], [ -122.513118656446565, 37.775494741304421 ], [ -122.513116560550898, 37.775991978980805 ], [ -122.513220716743945, 37.77664260637399 ], [ -122.513262136135666, 37.776766199546913 ], [ -122.513273147342474, 37.776853227885702 ], [ -122.513301250635152, 37.776996277263876 ], [ -122.513336088063554, 37.777196211308791 ], [ -122.513350113009579, 37.777330573444466 ], [ -122.513418927986152, 37.77744339753194 ], [ -122.513485622738756, 37.777541836186963 ], [ -122.513511493535475, 37.777602514461641 ], [ -122.513605787519069, 37.777633867571893 ], [ -122.513789576977686, 37.777711077145469 ], [ -122.513970390041706, 37.777742325491253 ], [ -122.514130469394843, 37.777902348781886 ], [ -122.514271487815051, 37.77812519117407 ], [ -122.514413862528215, 37.778270408245596 ], [ -122.514604595643718, 37.77847591891544 ], [ -122.51462964838835, 37.778506394234036 ], [ -122.514661065627067, 37.778643892998048 ], [ -122.514636184118331, 37.778747329407956 ], [ -122.514564452996041, 37.778846072735902 ], [ -122.514578405995934, 37.778977688986053 ], [ -122.51449838155861, 37.779153489214309 ], [ -122.5144938833634, 37.779242842682805 ], [ -122.514567855611702, 37.77941807161681 ], [ -122.514670725915678, 37.779446530659044 ], [ -122.514854558211539, 37.779525111397355 ], [ -122.514948079566921, 37.779719234525949 ], [ -122.514897941861832, 37.779848512679017 ], [ -122.514749765647835, 37.779872333834206 ], [ -122.514641072918508, 37.779820625636908 ], [ -122.514565266573783, 37.77989677577483 ], [ -122.514533951466817, 37.780082044762075 ], [ -122.514511340895595, 37.780269225221183 ], [ -122.514474054726847, 37.780425753002312 ], [ -122.51446673230646, 37.780602371059075 ], [ -122.514648527113849, 37.780860913612862 ], [ -122.51472341591213, 37.781133644263413 ], [ -122.514586047991969, 37.781300809991649 ], [ -122.514468426928062, 37.781302819849991 ], [ -122.514292998946104, 37.781279034300063 ], [ -122.514303621052633, 37.781351647553429 ], [ -122.514284968188448, 37.781429568185636 ], [ -122.514242655950966, 37.781464628517519 ], [ -122.513867881152649, 37.781428452669296 ], [ -122.513760174171992, 37.78147699096975 ], [ -122.513883322187127, 37.781614982927096 ], [ -122.513812238767187, 37.78173775061245 ], [ -122.513697000270085, 37.781891489394212 ], [ -122.513670014693673, 37.78198122658408 ], [ -122.513522169917209, 37.782081269425682 ], [ -122.513466336763443, 37.782192101792845 ], [ -122.513546762127802, 37.782286185176545 ], [ -122.513589561336119, 37.782396706497991 ], [ -122.513504004159799, 37.782432504856651 ], [ -122.51345966482603, 37.782520478406092 ], [ -122.513490615272289, 37.782576949453883 ], [ -122.51349907897729, 37.782633804536587 ], [ -122.513499154475824, 37.782700417272132 ], [ -122.513444212427984, 37.782780331251374 ], [ -122.513311970586869, 37.782817613200059 ], [ -122.513176844047379, 37.782748499450129 ], [ -122.513099674895386, 37.782774539876293 ], [ -122.513082211268937, 37.782896391754747 ], [ -122.512985625061674, 37.783036075867919 ], [ -122.513019551763222, 37.783138507955194 ], [ -122.513026396706579, 37.783199511429288 ], [ -122.512878567398928, 37.783236372275823 ], [ -122.512854035372925, 37.783352850568228 ], [ -122.512805434943459, 37.783475233699562 ], [ -122.512705462306386, 37.783553855572684 ], [ -122.512518627902452, 37.783620225547125 ], [ -122.512466567525493, 37.783742667306889 ], [ -122.512644903191074, 37.783873537806549 ], [ -122.512713964283492, 37.783931418677646 ], [ -122.512652381073622, 37.784021746473734 ], [ -122.512681006779928, 37.784120148680003 ], [ -122.512565948104239, 37.784153016218092 ], [ -122.512295468592697, 37.783942683042248 ], [ -122.512111442218099, 37.7837933668308 ], [ -122.511916645881882, 37.783949148187006 ], [ -122.511936379260646, 37.784102641671865 ], [ -122.512002036912364, 37.7841626409828 ], [ -122.51201098319315, 37.784237343198853 ], [ -122.511976089219957, 37.784290817818842 ], [ -122.511911287292179, 37.784326260764388 ], [ -122.511796674312308, 37.784311734732256 ], [ -122.511643280924901, 37.784334954352396 ], [ -122.511486279442096, 37.784288874386938 ], [ -122.511300968574147, 37.78428379521467 ], [ -122.511334223422679, 37.784425383212891 ], [ -122.511306545033449, 37.784553589399493 ], [ -122.511229614678896, 37.784588552121491 ], [ -122.51102434727656, 37.784485608568794 ], [ -122.510971002039966, 37.784496819600761 ], [ -122.510838401528204, 37.784584923981406 ], [ -122.510747296660981, 37.784671633775218 ], [ -122.510491862112929, 37.784697278857706 ], [ -122.510370776300974, 37.784699343616424 ], [ -122.510236724687886, 37.784733906185757 ], [ -122.510168389422006, 37.784702794445394 ], [ -122.510020323714343, 37.784723420804994 ], [ -122.509994254968106, 37.784727052267002 ], [ -122.509808028924709, 37.784816069670107 ], [ -122.509716922917022, 37.784902778658349 ], [ -122.509665899527562, 37.784999792217178 ], [ -122.509574233553352, 37.78512977535155 ], [ -122.509483405510977, 37.78522678080374 ], [ -122.50935080157798, 37.785314883231258 ], [ -122.509270075574662, 37.785337547981477 ], [ -122.509233168789549, 37.785444621876991 ], [ -122.509117710773396, 37.785590805131108 ], [ -122.508796514633275, 37.785744614237508 ], [ -122.508661532747013, 37.785744853745925 ], [ -122.508565980602214, 37.785795240243836 ], [ -122.508486275275231, 37.785855657828165 ], [ -122.50845217664569, 37.785938647661681 ], [ -122.508258558155333, 37.786074486851589 ], [ -122.50824179847983, 37.786094687819457 ], [ -122.508218230136194, 37.78611912520401 ], [ -122.508132741023516, 37.786157665329803 ], [ -122.508102962554631, 37.786144437693665 ], [ -122.508035220497703, 37.78613529033418 ], [ -122.507963402235234, 37.786167416830274 ], [ -122.507918608664951, 37.786238914034136 ], [ -122.507884921314982, 37.786273138055307 ], [ -122.507810998339579, 37.786355432403496 ], [ -122.507791149628716, 37.786389420730835 ], [ -122.507786702460081, 37.786416966109108 ], [ -122.507753742643061, 37.786414093677742 ], [ -122.507723143657557, 37.786434530234523 ], [ -122.507686905785704, 37.786502447942446 ], [ -122.50771513615085, 37.786586436657288 ], [ -122.507634122264022, 37.786726537606768 ], [ -122.507529970492527, 37.786842996798164 ], [ -122.507416802174745, 37.786882007667536 ], [ -122.507337150418977, 37.786944484013162 ], [ -122.507251469686537, 37.787040025961154 ], [ -122.50719904571541, 37.787149423517022 ], [ -122.507107186903028, 37.787272540712486 ], [ -122.507053654233644, 37.787276885429115 ], [ -122.506971891727119, 37.787453396158277 ], [ -122.506896872053431, 37.78749519083452 ], [ -122.50673936089315, 37.787494438084011 ], [ -122.506717248362293, 37.787444682355584 ], [ -122.506653688773341, 37.787462245895419 ], [ -122.506526049480186, 37.787478152978885 ], [ -122.506492546406875, 37.787519241120947 ], [ -122.506427084531083, 37.787594522862221 ], [ -122.506343785965981, 37.787650192878154 ], [ -122.506284872420196, 37.787711628562818 ], [ -122.506271997783998, 37.787747558158287 ], [ -122.506258863502353, 37.787773877799495 ], [ -122.50624035413243, 37.787793421492793 ], [ -122.506219873800518, 37.787804071365088 ], [ -122.506177628287418, 37.787841873914068 ], [ -122.506131292484596, 37.787856397132735 ], [ -122.506163876746712, 37.787909408764172 ], [ -122.506122372558949, 37.787974668305665 ], [ -122.506121008614969, 37.788052293211784 ], [ -122.506089600492331, 37.788170947004069 ], [ -122.506052098981115, 37.788192187283286 ], [ -122.505852340805589, 37.788229236102978 ], [ -122.505747263058424, 37.788247505451196 ], [ -122.505657587040744, 37.788259332046266 ], [ -122.505605226952582, 37.788243054476361 ], [ -122.505520554840288, 37.788247928168715 ], [ -122.505423328958457, 37.788236533825454 ], [ -122.505330267621474, 37.78825116471306 ], [ -122.505202440987361, 37.788260206114757 ], [ -122.505107748523827, 37.788214431400775 ], [ -122.505021260444238, 37.788152035322256 ], [ -122.50498134335804, 37.788147906935059 ], [ -122.504941407743146, 37.788143092108974 ], [ -122.504896245414301, 37.788136992665024 ], [ -122.504877161086682, 37.788135256957062 ], [ -122.504859843370596, 37.788134864962309 ], [ -122.504835625333357, 37.788135276762382 ], [ -122.504801138826153, 37.7881399833256 ], [ -122.504785514269201, 37.788138188774688 ], [ -122.504771508408268, 37.788132246255898 ], [ -122.504759158308161, 37.788123528620481 ], [ -122.5047502309164, 37.788113379306509 ], [ -122.504739555111996, 37.788102572979582 ], [ -122.504727204674595, 37.788093855346673 ], [ -122.504711432227211, 37.788086569376937 ], [ -122.504695715029484, 37.788081342687157 ], [ -122.504680053426, 37.788078175271465 ], [ -122.50466269900177, 37.788076410116517 ], [ -122.50464541869988, 37.788077390660611 ], [ -122.504626408521617, 37.788078400888217 ], [ -122.504609090805303, 37.788078008307494 ], [ -122.504591755258659, 37.788076929561612 ], [ -122.504576093667978, 37.788073762406697 ], [ -122.504558683651112, 37.788069937685613 ], [ -122.504543003526479, 37.788066083826294 ], [ -122.504525593174549, 37.788062259380773 ], [ -122.504508220574564, 37.788059807771766 ], [ -122.50449088434911, 37.788058729297397 ], [ -122.504468396217547, 37.788059111612547 ], [ -122.504456509027335, 37.788067554312491 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":5,"ZIP_CODE":94118,"ID":94118},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.448885763577039, 37.778388598994987 ], [ -122.449767079183658, 37.778277008331997 ], [ -122.450654812483819, 37.778164598609756 ], [ -122.450826415883952, 37.778142868140662 ], [ -122.451543139139602, 37.778052106408275 ], [ -122.452431111623397, 37.777939652339285 ], [ -122.453384996187339, 37.777826863341367 ], [ -122.45318832797058, 37.776853425180988 ], [ -122.452963825070867, 37.775750129254348 ], [ -122.452810237317621, 37.774995318605924 ], [ -122.453003330637316, 37.774970754669006 ], [ -122.45468264773983, 37.77475548474694 ], [ -122.454683295611602, 37.774755406979118 ], [ -122.455033749574639, 37.77471323536281 ], [ -122.45525254468275, 37.774686906456331 ], [ -122.455898178089939, 37.774604132119862 ], [ -122.456283639851293, 37.774554711848936 ], [ -122.456283671603558, 37.774554866249353 ], [ -122.456283917173579, 37.774554834704738 ], [ -122.457134751103212, 37.774454490912483 ], [ -122.458371099123696, 37.774308895694055 ], [ -122.458795325509186, 37.774254885425997 ], [ -122.459486118442314, 37.77416693399686 ], [ -122.459486145343419, 37.77416729779403 ], [ -122.459486938645284, 37.774167197254911 ], [ -122.460552700773292, 37.774031358657659 ], [ -122.460552661960989, 37.774031133779268 ], [ -122.461619755154771, 37.7738952534419 ], [ -122.461619775372085, 37.773895534117642 ], [ -122.461620188227315, 37.77389548164836 ], [ -122.462535340858068, 37.773778657528119 ], [ -122.462683796526321, 37.773759751788596 ], [ -122.463749210177951, 37.773624065149079 ], [ -122.464811670328331, 37.773488744378348 ], [ -122.465331676538511, 37.773422509669793 ], [ -122.465883163277454, 37.773398204721545 ], [ -122.466373346760548, 37.773376599548058 ], [ -122.466951728424362, 37.773351356945881 ], [ -122.466952500298319, 37.773351323464517 ], [ -122.468023916207073, 37.773303833556405 ], [ -122.468348575135167, 37.773289518371953 ], [ -122.469092496140973, 37.773256712542192 ], [ -122.469517084069324, 37.773237987003441 ], [ -122.470162692059887, 37.773209510586071 ], [ -122.470162712316579, 37.773209791534974 ], [ -122.471240089434815, 37.773162280380667 ], [ -122.47124006836178, 37.773161981865066 ], [ -122.471762122569857, 37.773138947752848 ], [ -122.472219951938214, 37.773117969260745 ], [ -122.472297341321692, 37.773114423074823 ], [ -122.473427836194134, 37.773062613687692 ], [ -122.473737577092777, 37.773048416620476 ], [ -122.474550910293516, 37.773011133644289 ], [ -122.474550931211951, 37.773011425844139 ], [ -122.47455168367884, 37.773011391539193 ], [ -122.475612802305008, 37.772962709520556 ], [ -122.475613644972711, 37.772962670675476 ], [ -122.475750968701433, 37.774828017958995 ], [ -122.475888270951586, 37.776692974324831 ], [ -122.476025278884237, 37.778553841183147 ], [ -122.476169188584777, 37.78047585000003 ], [ -122.476306551695615, 37.782405954593735 ], [ -122.476436803741322, 37.784271125057622 ], [ -122.476575148769683, 37.786128282045887 ], [ -122.476575166016133, 37.786128513873635 ], [ -122.476572244768761, 37.786128658440397 ], [ -122.476637454822679, 37.786966661899442 ], [ -122.47616220885665, 37.786978730627588 ], [ -122.475567725323828, 37.787005248954515 ], [ -122.475136959985235, 37.787024462123846 ], [ -122.474584006514732, 37.787049123020516 ], [ -122.474432824368861, 37.787072820298278 ], [ -122.473333621918172, 37.787245111436654 ], [ -122.473316434470121, 37.787247805418339 ], [ -122.472782224474642, 37.787331534391747 ], [ -122.47254342327507, 37.787368961705944 ], [ -122.472401902490546, 37.787384046501884 ], [ -122.472290534181823, 37.787395917162272 ], [ -122.468653534340191, 37.787783523544832 ], [ -122.466942641213976, 37.788133153852705 ], [ -122.465882841138949, 37.788349715761562 ], [ -122.4648365613821, 37.788563504283978 ], [ -122.463771243725489, 37.788781172337565 ], [ -122.459781586189493, 37.789596250165474 ], [ -122.45947565027717, 37.789710559160014 ], [ -122.459250455476877, 37.789713291862398 ], [ -122.459028627866218, 37.789715983297555 ], [ -122.459011873160264, 37.789719335764374 ], [ -122.457498733292852, 37.789996912625632 ], [ -122.455878319348855, 37.790294143976332 ], [ -122.454248357567437, 37.79059310209788 ], [ -122.452035629818212, 37.790998907609811 ], [ -122.450995459060991, 37.791209906278311 ], [ -122.449385188501296, 37.791484927305568 ], [ -122.449367313308201, 37.791487980191171 ], [ -122.449189583391288, 37.790608108274284 ], [ -122.449011564525605, 37.789726786022129 ], [ -122.448835781299294, 37.788856511426609 ], [ -122.448656220796209, 37.787977164570449 ], [ -122.4469741664482, 37.788186460801001 ], [ -122.446792779960703, 37.787261853518181 ], [ -122.446610465639836, 37.786302298311156 ], [ -122.446738337622591, 37.786243163870765 ], [ -122.446849274413296, 37.786186897081585 ], [ -122.447533801639068, 37.785411415165207 ], [ -122.447605133356163, 37.785275579171099 ], [ -122.447621599012791, 37.785194684567394 ], [ -122.447620107068687, 37.785083635258417 ], [ -122.447578549915917, 37.784998355250835 ], [ -122.447549635601661, 37.784906798974511 ], [ -122.447149436147441, 37.783030677550911 ], [ -122.447173033991248, 37.782710075581413 ], [ -122.447225622636566, 37.782575775503396 ], [ -122.447283893261542, 37.782434393634787 ], [ -122.447301513844337, 37.78239164221629 ], [ -122.447450898997985, 37.782195217632704 ], [ -122.447637300982407, 37.781719177617617 ], [ -122.447655108274333, 37.781537309189886 ], [ -122.447576361567485, 37.781175778551805 ], [ -122.447517982733274, 37.781069510753063 ], [ -122.447351927163439, 37.780152061280916 ], [ -122.447039806751391, 37.778622307248391 ], [ -122.447997721370214, 37.778501033647089 ], [ -122.448879206948348, 37.778389428728616 ], [ -122.448885763577039, 37.778388598994987 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":6,"ZIP_CODE":94123,"ID":94123},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.438402484723895, 37.794806973138577 ], [ -122.440045216960385, 37.794597761146619 ], [ -122.440868123190498, 37.794493055920753 ], [ -122.440870170501768, 37.794492795601883 ], [ -122.441712771485612, 37.794385578392699 ], [ -122.443384198876302, 37.794172877898092 ], [ -122.445035345747925, 37.79396273368863 ], [ -122.446587034424141, 37.793765298555968 ], [ -122.446446456540414, 37.792813716046261 ], [ -122.446587862952981, 37.793765120337646 ], [ -122.446727777261131, 37.794706464759514 ], [ -122.446727777275527, 37.794706465308671 ], [ -122.446751148304088, 37.794858932799087 ], [ -122.44687098056005, 37.795640691997477 ], [ -122.446928896449293, 37.796018515191513 ], [ -122.447014738218328, 37.796578509648619 ], [ -122.447014738232738, 37.796578510197754 ], [ -122.44715829625072, 37.79751500492933 ], [ -122.44715829626513, 37.797515005478481 ], [ -122.447209582420982, 37.797849561838987 ], [ -122.447303043858923, 37.798459232650295 ], [ -122.447327769221047, 37.798519415660031 ], [ -122.447341437979304, 37.798552685345861 ], [ -122.447400275900733, 37.798948048802856 ], [ -122.447466030932901, 37.799389886853575 ], [ -122.447613279369918, 37.80032370169468 ], [ -122.447614227653389, 37.80032479990944 ], [ -122.447802865090509, 37.801525678628579 ], [ -122.447819572978844, 37.801633208279924 ], [ -122.447819731578562, 37.801633051558142 ], [ -122.447857007904148, 37.801596177616553 ], [ -122.447921599691895, 37.801532283988202 ], [ -122.448359651469772, 37.801586782043685 ], [ -122.448802640091088, 37.801772003872607 ], [ -122.449043488821943, 37.801965383441527 ], [ -122.449178591741017, 37.802073857413127 ], [ -122.449460220896157, 37.80245428555321 ], [ -122.449536106109235, 37.802697377072583 ], [ -122.449565462756809, 37.802791419060213 ], [ -122.449583713807527, 37.803152915295549 ], [ -122.449583722697156, 37.803153095621241 ], [ -122.449495662264184, 37.803470319431604 ], [ -122.449388062152011, 37.803710849923448 ], [ -122.449253815658196, 37.803861977230383 ], [ -122.449124213448584, 37.804007874392056 ], [ -122.448954929708933, 37.80412855834809 ], [ -122.448814547024654, 37.804228638340902 ], [ -122.448316879890498, 37.804444627382082 ], [ -122.448245764546613, 37.8044754914729 ], [ -122.448240723025904, 37.804477679722268 ], [ -122.448240728857812, 37.804477717258706 ], [ -122.44824552349904, 37.804508484024247 ], [ -122.448279145759457, 37.80472422506687 ], [ -122.448321161555853, 37.804993824977359 ], [ -122.448323332142422, 37.805007750605469 ], [ -122.448455258275729, 37.806133277363898 ], [ -122.448456716038393, 37.806145711376217 ], [ -122.448529100304583, 37.806763241657009 ], [ -122.448398315024306, 37.806792871575105 ], [ -122.448372486009177, 37.806798105392311 ], [ -122.448348405000459, 37.806803997055574 ], [ -122.44832261235274, 37.806810603719661 ], [ -122.448274523063262, 37.806825132736471 ], [ -122.448250514438882, 37.806833770101044 ], [ -122.448204281209826, 37.806853075532878 ], [ -122.448182039290586, 37.806863057432189 ], [ -122.448159833037835, 37.806874411921982 ], [ -122.448139357121818, 37.80688573782485 ], [ -122.448117186873532, 37.806898464895561 ], [ -122.448103560271292, 37.806906930735266 ], [ -122.447833857922845, 37.807052164926837 ], [ -122.447528276286675, 37.807250818574119 ], [ -122.447180260711605, 37.80747705551984 ], [ -122.446637954280746, 37.807525151443585 ], [ -122.446476742583258, 37.807516824572637 ], [ -122.445255735074412, 37.807626931568663 ], [ -122.444832951299077, 37.807611928844082 ], [ -122.444812115030089, 37.807609525524043 ], [ -122.444789548054757, 37.807607150739592 ], [ -122.443882698723485, 37.807700913966812 ], [ -122.443762319418525, 37.807713359922936 ], [ -122.443684632386478, 37.807721507559208 ], [ -122.442739197031372, 37.807965235732532 ], [ -122.442711389346584, 37.807972404225552 ], [ -122.442625660786931, 37.808004032657479 ], [ -122.442524054141913, 37.808024247618199 ], [ -122.442354908341343, 37.808043514915532 ], [ -122.441767928096084, 37.808104685164672 ], [ -122.44153654297466, 37.808127036445633 ], [ -122.441200035212404, 37.808167598495942 ], [ -122.44095148917647, 37.808195724629321 ], [ -122.44065270005224, 37.808288542686931 ], [ -122.440627067703531, 37.808301325835579 ], [ -122.440575873699515, 37.808329637315019 ], [ -122.440528212527582, 37.808360637280757 ], [ -122.440504418161254, 37.808377510253422 ], [ -122.440482353473598, 37.808394354762264 ], [ -122.440462037446096, 37.808411857223902 ], [ -122.440440008975642, 37.808430074859068 ], [ -122.440419728804599, 37.808448949904253 ], [ -122.440401196955307, 37.808468483183979 ], [ -122.440382683383717, 37.808488702887828 ], [ -122.440369270902693, 37.808505405024498 ], [ -122.440221248842576, 37.808670595014306 ], [ -122.440123020723803, 37.808753931536479 ], [ -122.440031607015868, 37.808833035512706 ], [ -122.439928060968157, 37.808779113775664 ], [ -122.440270312303127, 37.808229595265985 ], [ -122.440282155842453, 37.808219099502388 ], [ -122.440294017657806, 37.80820928989008 ], [ -122.440307609508267, 37.808199452089056 ], [ -122.440319488926107, 37.808190329461823 ], [ -122.440334864961784, 37.808182522213436 ], [ -122.440348510624844, 37.808174743706033 ], [ -122.440379298231178, 37.808160502620083 ], [ -122.440394728431826, 37.80815475493111 ], [ -122.440410176225527, 37.808149693678615 ], [ -122.440427371995767, 37.808145290667582 ], [ -122.440444586383592, 37.808141573526278 ], [ -122.440470613795014, 37.808143892481645 ], [ -122.440632371579539, 37.808106894262245 ], [ -122.440777543613365, 37.808097638147814 ], [ -122.441785658321223, 37.807988336182923 ], [ -122.441808099289275, 37.807985906519384 ], [ -122.441799274649981, 37.807913258896662 ], [ -122.441490202960892, 37.807943755875684 ], [ -122.441489843938655, 37.807930027497129 ], [ -122.441472521937172, 37.807929625920565 ], [ -122.441480832705722, 37.807916441000579 ], [ -122.441399010156047, 37.807832633902123 ], [ -122.441414331805831, 37.807822767220159 ], [ -122.441512177188741, 37.807923479293905 ], [ -122.44162439956051, 37.807912017357232 ], [ -122.441545678197272, 37.807814424464247 ], [ -122.441557557740268, 37.807805301431408 ], [ -122.441658935146762, 37.807908701878773 ], [ -122.441779792066384, 37.807896411186228 ], [ -122.441788084829597, 37.807882540086432 ], [ -122.441704477043643, 37.807796702127824 ], [ -122.441718086585212, 37.807787550596132 ], [ -122.44181950044613, 37.807892323765437 ], [ -122.441935183814792, 37.807880804821842 ], [ -122.441943476554428, 37.807866933985672 ], [ -122.441859851343693, 37.807780409692931 ], [ -122.441873460855945, 37.807771257868716 ], [ -122.441976640855827, 37.807877375557908 ], [ -122.441977107703579, 37.807895222530654 ], [ -122.441816542778795, 37.807911600852826 ], [ -122.441823637077619, 37.807984277513498 ], [ -122.442320834639688, 37.807932139640414 ], [ -122.442377595612399, 37.807918156721222 ], [ -122.442423345751081, 37.807880319904761 ], [ -122.442454552098894, 37.807815940203007 ], [ -122.442446930178193, 37.807789283331502 ], [ -122.442372794146465, 37.807800805256427 ], [ -122.442345413582302, 37.807812930576347 ], [ -122.442346006240967, 37.807835582850217 ], [ -122.442033707111619, 37.807875062158132 ], [ -122.442009243703154, 37.807733999234173 ], [ -122.442027954502791, 37.807721329750571 ], [ -122.442048400903616, 37.807841170516582 ], [ -122.442059070073554, 37.807851982482966 ], [ -122.442207469058346, 37.807833743991878 ], [ -122.442217473805144, 37.807819158213746 ], [ -122.442189585584913, 37.807679524627673 ], [ -122.44220852946296, 37.807675779293724 ], [ -122.442236490235743, 37.807818158319698 ], [ -122.442248872177956, 37.807828255059988 ], [ -122.442314446214397, 37.807820307862364 ], [ -122.442321008509211, 37.807806465496753 ], [ -122.442293084181387, 37.807665459069689 ], [ -122.442311884371406, 37.807656221984004 ], [ -122.442337612108403, 37.807779409372287 ], [ -122.442355041151117, 37.807783929703042 ], [ -122.442395115206907, 37.807727644711157 ], [ -122.442384613878218, 37.807657084644539 ], [ -122.44241012033585, 37.80763949635341 ], [ -122.442685954576561, 37.807595809313327 ], [ -122.442711892175168, 37.807793159839584 ], [ -122.442714242657956, 37.807793886686525 ], [ -122.442762503926971, 37.807808807618663 ], [ -122.442779771325021, 37.807807149719757 ], [ -122.442902339949939, 37.807794142945916 ], [ -122.442998755417392, 37.807774012900218 ], [ -122.44305537242154, 37.807754538469467 ], [ -122.44312779660163, 37.807743731320251 ], [ -122.443201717191158, 37.807723971451296 ], [ -122.443260064122327, 37.807704468417526 ], [ -122.443291085252142, 37.807699150180341 ], [ -122.443284905918816, 37.807661481932094 ], [ -122.443264195467847, 37.807663883640146 ], [ -122.443274020298077, 37.807642433173122 ], [ -122.443270056810988, 37.807623269807593 ], [ -122.44314383017317, 37.807628783225987 ], [ -122.443254016387542, 37.807605679164965 ], [ -122.44326198542305, 37.807579452177009 ], [ -122.443135758859114, 37.807584965586791 ], [ -122.443242483942598, 37.807561918560637 ], [ -122.443256021380762, 37.807550021121365 ], [ -122.443252111820613, 37.807532917601364 ], [ -122.443237999416624, 37.807522848927505 ], [ -122.443246112189684, 37.807502113399792 ], [ -122.443244040453081, 37.807489099968812 ], [ -122.443229963993403, 37.807480404158795 ], [ -122.443238040829058, 37.80745829576658 ], [ -122.443234130578546, 37.807441191982505 ], [ -122.443218162072228, 37.807426347064215 ], [ -122.443264702406339, 37.807418712940589 ], [ -122.443256517776859, 37.807436702740098 ], [ -122.443274647533997, 37.807467993526231 ], [ -122.44326455321054, 37.80747914750733 ], [ -122.443284610988869, 37.807517960537304 ], [ -122.443274498692247, 37.807528428086727 ], [ -122.443278390296598, 37.807544845448142 ], [ -122.443294466994871, 37.807563808946817 ], [ -122.443284389944367, 37.807575649647809 ], [ -122.443286551537625, 37.807592095514579 ], [ -122.443302628241014, 37.807611058737429 ], [ -122.443292551178217, 37.80762289916445 ], [ -122.443296353650368, 37.807635884626045 ], [ -122.443302173270908, 37.807659823956676 ], [ -122.443308298708217, 37.807695432906783 ], [ -122.443434058250361, 37.807672072344801 ], [ -122.443672727711146, 37.807597406163168 ], [ -122.443654441112585, 37.80749401124762 ], [ -122.443659326683914, 37.80748225662078 ], [ -122.443872884696731, 37.807440280106206 ], [ -122.443843293810986, 37.807367974319583 ], [ -122.44370731452436, 37.807397684591926 ], [ -122.443671444290359, 37.807416130974829 ], [ -122.443653888762242, 37.807406805822907 ], [ -122.443615857187666, 37.807408806048031 ], [ -122.443601726794256, 37.807398051259632 ], [ -122.443646374280576, 37.807384267621238 ], [ -122.443657912040536, 37.807362102160489 ], [ -122.443677395248955, 37.807378949282132 ], [ -122.443708397548889, 37.807372944513865 ], [ -122.443719917316642, 37.807350092614648 ], [ -122.443739400535989, 37.807366939726066 ], [ -122.443768690788104, 37.807361649886793 ], [ -122.443780246134452, 37.8073401708521 ], [ -122.443799711046125, 37.807356331526904 ], [ -122.443829001635834, 37.807351041666962 ], [ -122.443838790315425, 37.807328218286891 ], [ -122.443858291875273, 37.807345751805421 ], [ -122.443944431867095, 37.807329910704055 ], [ -122.443955915261199, 37.807305685922557 ], [ -122.44397716482635, 37.807323877338213 ], [ -122.444023687043469, 37.8073155564826 ], [ -122.444033511615373, 37.807294106225484 ], [ -122.444052976916183, 37.807310266852966 ], [ -122.444104672197867, 37.807301173690028 ], [ -122.444114316981555, 37.807272858828142 ], [ -122.444139117510247, 37.80729442532332 ], [ -122.444173580792466, 37.807288363378881 ], [ -122.444194201234893, 37.80728252962394 ], [ -122.444071355206816, 37.80715270277112 ], [ -122.444216516082363, 37.807275294750141 ], [ -122.444262912050363, 37.807262168504906 ], [ -122.444272682607831, 37.807238658656139 ], [ -122.444290381984246, 37.807253474900222 ], [ -122.444329892128806, 37.807241835878372 ], [ -122.444341267517572, 37.807213492465038 ], [ -122.444362535128633, 37.807232370243902 ], [ -122.44440375797123, 37.807220016231902 ], [ -122.444415151652876, 37.807192359237938 ], [ -122.444436401305339, 37.807210550845831 ], [ -122.444546334776021, 37.807177835248929 ], [ -122.444557764011307, 37.807151551111282 ], [ -122.444577265002437, 37.807169084522954 ], [ -122.444645975607855, 37.807148723180354 ], [ -122.444656807573693, 37.807165712792234 ], [ -122.444442095756031, 37.807229685090327 ], [ -122.444483781319875, 37.807301104324431 ], [ -122.444798026960797, 37.807203901149613 ], [ -122.445256739502199, 37.807070664930905 ], [ -122.445225848727588, 37.807014862399406 ], [ -122.445091259282876, 37.807031503517287 ], [ -122.445058382323012, 37.807032045740513 ], [ -122.44505631062799, 37.807019032334502 ], [ -122.445158131368714, 37.807007052095038 ], [ -122.44517833798561, 37.806985429952121 ], [ -122.445116858617496, 37.806951420767781 ], [ -122.445030629048986, 37.806963830570979 ], [ -122.445058875964975, 37.806918727340673 ], [ -122.445006173970214, 37.806889380441703 ], [ -122.444888888156058, 37.806905735960221 ], [ -122.444874654156408, 37.80682493696483 ], [ -122.444919463246819, 37.806817330453363 ], [ -122.445007311205075, 37.806866699909307 ], [ -122.444974402625263, 37.806799942930326 ], [ -122.444993292526533, 37.806794137571423 ], [ -122.445038942963123, 37.806884719639513 ], [ -122.445121510119179, 37.806930742460146 ], [ -122.445046609432765, 37.806780897144854 ], [ -122.445065498977499, 37.806775091780075 ], [ -122.445153141586133, 37.806948762165227 ], [ -122.44523217658535, 37.806992095976476 ], [ -122.44535586222473, 37.80695571941591 ], [ -122.445247620593648, 37.806722643522114 ], [ -122.445266510453877, 37.806716838119371 ], [ -122.445374751789728, 37.806949914001784 ], [ -122.445469219634987, 37.806921573283674 ], [ -122.445352433919155, 37.8066927587953 ], [ -122.445373036116507, 37.806686238401404 ], [ -122.44548810952854, 37.806915767845673 ], [ -122.445561992695104, 37.80689463390474 ], [ -122.445445188748025, 37.806665133074851 ], [ -122.445464060244248, 37.8066586412139 ], [ -122.445580882228484, 37.806888828457545 ], [ -122.44570454953481, 37.806851765098479 ], [ -122.445651671462073, 37.806749628119896 ], [ -122.44565282578796, 37.806727633749716 ], [ -122.445895754405569, 37.806815647477016 ], [ -122.445736019894767, 37.806863607021306 ], [ -122.445754222526631, 37.806897643432812 ], [ -122.446384760166481, 37.806715556411739 ], [ -122.446258463322081, 37.806718327435846 ], [ -122.446193213892712, 37.806738632616792 ], [ -122.446170395914976, 37.806726648309962 ], [ -122.445981443875837, 37.806782644077451 ], [ -122.445970540045622, 37.80676290912637 ], [ -122.445598235532685, 37.806626211997774 ], [ -122.445606509444289, 37.806611653919497 ], [ -122.446001524256076, 37.806756217316881 ], [ -122.446149253941641, 37.806712575605459 ], [ -122.445708764584751, 37.806550221539489 ], [ -122.445717038134546, 37.806535664008109 ], [ -122.446176741453044, 37.806704568267236 ], [ -122.446283248720263, 37.80667328102048 ], [ -122.446005194935296, 37.806500006546784 ], [ -122.446020461726192, 37.80648808024214 ], [ -122.446305581169554, 37.806666731908173 ], [ -122.446420668040176, 37.806632556303882 ], [ -122.446151409366294, 37.806464630848126 ], [ -122.446166694812902, 37.806453390945222 ], [ -122.446443000465095, 37.806626007165498 ], [ -122.446554662537906, 37.806593261684583 ], [ -122.446391023698155, 37.806492266360543 ], [ -122.446406290771549, 37.806480340000242 ], [ -122.446524184932926, 37.806553247425605 ], [ -122.446620237835958, 37.806519385773647 ], [ -122.446642693746213, 37.806583567659246 ], [ -122.44670978090322, 37.806567352265269 ], [ -122.446939773843297, 37.806492135834091 ], [ -122.446948929215651, 37.806511213110113 ], [ -122.446720738906919, 37.806589146719396 ], [ -122.446733553252031, 37.806615717634571 ], [ -122.446996260681743, 37.80653378052115 ], [ -122.44699045975274, 37.806444601492437 ], [ -122.446974562378131, 37.806432503088267 ], [ -122.446987792972394, 37.806408935599343 ], [ -122.446983774594216, 37.806387713332704 ], [ -122.44696966191627, 37.806377645652319 ], [ -122.446979503500458, 37.806356881028954 ], [ -122.446973448766144, 37.806324017983009 ], [ -122.446942374816217, 37.806327277888172 ], [ -122.44695713738291, 37.806296131639499 ], [ -122.446941332573715, 37.806221538794638 ], [ -122.446922047288439, 37.806212242955326 ], [ -122.446935223870369, 37.806186616724325 ], [ -122.446919473110199, 37.806114083171188 ], [ -122.446903683817155, 37.806106103074534 ], [ -122.446913508081977, 37.806084652286692 ], [ -122.446909453048207, 37.80606205716353 ], [ -122.446700318081568, 37.806074437190453 ], [ -122.446888239127603, 37.80604523913599 ], [ -122.446903488381423, 37.806032626547122 ], [ -122.446899451700631, 37.806010717849745 ], [ -122.446881914446337, 37.806002079602202 ], [ -122.446893486335398, 37.805981286694831 ], [ -122.446879430339621, 37.805907352248376 ], [ -122.446670313096035, 37.805920418116813 ], [ -122.446859964791457, 37.805891192083081 ], [ -122.446873519346127, 37.805879980657039 ], [ -122.446859427027746, 37.80580467279912 ], [ -122.446845404479788, 37.805798037263322 ], [ -122.446855228367411, 37.805776586210264 ], [ -122.446849425403357, 37.805753333484326 ], [ -122.446649086514796, 37.805771061515294 ], [ -122.446833420536592, 37.805737116186556 ], [ -122.446845280397781, 37.805727305922368 ], [ -122.446841244096817, 37.805705397216052 ], [ -122.446823724582785, 37.805697445671754 ], [ -122.446835297139998, 37.805676653032066 ], [ -122.446831332492664, 37.805657489784885 ], [ -122.446817327967949, 37.805651540403126 ], [ -122.446825403536536, 37.805629431757723 ], [ -122.446805830072663, 37.805609152989824 ], [ -122.446817348267402, 37.805586300786253 ], [ -122.446809113007006, 37.805536305492353 ], [ -122.446789863569947, 37.805528382500277 ], [ -122.446803112068949, 37.805505501734793 ], [ -122.446787107265692, 37.805489284429996 ], [ -122.446700807332093, 37.805498949734627 ], [ -122.446698645389645, 37.80548250391827 ], [ -122.446795308825045, 37.805471980811141 ], [ -122.446771068810406, 37.805405768207393 ], [ -122.446462225224153, 37.805444515694951 ], [ -122.445989505497494, 37.805505194954378 ], [ -122.446003707846955, 37.805518695189633 ], [ -122.4460087518259, 37.805579044127001 ], [ -122.446547025898894, 37.805509728799308 ], [ -122.446550972467278, 37.805528205624398 ], [ -122.446518204506802, 37.805532866567553 ], [ -122.446489185128556, 37.80554845357441 ], [ -122.446462996481614, 37.80553995860523 ], [ -122.446437419711515, 37.805554801776253 ], [ -122.446402597499727, 37.805547136014376 ], [ -122.446377002372941, 37.805561292745764 ], [ -122.446359483641928, 37.805553341395452 ], [ -122.446335312891549, 37.805555800213412 ], [ -122.446311412770896, 37.805568555772986 ], [ -122.446295642000578, 37.805561262020625 ], [ -122.44627666253902, 37.805563635428271 ], [ -122.446249319434344, 37.805577134798497 ], [ -122.446231800006771, 37.805569182891531 ], [ -122.446148996869667, 37.805580163541499 ], [ -122.446123402382483, 37.805594320480907 ], [ -122.446104135009989, 37.805585710944754 ], [ -122.44608171290129, 37.805588827858948 ], [ -122.44605783038071, 37.805602270079603 ], [ -122.446038580653479, 37.805594346696139 ], [ -122.446017870868147, 37.805596748888597 ], [ -122.445994006657656, 37.805610876973709 ], [ -122.445976469264281, 37.80560223887116 ], [ -122.445950586862267, 37.805605412856671 ], [ -122.445928452266116, 37.805619512663846 ], [ -122.445909185255772, 37.805610903090184 ], [ -122.445885032816534, 37.805614048516972 ], [ -122.445861132260902, 37.80562680426543 ], [ -122.445845361169205, 37.805619510184115 ], [ -122.445814305801534, 37.805623456219109 ], [ -122.44579215352951, 37.805636869562669 ], [ -122.445772886191605, 37.805628260247033 ], [ -122.445750464048956, 37.80563137682369 ], [ -122.445724833141924, 37.805644160817579 ], [ -122.445709062413187, 37.805636866986909 ], [ -122.445683179641605, 37.805640040919442 ], [ -122.445655872372569, 37.805654912741964 ], [ -122.445638335008098, 37.805646274589208 ], [ -122.445605549302542, 37.805650249115246 ], [ -122.445581648680047, 37.80566300453242 ], [ -122.445565859972788, 37.805655024250306 ], [ -122.445531361592955, 37.805659714013281 ], [ -122.445505730631226, 37.805672497684945 ], [ -122.445489959918007, 37.805665203825008 ], [ -122.445462346810999, 37.80566840625292 ], [ -122.445436715841595, 37.805681190184124 ], [ -122.445420945133293, 37.805673896314971 ], [ -122.445391619690682, 37.8056778137015 ], [ -122.445362527733508, 37.805690654981625 ], [ -122.445346757369364, 37.8056833608223 ], [ -122.44531225895534, 37.805688050246587 ], [ -122.445290052615164, 37.805699404198599 ], [ -122.445276030220143, 37.805692768201546 ], [ -122.445243244128591, 37.805696742632556 ], [ -122.445217576794818, 37.805708153657022 ], [ -122.445203554404628, 37.805701517651372 ], [ -122.445170786636353, 37.80570617848889 ], [ -122.445148507984058, 37.805714786690388 ], [ -122.445105232410981, 37.805714813715646 ], [ -122.445083008046993, 37.805725481196227 ], [ -122.44507071598305, 37.80571881663689 ], [ -122.445037947513853, 37.80572347772349 ], [ -122.445017471439073, 37.805734803086857 ], [ -122.445001701099429, 37.805727508881461 ], [ -122.444908551660831, 37.805740032744836 ], [ -122.44488456097811, 37.805749355858453 ], [ -122.444846440036883, 37.805747924599146 ], [ -122.444825945937126, 37.805758563222234 ], [ -122.444811923572402, 37.805751927170057 ], [ -122.44478259772076, 37.805755844410804 ], [ -122.44476037365142, 37.805766512099389 ], [ -122.444713600749751, 37.805765222919185 ], [ -122.444691394641026, 37.805776576752621 ], [ -122.444677372284929, 37.805769940684463 ], [ -122.444653201761611, 37.805772399426502 ], [ -122.444630958989393, 37.805782380395051 ], [ -122.444585917098436, 37.805781062896116 ], [ -122.444563710619391, 37.805792416711171 ], [ -122.444549688278883, 37.80578578090244 ], [ -122.444518632419573, 37.805789726327305 ], [ -122.444494659650545, 37.805799735794025 ], [ -122.444451329400607, 37.805797703293351 ], [ -122.444429141227388, 37.805809743784408 ], [ -122.444413370583575, 37.805802449506146 ], [ -122.444390948345657, 37.805805566373394 ], [ -122.44436699318581, 37.805816262252314 ], [ -122.444352970844008, 37.805809625871085 ], [ -122.444327105931421, 37.805813485938437 ], [ -122.44430666567736, 37.805826184043205 ], [ -122.444289129128734, 37.805817545953296 ], [ -122.444266706866628, 37.805820662247768 ], [ -122.444242769660434, 37.805832044533943 ], [ -122.444228747333952, 37.805825408412545 ], [ -122.444206307444119, 37.80582783853189 ], [ -122.444182406178044, 37.805840593670816 ], [ -122.44416661758342, 37.805832613201659 ], [ -122.44414592563939, 37.805835701223295 ], [ -122.444121953151352, 37.805845710608445 ], [ -122.444025145055349, 37.805850740063669 ], [ -122.444001189835404, 37.805861436142784 ], [ -122.443959572249256, 37.805858688226643 ], [ -122.443935671622995, 37.805871443304085 ], [ -122.443919900675667, 37.805864149240215 ], [ -122.443902651728223, 37.805866493739174 ], [ -122.443880499045548, 37.805879906997674 ], [ -122.443864710121758, 37.805871926219289 ], [ -122.44378192426916, 37.805883591639486 ], [ -122.443756257338379, 37.805895002334175 ], [ -122.443714639749658, 37.805892254606199 ], [ -122.443692432758084, 37.80590360826271 ], [ -122.4436766621739, 37.805896314160641 ], [ -122.443654240222742, 37.805899430882093 ], [ -122.443630320868039, 37.805911499476395 ], [ -122.443614550281069, 37.80590420509148 ], [ -122.44359211035453, 37.805906635368508 ], [ -122.443568208950381, 37.805919390108215 ], [ -122.443552420405013, 37.80591140955697 ], [ -122.443535171434974, 37.805913754002177 ], [ -122.443511270025937, 37.805926509004905 ], [ -122.443495481838426, 37.805918528714912 ], [ -122.443473041543214, 37.805920958425858 ], [ -122.443450852475209, 37.80593299846943 ], [ -122.443435081915695, 37.805925704609677 ], [ -122.443407468616002, 37.805928906281792 ], [ -122.443388776471963, 37.805942262421105 ], [ -122.443369509665189, 37.805933652158522 ], [ -122.443347069022408, 37.805936082125754 ], [ -122.443328395172557, 37.80595012440785 ], [ -122.443309128031871, 37.805941514415672 ], [ -122.443291878362203, 37.805943859111288 ], [ -122.443267959626397, 37.805955927620595 ], [ -122.443252189065603, 37.805948633187285 ], [ -122.443233209414942, 37.805951006379615 ], [ -122.443207595577817, 37.805964475989526 ], [ -122.443174557723637, 37.805958839788218 ], [ -122.443148908639841, 37.80597093678324 ], [ -122.443134868425886, 37.805963614373887 ], [ -122.443058967715231, 37.805973792109128 ], [ -122.443036832460166, 37.805987891372702 ], [ -122.443017547724423, 37.805978594894604 ], [ -122.442981318355606, 37.805983312150161 ], [ -122.442948532359026, 37.805987285937427 ], [ -122.442926379114695, 37.806000698747546 ], [ -122.44290884267825, 37.805992060178127 ], [ -122.442839827294776, 37.806000751431881 ], [ -122.442815943694384, 37.806014192451634 ], [ -122.442798425230706, 37.806006240298515 ], [ -122.442734582834518, 37.806014159544731 ], [ -122.442707256867862, 37.806028343976273 ], [ -122.44268971976544, 37.806019705660304 ], [ -122.442636241331058, 37.806026767128834 ], [ -122.442610646012994, 37.806040923030253 ], [ -122.442591378939156, 37.80603231319558 ], [ -122.442551688858117, 37.806037087047187 ], [ -122.442547725650329, 37.806017923926198 ], [ -122.443029120691975, 37.805957802366279 ], [ -122.443387985849299, 37.805912059110995 ], [ -122.443753825765924, 37.805868259987832 ], [ -122.443769345089194, 37.805865944017846 ], [ -122.443957339015583, 37.805839496905513 ], [ -122.444492227815289, 37.805772993462419 ], [ -122.444668235229059, 37.805751549942215 ], [ -122.445284142224111, 37.805672032526566 ], [ -122.445279062855903, 37.805610310694497 ], [ -122.44527006920417, 37.805597411188494 ], [ -122.444483346869873, 37.805698286438428 ], [ -122.443744945559246, 37.805793553184138 ], [ -122.443018600699929, 37.805886555905765 ], [ -122.442516549650193, 37.805951138305055 ], [ -122.442427410705633, 37.806050808392641 ], [ -122.442522464016989, 37.806507977467341 ], [ -122.442586642075881, 37.806579026869471 ], [ -122.443131937777821, 37.806513045572309 ], [ -122.443499493172467, 37.806468532301039 ], [ -122.443667282141945, 37.806463706682081 ], [ -122.443846679856065, 37.806439461357343 ], [ -122.443959061743129, 37.806434175357609 ], [ -122.443938050605254, 37.806358981524156 ], [ -122.443116244562106, 37.806442570813587 ], [ -122.442613848569025, 37.80649411140103 ], [ -122.442611615303633, 37.806474919513256 ], [ -122.442654765933469, 37.806470088368528 ], [ -122.442661399886077, 37.806458991436592 ], [ -122.442687570467214, 37.806466801090252 ], [ -122.442708298579689, 37.80646508646474 ], [ -122.442716537115061, 37.806449155723413 ], [ -122.442746276492144, 37.806461026947929 ], [ -122.442770051771902, 37.806443467084335 ], [ -122.44279979080919, 37.80645533830107 ], [ -122.442874033560784, 37.806447934694987 ], [ -122.442882218173921, 37.806429944918698 ], [ -122.442912011462568, 37.806443875399388 ], [ -122.442927548550728, 37.806442245978758 ], [ -122.442937481103471, 37.806424914130673 ], [ -122.442965543726487, 37.806438873384522 ], [ -122.442990995725921, 37.806419225391323 ], [ -122.443019058349662, 37.806433184357886 ], [ -122.443039786445084, 37.806431469674095 ], [ -122.443047971009094, 37.806413479611678 ], [ -122.443077764322211, 37.806427410050546 ], [ -122.443098474448703, 37.80642500892381 ], [ -122.443108388985991, 37.806406990354105 ], [ -122.443136451627183, 37.806420949292765 ], [ -122.443157179716479, 37.806419234588326 ], [ -122.443165418150457, 37.806403303815522 ], [ -122.443193426900422, 37.806415203442874 ], [ -122.443215885660081, 37.806413459937652 ], [ -122.443222483596756, 37.806400990383416 ], [ -122.443248689797912, 37.806410172509004 ], [ -122.443329817859791, 37.806401281706691 ], [ -122.443338074230084, 37.806386037628911 ], [ -122.443366083001223, 37.806397937215287 ], [ -122.443447229004846, 37.806389732764778 ], [ -122.443455467380517, 37.806373802246185 ], [ -122.443480033821288, 37.806386445534933 ], [ -122.443505916940026, 37.806383271811711 ], [ -122.443512496848314, 37.806370115534087 ], [ -122.443538721058857, 37.806379984576957 ], [ -122.443562892155768, 37.806377525783311 ], [ -122.443569490023762, 37.806365055935018 ], [ -122.44359742694175, 37.80637420973634 ], [ -122.443676842221919, 37.806366033924192 ], [ -122.443672164594389, 37.806253487231395 ], [ -122.443695462542081, 37.806349932284753 ], [ -122.443707916670277, 37.806362774599044 ], [ -122.44379596596373, 37.806353769679554 ], [ -122.443802527838344, 37.806339926678575 ], [ -122.443830500721077, 37.806350453289745 ], [ -122.443861574478419, 37.806347194484687 ], [ -122.443868190266627, 37.806335411052103 ], [ -122.443896109229783, 37.80634387807568 ], [ -122.443922010642723, 37.806341390962501 ], [ -122.443913871646629, 37.806228901600704 ], [ -122.443940541034891, 37.806321857121844 ], [ -122.443956527422003, 37.806337388377891 ], [ -122.44398415881686, 37.80633487273537 ], [ -122.444004419522869, 37.806315310362876 ], [ -122.444018675589732, 37.806330870132562 ], [ -122.444044576647997, 37.806328382998174 ], [ -122.444051174437902, 37.806315913397398 ], [ -122.444077344761538, 37.806323722474062 ], [ -122.444106688857119, 37.806320492116114 ], [ -122.444113268646205, 37.806307335530214 ], [ -122.444137744599871, 37.806316546256639 ], [ -122.444163610043603, 37.806312686225482 ], [ -122.444171919814423, 37.806299501392182 ], [ -122.444198126803698, 37.806308683844726 ], [ -122.44422572221977, 37.806304795006142 ], [ -122.444232302000771, 37.806291638962733 ], [ -122.444258508634277, 37.806300820858432 ], [ -122.444287834382735, 37.806296903754081 ], [ -122.44429446807581, 37.806285806729939 ], [ -122.444320620790435, 37.806292929589091 ], [ -122.444410328338193, 37.806281149679826 ], [ -122.444398674018615, 37.806166658108886 ], [ -122.444430732743257, 37.806267078693303 ], [ -122.444443114393508, 37.806277175761053 ], [ -122.44453626493052, 37.806264652260793 ], [ -122.444546322932027, 37.806252125028941 ], [ -122.444572511964111, 37.80626062069139 ], [ -122.44466566211247, 37.806248097094617 ], [ -122.444654277108668, 37.8061439020343 ], [ -122.444684317803762, 37.806233368169231 ], [ -122.444698448132328, 37.806244122830272 ], [ -122.444729504511017, 37.806240177078124 ], [ -122.444737832507585, 37.806227678906012 ], [ -122.444765733548039, 37.806235459291536 ], [ -122.444782982907213, 37.806233114935374 ], [ -122.44479131087958, 37.806220616210318 ], [ -122.444819211930195, 37.806228396857783 ], [ -122.444886496978683, 37.806219733530369 ], [ -122.44488089641429, 37.806138105148783 ], [ -122.444906901269448, 37.806205662186763 ], [ -122.444919282967007, 37.806215758930051 ], [ -122.444986568338436, 37.806207095539854 ], [ -122.444994931901647, 37.806195969945342 ], [ -122.445021067006977, 37.806202405936702 ], [ -122.445093525002505, 37.8061929701732 ], [ -122.445087942204026, 37.80611202850794 ], [ -122.445113929253864, 37.806178899068257 ], [ -122.445128041656801, 37.806188967520207 ], [ -122.445202229600525, 37.806179502882479 ], [ -122.445210557849578, 37.806167004396592 ], [ -122.445236728249824, 37.806174813490792 ], [ -122.44525743822885, 37.806172411710314 ], [ -122.445265766467799, 37.80615991322049 ], [ -122.445267302625481, 37.806086407881679 ], [ -122.445285033545986, 37.806168522898403 ], [ -122.445310916864869, 37.806165349047845 ], [ -122.445305315838027, 37.806083720685585 ], [ -122.445331267107818, 37.80614921860834 ], [ -122.445347145482373, 37.806160631088311 ], [ -122.445366125472304, 37.806158257824791 ], [ -122.445374453006437, 37.806145759613244 ], [ -122.44540062410141, 37.806153568385149 ], [ -122.445424776743849, 37.806150423332426 ], [ -122.445433086611402, 37.80613723812958 ], [ -122.445434730189021, 37.806067851662334 ], [ -122.445459293346119, 37.806146420033315 ], [ -122.445479985322095, 37.806143331781477 ], [ -122.445489989537165, 37.806128745440887 ], [ -122.445516214271365, 37.806138614038851 ], [ -122.445543827543716, 37.806135411324078 ], [ -122.445560788683153, 37.80612208366891 ], [ -122.445567131287589, 37.806165929693421 ], [ -122.445546061556797, 37.806154603157502 ], [ -122.445523639245678, 37.806157719690731 ], [ -122.445501522738013, 37.806172505842895 ], [ -122.445489122634442, 37.806161722734075 ], [ -122.44546670032598, 37.806164839531021 ], [ -122.445442817508763, 37.806178281625698 ], [ -122.445432201695837, 37.806169528989997 ], [ -122.445352822460961, 37.806179079403755 ], [ -122.445327226916191, 37.806193235905667 ], [ -122.445316593481564, 37.806183797096139 ], [ -122.445244135177305, 37.806193233002396 ], [ -122.44522027063509, 37.806207361203953 ], [ -122.445207906544567, 37.80619795120483 ], [ -122.445188926532239, 37.806200324168309 ], [ -122.445161708883106, 37.806218628036419 ], [ -122.445135448551525, 37.806207386764015 ], [ -122.445111565653477, 37.806220828516935 ], [ -122.44509921920563, 37.806212104669896 ], [ -122.445030203866864, 37.80622079693034 ], [ -122.445008123555382, 37.806236955848796 ], [ -122.444978438202398, 37.806227144485362 ], [ -122.444954644838973, 37.806244018373903 ], [ -122.444924959836314, 37.806234206991327 ], [ -122.444902861169254, 37.806249679463384 ], [ -122.444888730810021, 37.806238924826829 ], [ -122.444823175735436, 37.806247559901692 ], [ -122.444801113352611, 37.806264405213646 ], [ -122.444785216712205, 37.806252306233745 ], [ -122.444723104639422, 37.806260197747797 ], [ -122.444699383130299, 37.80627981731422 ], [ -122.444681702577071, 37.806265687549761 ], [ -122.444619590489268, 37.806273579283847 ], [ -122.444597491739671, 37.806289051423988 ], [ -122.444583361417187, 37.806278296750953 ], [ -122.444519536610485, 37.806286903400981 ], [ -122.444493959540637, 37.806301746142793 ], [ -122.44447984720945, 37.80629167788976 ], [ -122.444386678651156, 37.806303514912976 ], [ -122.444361209083098, 37.806322476775328 ], [ -122.444343546554336, 37.806309033118175 ], [ -122.444324566500356, 37.806311406491666 ], [ -122.444297366567298, 37.806330396317819 ], [ -122.444279722039454, 37.806317639632702 ], [ -122.444255568948051, 37.806320784456545 ], [ -122.444233506414719, 37.806337629662124 ], [ -122.444217609851108, 37.806325530605875 ], [ -122.444126171547992, 37.806337339172615 ], [ -122.444102396615747, 37.806354899035341 ], [ -122.444084751416256, 37.806342142057929 ], [ -122.444034733554687, 37.806349147388161 ], [ -122.443955318332002, 37.806357323441311 ], [ -122.443976328801966, 37.806432517557667 ], [ -122.444009133253417, 37.806429229637253 ], [ -122.44401497169018, 37.80645385590833 ], [ -122.443983915176943, 37.806457801197638 ], [ -122.443991501564284, 37.806483085111559 ], [ -122.444006566508079, 37.806529534342857 ], [ -122.443998364182022, 37.80654683776438 ], [ -122.444012889909018, 37.806572694020851 ], [ -122.444137456251781, 37.806569953925113 ], [ -122.444004705900142, 37.806590683869416 ], [ -122.444008597616772, 37.806607101209622 ], [ -122.444028224510816, 37.8066294400098 ], [ -122.444014687364202, 37.806641337539759 ], [ -122.444016813135761, 37.806656410256579 ], [ -122.444032907804939, 37.806676060090197 ], [ -122.4440210291, 37.806685183643154 ], [ -122.444025100564104, 37.806708465032258 ], [ -122.444042961537718, 37.806729459206764 ], [ -122.444031118428768, 37.806739955631187 ], [ -122.444035226540592, 37.806764609873134 ], [ -122.444052799240296, 37.806774621138679 ], [ -122.444173599989711, 37.806760268693552 ], [ -122.444175761756156, 37.806776714546551 ], [ -122.443903104192728, 37.806809364848277 ], [ -122.443899212488802, 37.80679294750523 ], [ -122.443999302417467, 37.806780996791801 ], [ -122.444012857566491, 37.806769785696332 ], [ -122.443998457621589, 37.806748734467796 ], [ -122.444004821781832, 37.806727340974426 ], [ -122.443985267126379, 37.806707748443934 ], [ -122.443996768032036, 37.80668420981921 ], [ -122.443979015619519, 37.806667334220748 ], [ -122.443988858092823, 37.806646570397213 ], [ -122.443972709865449, 37.806624861254427 ], [ -122.443980822328029, 37.806604125398131 ], [ -122.443978768461875, 37.806591798410317 ], [ -122.443966422424324, 37.806583074165033 ], [ -122.443972768605505, 37.806560994240272 ], [ -122.443949501347888, 37.806531848697659 ], [ -122.443975330928197, 37.806526615843026 ], [ -122.443974234501226, 37.806484743188264 ], [ -122.443966666100792, 37.806460145980267 ], [ -122.443854499850644, 37.806473669177059 ], [ -122.443860373479154, 37.806499667782823 ], [ -122.443717402901086, 37.806526746415607 ], [ -122.443667420469765, 37.806535124185942 ], [ -122.443645087827377, 37.806541672798915 ], [ -122.443622719585392, 37.806546848536961 ], [ -122.443600333023568, 37.806551337843935 ], [ -122.443577910179286, 37.806554454561891 ], [ -122.443581820462299, 37.80657155833741 ], [ -122.443586556699174, 37.806620238019541 ], [ -122.443637961503612, 37.806864552713115 ], [ -122.443633273319165, 37.806883858652405 ], [ -122.443607138425932, 37.806877421799527 ], [ -122.443529794028962, 37.806898611546323 ], [ -122.443526675114754, 37.806911710787858 ], [ -122.443502306167488, 37.806906618541966 ], [ -122.443424944087113, 37.80692712178169 ], [ -122.443421824461069, 37.806940221031809 ], [ -122.443397438234925, 37.806934442320348 ], [ -122.443318380993759, 37.806956346879609 ], [ -122.443315262039832, 37.806969446115438 ], [ -122.443289162740911, 37.806964382337512 ], [ -122.443211818508658, 37.806985571869724 ], [ -122.443208734784008, 37.807000044253662 ], [ -122.443180869538779, 37.806993635816845 ], [ -122.443103524899072, 37.807014825283645 ], [ -122.443102154219687, 37.807028582437368 ], [ -122.443076036948625, 37.80702283217979 ], [ -122.442998692594642, 37.807044021572032 ], [ -122.442995572888506, 37.807057120810583 ], [ -122.442969456307765, 37.807051370518039 ], [ -122.442895554290288, 37.807071816676462 ], [ -122.442876807520932, 37.807083113165248 ], [ -122.442860372447001, 37.807050420945309 ], [ -122.44288643546534, 37.807054111684081 ], [ -122.442950027240173, 37.807036582576075 ], [ -122.442956535452808, 37.807020680875418 ], [ -122.44298955579778, 37.807025630704103 ], [ -122.443044549671924, 37.807010303103709 ], [ -122.443051093786181, 37.806995773988241 ], [ -122.443080653430101, 37.80700078080757 ], [ -122.443137377283094, 37.806985425210136 ], [ -122.443143903403268, 37.806970209382371 ], [ -122.443176924084369, 37.806975159152948 ], [ -122.443230187542511, 37.806959860250316 ], [ -122.443236731623188, 37.806945331399028 ], [ -122.443266291259548, 37.806950338171859 ], [ -122.443323015021249, 37.806934981935846 ], [ -122.443327829074263, 37.806920481311195 ], [ -122.443311249747254, 37.806882297698685 ], [ -122.443357388360823, 37.806925488066938 ], [ -122.443415825168074, 37.806909417378883 ], [ -122.443402365072131, 37.806858134260111 ], [ -122.443446755408701, 37.806900666674323 ], [ -122.443506922515155, 37.806884567152593 ], [ -122.443513466527847, 37.806870038011155 ], [ -122.443541295807862, 37.80687507323001 ], [ -122.443611772372606, 37.806856057118701 ], [ -122.443568098366953, 37.806642517527813 ], [ -122.443490717910933, 37.80666233411602 ], [ -122.443464637369544, 37.806657956797729 ], [ -122.443447387531151, 37.806660301241159 ], [ -122.443394142301429, 37.806676286675255 ], [ -122.443369792101194, 37.80667188082289 ], [ -122.443307715462936, 37.806681144456071 ], [ -122.443302883453555, 37.806694958647995 ], [ -122.443274946458374, 37.806685805052041 ], [ -122.443204469968975, 37.806704820962679 ], [ -122.443178370770624, 37.806699757160004 ], [ -122.443107894250431, 37.806718773287464 ], [ -122.44308352539521, 37.806713680954857 ], [ -122.443013048491437, 37.806732697031315 ], [ -122.442985237265603, 37.806728348120288 ], [ -122.442950738216922, 37.806733036852982 ], [ -122.44291647270785, 37.806746649473865 ], [ -122.442888625547027, 37.806740927400313 ], [ -122.442821555362244, 37.806757827053026 ], [ -122.442793726174969, 37.806752791664266 ], [ -122.442731613479054, 37.806760682403457 ], [ -122.442721537132741, 37.806772522772178 ], [ -122.442695384049358, 37.806765399290242 ], [ -122.442678134861055, 37.806767743884308 ], [ -122.442671608648851, 37.806782959137742 ], [ -122.442640174735473, 37.806772489262421 ], [ -122.44262290758212, 37.806774147415787 ], [ -122.442611226258151, 37.806790821310969 ], [ -122.442619566601024, 37.806844935481941 ], [ -122.4425572741916, 37.806845961528367 ], [ -122.442543113877818, 37.806767907443565 ], [ -122.442812274930034, 37.80673394443496 ], [ -122.442895043918895, 37.806721593264598 ], [ -122.44288439854499, 37.806645541768312 ], [ -122.44286390392358, 37.80665618032328 ], [ -122.442620734223425, 37.806691089066426 ], [ -122.442586432743397, 37.80670332845169 ], [ -122.442569254711358, 37.806708418497294 ], [ -122.442553843632766, 37.806714852893514 ], [ -122.44253845015912, 37.806721973451488 ], [ -122.442524957636692, 37.80672882453954 ], [ -122.442523074304333, 37.806729780720396 ], [ -122.44251132146853, 37.806743708869504 ], [ -122.442504741349737, 37.806756865090371 ], [ -122.442501639536246, 37.806770651023797 ], [ -122.442501980779383, 37.80678369296961 ], [ -122.442511153361352, 37.806803457290563 ], [ -122.442513800037688, 37.806838436574978 ], [ -122.442498190669355, 37.806837320216118 ], [ -122.442500262610309, 37.806850333930662 ], [ -122.442500855308538, 37.806872986207821 ], [ -122.442513308640088, 37.806885829207545 ], [ -122.442543448720272, 37.807045340228143 ], [ -122.442550657494735, 37.807056209147177 ], [ -122.442552729104918, 37.807069222865962 ], [ -122.442549574089071, 37.807080949216051 ], [ -122.442542975993348, 37.807093419280186 ], [ -122.442532880918762, 37.80710457321085 ], [ -122.442521020253452, 37.807114382489758 ], [ -122.442507375020014, 37.80712216152461 ], [ -122.442493693848277, 37.807128567143486 ], [ -122.442476479790699, 37.807132284309965 ], [ -122.44245921255002, 37.807133942439243 ], [ -122.442443603113219, 37.807132825798654 ], [ -122.442426210144987, 37.807129678620242 ], [ -122.442401877121071, 37.807125959012424 ], [ -122.442394668361601, 37.807115090084459 ], [ -122.442382322776425, 37.807106365943092 ], [ -122.442371670941014, 37.807096240723055 ], [ -122.442357217513063, 37.80707312972298 ], [ -122.442353415933297, 37.807060144492915 ], [ -122.442352751441661, 37.807034746485243 ], [ -122.442355888527402, 37.807022333707671 ], [ -122.442327317913012, 37.80685661596673 ], [ -122.442325228043273, 37.806842915816503 ], [ -122.442319678177554, 37.80682927264953 ], [ -122.442314163892661, 37.806817002627895 ], [ -122.442303476176264, 37.806805503986638 ], [ -122.442292807121106, 37.806794692040256 ], [ -122.442278730911681, 37.806785996390175 ], [ -122.44225259583861, 37.806779559791913 ], [ -122.442263912071212, 37.806815083032639 ], [ -122.442334351220893, 37.807191623601256 ], [ -122.442574008114292, 37.807154713430769 ], [ -122.442579917970377, 37.807182085225314 ], [ -122.442316125837024, 37.807222826535309 ], [ -122.442296128149565, 37.807120146892402 ], [ -122.442249660075092, 37.807130526084627 ], [ -122.442243205590515, 37.807148487593025 ], [ -122.442218675723581, 37.80713721717698 ], [ -122.442177362768064, 37.807146137987679 ], [ -122.442169249735414, 37.807166873443258 ], [ -122.44214120495144, 37.807153600709071 ], [ -122.442110219881215, 37.807160291509724 ], [ -122.442102143088249, 37.807182399820256 ], [ -122.442074080353734, 37.807168440637511 ], [ -122.441951871381676, 37.807195175211561 ], [ -122.441943758626778, 37.807215910645752 ], [ -122.441915713871779, 37.807202638132658 ], [ -122.441829644720443, 37.807221223495034 ], [ -122.441823243975179, 37.807241243729116 ], [ -122.441796947879098, 37.807228628850183 ], [ -122.441714321769382, 37.807246470710545 ], [ -122.441706226203735, 37.807267892572305 ], [ -122.441678163511327, 37.807253933295577 ], [ -122.441590382530393, 37.807273233392451 ], [ -122.441583945818934, 37.807291881022437 ], [ -122.441559397367783, 37.80727992432282 ], [ -122.441528412884566, 37.807286614959068 ], [ -122.441522065914484, 37.807308694749302 ], [ -122.4414922725324, 37.807294763645217 ], [ -122.441459575632209, 37.807302169181312 ], [ -122.441451444085047, 37.807322218159875 ], [ -122.441425148030646, 37.807309603472838 ], [ -122.441347676557456, 37.807325986488941 ], [ -122.441341185930639, 37.807342574807244 ], [ -122.441318422046436, 37.807332648592578 ], [ -122.441240951224984, 37.807349031801699 ], [ -122.441234550317162, 37.807369052277899 ], [ -122.441208253583667, 37.807356437279445 ], [ -122.44112907030356, 37.807373535328814 ], [ -122.44112095660725, 37.807394270717083 ], [ -122.44109464263579, 37.807380969523756 ], [ -122.440999993407189, 37.807402442127575 ], [ -122.440987126791967, 37.807373811300785 ], [ -122.441006340540554, 37.807380362365826 ], [ -122.441088966969374, 37.807362521001856 ], [ -122.441071293907683, 37.807282464951484 ], [ -122.441105839449861, 37.807345761826411 ], [ -122.441121664279194, 37.807355115562864 ], [ -122.441199135479366, 37.807338732426437 ], [ -122.441181426400448, 37.807257303252058 ], [ -122.441215936141603, 37.807319227778606 ], [ -122.441235275185775, 37.807330583566994 ], [ -122.44130240044376, 37.80731574411066 ], [ -122.44131244119076, 37.80730253099884 ], [ -122.441289899930467, 37.807234916217887 ], [ -122.441336846017577, 37.807308996562313 ], [ -122.441403970896872, 37.807294157328393 ], [ -122.441389758204977, 37.807214043807704 ], [ -122.441424286396526, 37.807276654700864 ], [ -122.441440110897986, 37.807286008125857 ], [ -122.441505522979043, 37.807271883482372 ], [ -122.441489561884524, 37.807191112300579 ], [ -122.441524179900497, 37.807257155053932 ], [ -122.441538238159126, 37.807265164360558 ], [ -122.441610518456187, 37.807248866405487 ], [ -122.441598394609557, 37.807182453357271 ], [ -122.441630905705154, 37.807234109473121 ], [ -122.441643233270554, 37.80724214726019 ], [ -122.441715531475523, 37.807226535673394 ], [ -122.441722129729229, 37.807214065930424 ], [ -122.441749959016704, 37.807219101571583 ], [ -122.44181537098703, 37.807204977030693 ], [ -122.441821969214871, 37.8071925070075 ], [ -122.441804977662258, 37.807138535507519 ], [ -122.441848068147848, 37.807197571115559 ], [ -122.441911750066581, 37.807183474731303 ], [ -122.441901356658576, 37.80711703321635 ], [ -122.441942735164389, 37.807176783982825 ], [ -122.442002974305893, 37.807163431240092 ], [ -122.44201133876993, 37.807152305853435 ], [ -122.442037401781846, 37.80715599677972 ], [ -122.442094216092357, 37.807144073567486 ], [ -122.44210250836673, 37.807130202449336 ], [ -122.442130373562975, 37.807136610866159 ], [ -122.442190612977058, 37.807123257747243 ], [ -122.4421768301127, 37.807059618983033 ], [ -122.442207521070316, 37.807107871278774 ], [ -122.442221597332434, 37.80711656693682 ], [ -122.442292164942742, 37.807100983492141 ], [ -122.442243704644795, 37.806836704402386 ], [ -122.442167767011739, 37.806845508971712 ], [ -122.442147308147, 37.806857520267137 ], [ -122.442072831477645, 37.806855999790052 ], [ -122.442050696118415, 37.806870098860529 ], [ -122.442038314362932, 37.806860002097636 ], [ -122.44197618353418, 37.806867205731571 ], [ -122.44195577849186, 37.806881276017322 ], [ -122.441943396394166, 37.806871178975598 ], [ -122.441881247592036, 37.806877696126804 ], [ -122.441859148445275, 37.806893168021055 ], [ -122.44184673044974, 37.806881698103723 ], [ -122.441786329930238, 37.806888873147223 ], [ -122.441762464513715, 37.80690300092192 ], [ -122.441750082438688, 37.806892903859939 ], [ -122.441684509153674, 37.806900850470612 ], [ -122.441658930973958, 37.80691569315082 ], [ -122.441646530958224, 37.806904909645212 ], [ -122.441572305572137, 37.806912998636243 ], [ -122.441548386244634, 37.806925066794669 ], [ -122.441465311637984, 37.806925747662177 ], [ -122.441443158191802, 37.806939160185685 ], [ -122.44142908206166, 37.806930464709019 ], [ -122.44136529221457, 37.806940441967662 ], [ -122.441344958843104, 37.806957258153332 ], [ -122.441327368515545, 37.806946560051927 ], [ -122.441311849243505, 37.806948875968999 ], [ -122.441293246205632, 37.806965663663163 ], [ -122.441275637234966, 37.806954278858043 ], [ -122.44126011795251, 37.806956594493755 ], [ -122.441239730706059, 37.80697135136279 ], [ -122.441223906642946, 37.806961997904651 ], [ -122.441151465000161, 37.806972117453661 ], [ -122.441129311490656, 37.806985530192655 ], [ -122.441115235374099, 37.806976834129472 ], [ -122.441037621302598, 37.806987725743447 ], [ -122.44101719810962, 37.807001109708246 ], [ -122.441003139964337, 37.806993100613703 ], [ -122.440922064462001, 37.807004048844455 ], [ -122.440901659189493, 37.807018119222057 ], [ -122.440895696481135, 37.806988688312863 ], [ -122.441218230630383, 37.806943549393232 ], [ -122.441263058469275, 37.806936630972665 ], [ -122.441435464921327, 37.80690975751326 ], [ -122.441433016200833, 37.806882328691337 ], [ -122.441372490336036, 37.806884698487615 ], [ -122.441304935046745, 37.806883063866231 ], [ -122.441274237201611, 37.806900737372722 ], [ -122.441242947719005, 37.806895758576474 ], [ -122.44119330612007, 37.806917177241274 ], [ -122.441110393048419, 37.806924035754299 ], [ -122.441042945411667, 37.806926519579946 ], [ -122.440998117551175, 37.806933437642307 ], [ -122.440918593700744, 37.806937493327403 ], [ -122.440899792827196, 37.80694673020367 ], [ -122.440782200958282, 37.806951412279737 ], [ -122.440680218094201, 37.806957210845738 ], [ -122.44054721454367, 37.806968326842338 ], [ -122.440468121234176, 37.806988856613863 ], [ -122.440371365223044, 37.806995942367976 ], [ -122.440134737571853, 37.807016316747912 ], [ -122.43989673886324, 37.807050447763743 ], [ -122.43967267172718, 37.807087782808438 ], [ -122.439538386124013, 37.807116087220599 ], [ -122.439408914197855, 37.80712989048353 ], [ -122.439239537222377, 37.807140229675355 ], [ -122.439104802429114, 37.807151372502958 ], [ -122.438766800452754, 37.807200879974303 ], [ -122.438299128879564, 37.807256638299236 ], [ -122.437960892936687, 37.807297219553782 ], [ -122.437688625577763, 37.807344957007658 ], [ -122.437514504314919, 37.807372539848515 ], [ -122.437376577168436, 37.807394034049501 ], [ -122.437259217227975, 37.807407636246566 ], [ -122.437146815479664, 37.80741222942855 ], [ -122.437031382840118, 37.807433353744614 ], [ -122.436885215537345, 37.80747077743743 ], [ -122.436714393247598, 37.807492124635075 ], [ -122.436614801865048, 37.807523289038706 ], [ -122.436563088290782, 37.807531692199284 ], [ -122.436507376472989, 37.80751955916309 ], [ -122.436298557575597, 37.807544276277241 ], [ -122.436240083275962, 37.807558970839189 ], [ -122.436155205939471, 37.807556930640864 ], [ -122.435982097955772, 37.80755702547102 ], [ -122.435828364056036, 37.807569849863164 ], [ -122.435859235962624, 37.807691580598309 ], [ -122.433925269093152, 37.807945122059223 ], [ -122.433817271048738, 37.80791942385212 ], [ -122.433787568621852, 37.807908923241605 ], [ -122.433755903391244, 37.807889527355464 ], [ -122.43376416154652, 37.807874283957823 ], [ -122.433933527911989, 37.807929878638532 ], [ -122.435838185171932, 37.807680938490563 ], [ -122.435834169572829, 37.807659716129535 ], [ -122.435737591220459, 37.807673662142683 ], [ -122.433917274710794, 37.807904049527295 ], [ -122.433913385157453, 37.807887631858222 ], [ -122.434041074707324, 37.807871803440726 ], [ -122.434044035083929, 37.807852526536877 ], [ -122.434070401961165, 37.807867888872153 ], [ -122.434160130921143, 37.807856803195897 ], [ -122.434164803061421, 37.807836811488876 ], [ -122.434189457816743, 37.807852888603414 ], [ -122.434284359969311, 37.807841031264509 ], [ -122.434289032075128, 37.807821039552501 ], [ -122.434313686852093, 37.80783711664111 ], [ -122.434406858247897, 37.807825287589175 ], [ -122.434411548897913, 37.80780598229466 ], [ -122.434437915834692, 37.807821344547961 ], [ -122.434520741089443, 37.807811058557668 ], [ -122.434525413482959, 37.8077910671051 ], [ -122.434551797979211, 37.80780711577237 ], [ -122.434636336023075, 37.807796114603541 ], [ -122.434641025919433, 37.807776809311157 ], [ -122.434665680757917, 37.807792886326304 ], [ -122.434750218436946, 37.807781885630661 ], [ -122.434754908641708, 37.807762580053435 ], [ -122.434779544918584, 37.807777970622496 ], [ -122.434871004379232, 37.807766856012883 ], [ -122.434875676329611, 37.807746864551945 ], [ -122.434900331208965, 37.807762941518149 ], [ -122.434976252743482, 37.807753454920828 ], [ -122.434979194289198, 37.807733491570779 ], [ -122.435005579555238, 37.807749540125371 ], [ -122.435084943914418, 37.807739310518855 ], [ -122.43508961579829, 37.807719318774772 ], [ -122.435116018975634, 37.807736053738346 ], [ -122.435191922576223, 37.807725881117662 ], [ -122.435196576876137, 37.807705202655406 ], [ -122.43522297972649, 37.807721937600746 ], [ -122.435302361927597, 37.807712394556091 ], [ -122.435306998308789, 37.807691029930353 ], [ -122.435333419066353, 37.8077084510101 ], [ -122.435402436929863, 37.807699764700374 ], [ -122.435407055040258, 37.807677713642711 ], [ -122.435433494058017, 37.807695821128007 ], [ -122.435507685095942, 37.807686362859421 ], [ -122.435514015990663, 37.807663596960829 ], [ -122.43554045469773, 37.807681704977007 ], [ -122.435609472497859, 37.807673017996969 ], [ -122.435614072648008, 37.807650280497519 ], [ -122.435642259638655, 37.807669046525525 ], [ -122.435711277415109, 37.807660359485872 ], [ -122.43572966745738, 37.807635335465775 ], [ -122.435735467093281, 37.807658589004994 ], [ -122.435830350851532, 37.807646043988242 ], [ -122.435804210559851, 37.807572993499143 ], [ -122.435788619382777, 37.807572562680427 ], [ -122.435772938706066, 37.807568699417203 ], [ -122.435758952605468, 37.807563435158237 ], [ -122.435746625277645, 37.807555396762375 ], [ -122.435735992180923, 37.807545957377542 ], [ -122.435727054339125, 37.807535116438025 ], [ -122.435721558628927, 37.807523531999962 ], [ -122.435719488549438, 37.807510518156661 ], [ -122.435678807510797, 37.807410923656249 ], [ -122.435671271850225, 37.807321086052454 ], [ -122.435659314380757, 37.807260850297496 ], [ -122.435635232905554, 37.807266739353338 ], [ -122.435635716129568, 37.807285273061382 ], [ -122.435609349135348, 37.807269911074314 ], [ -122.435543792417761, 37.807278540984541 ], [ -122.43552006850399, 37.80729815869541 ], [ -122.435504101570785, 37.807283312732451 ], [ -122.435441987649398, 37.807291199357643 ], [ -122.435419994063011, 37.807310788651876 ], [ -122.43540402680101, 37.807295942681101 ], [ -122.435341912858448, 37.807303829253563 ], [ -122.435318189229335, 37.807323446918055 ], [ -122.435302222331032, 37.807308600927854 ], [ -122.435234935185079, 37.80731725906076 ], [ -122.435212941536335, 37.807336848316268 ], [ -122.435196974310131, 37.807322002317541 ], [ -122.435127956788023, 37.807330689056798 ], [ -122.435105963445992, 37.807350278012088 ], [ -122.435089996584352, 37.807335431993209 ], [ -122.435019248678017, 37.807344147060114 ], [ -122.4349972725025, 37.807364422440152 ], [ -122.434981288114457, 37.807348889967201 ], [ -122.434910540175395, 37.807357604694324 ], [ -122.434888564319408, 37.807377880322939 ], [ -122.434872579266241, 37.807362348121238 ], [ -122.434798388810123, 37.807371805710694 ], [ -122.434776412580376, 37.807392081598607 ], [ -122.434758697865377, 37.807376577207712 ], [ -122.434691410594411, 37.807385235030431 ], [ -122.434667704309632, 37.80740553900322 ], [ -122.434651719289548, 37.807390006497108 ], [ -122.434575798078043, 37.807399492611601 ], [ -122.434552092103161, 37.807419796555429 ], [ -122.434536125337331, 37.807404950461788 ], [ -122.434461916577604, 37.807413721960565 ], [ -122.434439940575373, 37.80743399723081 ], [ -122.434423973489999, 37.807419151402279 ], [ -122.434349765034597, 37.807427922275664 ], [ -122.43432605864993, 37.807448226454213 ], [ -122.434310074038208, 37.807432693896239 ], [ -122.434230709546782, 37.807442922713086 ], [ -122.434208733825983, 37.807463198209049 ], [ -122.434192749235578, 37.807447665635237 ], [ -122.434111654710136, 37.807457923293533 ], [ -122.434087948236439, 37.807478226874963 ], [ -122.434071963321998, 37.807462694290493 ], [ -122.433992599465014, 37.807472923210291 ], [ -122.433970605449531, 37.807492512508169 ], [ -122.433954638431118, 37.807477666067122 ], [ -122.433870083452888, 37.807487980028228 ], [ -122.433846376910722, 37.807508283835588 ], [ -122.433830409920873, 37.80749343765234 ], [ -122.43374412454402, 37.807503779895939 ], [ -122.433722148333416, 37.807524055581261 ], [ -122.433706163485638, 37.807508522947344 ], [ -122.433606088798641, 37.807521151358706 ], [ -122.433584112530909, 37.807541426469101 ], [ -122.433574191011218, 37.807492831512612 ], [ -122.433602216513336, 37.807505419848866 ], [ -122.433678120078412, 37.807495247927321 ], [ -122.433686343139499, 37.80747863165486 ], [ -122.433714368662436, 37.807491220239072 ], [ -122.433795462933048, 37.807480962859643 ], [ -122.433803685966325, 37.807464346578953 ], [ -122.433831693616042, 37.80747624842688 ], [ -122.433911075733292, 37.807466706318117 ], [ -122.433919280165583, 37.807449403606796 ], [ -122.433947305702674, 37.807461991586599 ], [ -122.434024939884253, 37.807451791061574 ], [ -122.434034892878572, 37.807435146394688 ], [ -122.434062900561514, 37.80744704846235 ], [ -122.434135379039915, 37.807438305591944 ], [ -122.434143601646298, 37.807421689293108 ], [ -122.434171609334427, 37.807433591060409 ], [ -122.434245800271043, 37.807424133585066 ], [ -122.434254022851178, 37.80740751727847 ], [ -122.434282048436359, 37.807420105453431 ], [ -122.434352778623364, 37.807410704669572 ], [ -122.434361000831984, 37.807394088361185 ], [ -122.434389026430239, 37.807406676510716 ], [ -122.43446148730483, 37.807397247549531 ], [ -122.434471439847925, 37.807380602851318 ], [ -122.43449944756594, 37.807392504266289 ], [ -122.434571926300066, 37.807383761671048 ], [ -122.434581860921966, 37.807366430255094 ], [ -122.434609886547221, 37.807379018352258 ], [ -122.434682347359626, 37.807369588980769 ], [ -122.434690569836022, 37.807352972643585 ], [ -122.434718577593046, 37.807364874555745 ], [ -122.434784152364955, 37.807356931263477 ], [ -122.43479237481715, 37.807340314919166 ], [ -122.434820382585727, 37.807352216807175 ], [ -122.434884226976308, 37.807344301846562 ], [ -122.434894179763575, 37.807327657106839 ], [ -122.434922187543705, 37.807339558970696 ], [ -122.434987762271462, 37.807331615565204 ], [ -122.434997697142578, 37.807314284382969 ], [ -122.435025722825799, 37.807326872656006 ], [ -122.43509127963911, 37.807318242759216 ], [ -122.435101232376525, 37.807301598001935 ], [ -122.435129240172827, 37.807313499542126 ], [ -122.43519308450432, 37.807305584688869 ], [ -122.435201306859327, 37.807288968315881 ], [ -122.435231044678986, 37.807300841444686 ], [ -122.435296619692778, 37.807292898136311 ], [ -122.4353048420232, 37.807276281756089 ], [ -122.435332849842581, 37.807288183247969 ], [ -122.435398406593208, 37.807279553455011 ], [ -122.435406628899386, 37.80726293706762 ], [ -122.435436384982893, 37.8072754965727 ], [ -122.435451904167508, 37.80727318170905 ], [ -122.435460126807058, 37.807256565312237 ], [ -122.435488134643933, 37.807268466767304 ], [ -122.435508433635007, 37.807250278724965 ], [ -122.435536459373509, 37.807262866602237 ], [ -122.435602016078107, 37.80725423669606 ], [ -122.435615572581426, 37.80724302656666 ], [ -122.435634803373304, 37.807250264946127 ], [ -122.435655496065394, 37.807247178418407 ], [ -122.435588180541416, 37.806922774713847 ], [ -122.435582667693723, 37.80691050382292 ], [ -122.435534182131477, 37.806909926104069 ], [ -122.435571873987683, 37.806894886513319 ], [ -122.435559492755871, 37.80688478880149 ], [ -122.435545453103273, 37.806877464940861 ], [ -122.435529719250937, 37.806871542612598 ], [ -122.435514074542013, 37.806869052731017 ], [ -122.435493292470525, 37.806868707065597 ], [ -122.435344768504805, 37.806882132076758 ], [ -122.435121911744176, 37.806899523218981 ], [ -122.434871780421872, 37.806933156410132 ], [ -122.434433666315243, 37.806993908011997 ], [ -122.434416381034183, 37.806994878255509 ], [ -122.434278149661878, 37.807004699734037 ], [ -122.434260827915324, 37.807004297098374 ], [ -122.434243471085438, 37.807002521306472 ], [ -122.434227808507927, 37.806999344820447 ], [ -122.434210379805293, 37.806994823568417 ], [ -122.434194645688478, 37.806988901067868 ], [ -122.434180606150846, 37.806981577044944 ], [ -122.434166548746745, 37.806973567135586 ], [ -122.434154185915276, 37.806964155430045 ], [ -122.434143535561248, 37.806954029186485 ], [ -122.434134579447857, 37.806942501702544 ], [ -122.434125606153387, 37.806930288047226 ], [ -122.434123142595496, 37.806902172634167 ], [ -122.434101162359013, 37.806855835376808 ], [ -122.434090404384904, 37.806841590530418 ], [ -122.434081359579054, 37.806826631135792 ], [ -122.43406669419322, 37.806795281911626 ], [ -122.434061091508866, 37.806779579065555 ], [ -122.434055471636611, 37.80676318977391 ], [ -122.434051599648825, 37.806747458545502 ], [ -122.434049475890433, 37.80673238537485 ], [ -122.434047316368137, 37.806715939336222 ], [ -122.434046440132462, 37.806682304072865 ], [ -122.43401902773472, 37.806493903623902 ], [ -122.434011784506907, 37.806481661588982 ], [ -122.434004523385283, 37.806468732570444 ], [ -122.433998992958308, 37.806455775445059 ], [ -122.433995192532976, 37.806442790224423 ], [ -122.433964135838224, 37.806446732869858 ], [ -122.433932703641176, 37.806436260667759 ], [ -122.433886127202001, 37.806442518242726 ], [ -122.433858853036313, 37.806458760199753 ], [ -122.433839551447093, 37.806448775787949 ], [ -122.433791244999313, 37.806455061692688 ], [ -122.4337639708083, 37.80647130362771 ], [ -122.433744668882483, 37.806461319206093 ], [ -122.433694632079209, 37.806467633442772 ], [ -122.433667357862433, 37.806483875355433 ], [ -122.43364805594635, 37.806473890918021 ], [ -122.433596288440668, 37.806480233488799 ], [ -122.433569014197744, 37.806496475378673 ], [ -122.433549712637699, 37.806486490919518 ], [ -122.433503136480809, 37.806492748337497 ], [ -122.433477574676203, 37.806508275404134 ], [ -122.433458272433256, 37.806498290941384 ], [ -122.433404793122563, 37.806505348218124 ], [ -122.43337751882855, 37.806521590063653 ], [ -122.433358216941642, 37.806511605578869 ], [ -122.4333047372658, 37.806518662815925 ], [ -122.433279192939949, 37.806534876279215 ], [ -122.433259891408895, 37.80652489177271 ], [ -122.433206393839583, 37.806531262531053 ], [ -122.433179119492635, 37.806547504330624 ], [ -122.433159817625679, 37.806537519813411 ], [ -122.43309943408164, 37.806545377123399 ], [ -122.43307215969898, 37.806561618623626 ], [ -122.433052858195936, 37.806551634357852 ], [ -122.432990744619175, 37.806559519418741 ], [ -122.432963470221836, 37.806575761442943 ], [ -122.43294416836936, 37.80656577661594 ], [ -122.432885515114464, 37.806573605181946 ], [ -122.432858276424469, 37.806591219775477 ], [ -122.432851977723161, 37.806548745928424 ], [ -122.432876452705358, 37.806557958985486 ], [ -122.432950642939176, 37.806548502597778 ], [ -122.432958937194059, 37.806534631840726 ], [ -122.432985142526235, 37.806543816515223 ], [ -122.433055872042729, 37.806534416507489 ], [ -122.433064219557167, 37.806522605325611 ], [ -122.433088659156226, 37.806530445464773 ], [ -122.43316111864155, 37.80652101703766 ], [ -122.433169413207281, 37.806507146534614 ], [ -122.433195618216885, 37.806516331442637 ], [ -122.433259444532922, 37.80650773092048 ], [ -122.433269469079946, 37.806493832326176 ], [ -122.433293944088703, 37.806503045022133 ], [ -122.433357787918965, 37.806495131161043 ], [ -122.433366082106133, 37.806481260924372 ], [ -122.433392287462695, 37.806490445233919 ], [ -122.433454400931879, 37.806482559686899 ], [ -122.433462695099607, 37.806468689443392 ], [ -122.433488900463672, 37.806477873731517 ], [ -122.433552726373762, 37.806469273330841 ], [ -122.433561038053369, 37.806456089520083 ], [ -122.433587243771214, 37.806465273780709 ], [ -122.433649339320041, 37.806456701696959 ], [ -122.43365765098109, 37.806443517879387 ], [ -122.433683838827505, 37.806452015684521 ], [ -122.433745952233608, 37.806444129983937 ], [ -122.433754245996482, 37.806430259725488 ], [ -122.43378045172912, 37.806439443943233 ], [ -122.433842565114432, 37.806431558191733 ], [ -122.433850858857866, 37.806417687926462 ], [ -122.433877064598036, 37.806426872122742 ], [ -122.433932274491454, 37.806419786251801 ], [ -122.433954393037553, 37.806405002549944 ], [ -122.433958408377592, 37.806426224974288 ], [ -122.43399121327684, 37.806422940114579 ], [ -122.433989124957407, 37.806409239815579 ], [ -122.433988785204093, 37.806396197569725 ], [ -122.433991530954188, 37.80636868345389 ], [ -122.433981985185667, 37.806334503629429 ], [ -122.433942822534163, 37.806226642930824 ], [ -122.433950330141514, 37.806182569274938 ], [ -122.433940283395017, 37.806129169298679 ], [ -122.433873424076822, 37.805821925113698 ], [ -122.433853509955952, 37.80572198947479 ], [ -122.433844483207295, 37.805707716218421 ], [ -122.433823004146618, 37.805680599328511 ], [ -122.433808821860836, 37.805667784061214 ], [ -122.433796405313814, 37.805656313293774 ], [ -122.433780528829729, 37.805644899532474 ], [ -122.433766418068998, 37.805634829721896 ], [ -122.43374886455932, 37.805625503361618 ], [ -122.433731328933206, 37.805616863432853 ], [ -122.433713811190202, 37.805608909935621 ], [ -122.433675422356743, 37.805597178553839 ], [ -122.433656263344702, 37.805592685320363 ], [ -122.433637140790879, 37.805589565215314 ], [ -122.433616323330028, 37.805587846350818 ], [ -122.43359552375523, 37.805586814191379 ], [ -122.433576472363242, 37.805586439544221 ], [ -122.433535016220674, 37.805589866131839 ], [ -122.433516072105618, 37.805593610629053 ], [ -122.433498858293476, 37.805597326206154 ], [ -122.432719648836795, 37.805721348282255 ], [ -122.432704236424613, 37.805727781678655 ], [ -122.432688842557212, 37.805734900946824 ], [ -122.432673484086777, 37.805743393361759 ], [ -122.432659891674504, 37.805753230287664 ], [ -122.432648029581884, 37.805763038856455 ], [ -122.432637933547895, 37.805774191937303 ], [ -122.432627855379891, 37.805786031451547 ], [ -122.432619525401748, 37.805798529044132 ], [ -122.432612943621251, 37.805811684990026 ], [ -122.432606379692928, 37.805825526820627 ], [ -122.432603276080599, 37.805839312496055 ], [ -122.432600137407348, 37.805851724742368 ], [ -122.432500317433352, 37.805940575058216 ], [ -122.432391913920043, 37.805965699763121 ], [ -122.432397426855275, 37.805977970519415 ], [ -122.432516390332239, 37.805959539768239 ], [ -122.432628376560629, 37.805872550799698 ], [ -122.432642540805432, 37.805884679499613 ], [ -122.432527165744716, 37.805974471194816 ], [ -122.432403189584164, 37.805999851361079 ], [ -122.43238951051228, 37.806072868560939 ], [ -122.432404443045669, 37.806114514237365 ], [ -122.432490452847844, 37.806359639916195 ], [ -122.43244910342851, 37.806367184726966 ], [ -122.432520431119073, 37.806580274784345 ], [ -122.432498061398036, 37.806585448423995 ], [ -122.432424985907915, 37.806371700265615 ], [ -122.432400868391511, 37.806376216073893 ], [ -122.432301460176419, 37.806081865240721 ], [ -122.43236869294482, 37.806071149476409 ], [ -122.432380802509087, 37.806004338539104 ], [ -122.43235326017701, 37.806010283635004 ], [ -122.432347175872593, 37.805976047248159 ], [ -122.432319651407369, 37.805982678495994 ], [ -122.432302633632929, 37.805993944955773 ], [ -122.432282173360747, 37.806005686719168 ], [ -122.432280461289963, 37.806006669320666 ], [ -122.432265120589491, 37.806015848390899 ], [ -122.432249654811855, 37.806020221869829 ], [ -122.432227231644546, 37.806023336155739 ], [ -122.432194784491401, 37.806040349205666 ], [ -122.432179693529363, 37.806059138076137 ], [ -122.432171560304809, 37.806079186408191 ], [ -122.432165157068255, 37.806099206671476 ], [ -122.432169117939694, 37.806118369860684 ], [ -122.432192469776069, 37.806150950175152 ], [ -122.432209844223067, 37.806153412703416 ], [ -122.432227007583123, 37.806214250207013 ], [ -122.432213468614208, 37.806226146108848 ], [ -122.432203354593938, 37.806236612991817 ], [ -122.432202178080502, 37.806257920803567 ], [ -122.43220649593593, 37.806290812956746 ], [ -122.432221571326565, 37.806337949854225 ], [ -122.432306430556167, 37.806804907302421 ], [ -122.432383452345448, 37.807103744994606 ], [ -122.432564682589728, 37.808479722911237 ], [ -122.432615131844727, 37.808489197136744 ], [ -122.432610261989339, 37.808501638018015 ], [ -122.432598381927761, 37.808510760137189 ], [ -122.432584628175405, 37.80851441914389 ], [ -122.432342320320956, 37.808516329227118 ], [ -122.432078432185492, 37.807223425689031 ], [ -122.431999351719028, 37.807178023752513 ], [ -122.431443837686672, 37.8072509882197 ], [ -122.431386630568454, 37.807314417209206 ], [ -122.431727121174518, 37.8090235974717 ], [ -122.431341938476805, 37.809056687748011 ], [ -122.430994999022246, 37.807365467556572 ], [ -122.430915919059899, 37.807320064620313 ], [ -122.430360402907354, 37.807393024257635 ], [ -122.430303194747026, 37.8074564524454 ], [ -122.43062118366457, 37.809166690185819 ], [ -122.430108306409053, 37.8092156017048 ], [ -122.429835000067499, 37.807825332620489 ], [ -122.429264030219372, 37.807903346686288 ], [ -122.429270969868725, 37.807970532619663 ], [ -122.428236680346103, 37.808405663457563 ], [ -122.427001622006514, 37.808109268493716 ], [ -122.426995537909036, 37.808141644021028 ], [ -122.427545144293163, 37.808640840008444 ], [ -122.428014153033857, 37.808569308327186 ], [ -122.428043639051282, 37.808704798333089 ], [ -122.427533242566099, 37.808782500069931 ], [ -122.427523467767188, 37.808739396087624 ], [ -122.427301030953672, 37.808773247159571 ], [ -122.427287243070779, 37.808708920235645 ], [ -122.427490716316399, 37.808678126013014 ], [ -122.426909232318224, 37.808151294840016 ], [ -122.426839001555635, 37.808113298884024 ], [ -122.426613230594512, 37.808152010516238 ], [ -122.426560904719622, 37.807943556174827 ], [ -122.426488519796493, 37.807651861239542 ], [ -122.426357658303132, 37.807388412718332 ], [ -122.426257507799036, 37.807185417079722 ], [ -122.426066893674061, 37.80699787612533 ], [ -122.4257796482039, 37.806715259689653 ], [ -122.425627533230582, 37.806456787332273 ], [ -122.425531817297653, 37.806150610629167 ], [ -122.425487611207828, 37.806009959663712 ], [ -122.425486832357592, 37.806006120121552 ], [ -122.425298563577385, 37.80507790289635 ], [ -122.425204919000421, 37.804616199985951 ], [ -122.425109521046082, 37.804145845932808 ], [ -122.424918804152185, 37.803205508171892 ], [ -122.424808684502352, 37.802662664019884 ], [ -122.424731259133807, 37.802280983275736 ], [ -122.424731635083759, 37.802281009278651 ], [ -122.424538324517613, 37.801303719934985 ], [ -122.424517597070277, 37.801201189595353 ], [ -122.424358667137113, 37.800415027771606 ], [ -122.424242907462499, 37.799842398528341 ], [ -122.42417056511286, 37.799484537126212 ], [ -122.42417056430692, 37.799484532744323 ], [ -122.423982145098208, 37.798552453684835 ], [ -122.423982396975646, 37.798552421556877 ], [ -122.423793785438747, 37.7976164776058 ], [ -122.423792964234153, 37.797616581376253 ], [ -122.423601296960271, 37.796691058659476 ], [ -122.42360129621845, 37.796691056748735 ], [ -122.423601876988513, 37.796690945913937 ], [ -122.423601877370103, 37.796690947281171 ], [ -122.425249874473522, 37.79648130315109 ], [ -122.426892728667355, 37.796272251947869 ], [ -122.428537813517494, 37.796062892623418 ], [ -122.430182832162615, 37.795853517593606 ], [ -122.431827832563371, 37.79564412085616 ], [ -122.433469062960725, 37.795435179810816 ], [ -122.435113289920963, 37.795225833115033 ], [ -122.436760975027326, 37.795016021968365 ], [ -122.438402484723895, 37.794806973138577 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":7,"ZIP_CODE":94133,"ID":94133},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.418530631419571, 37.804999043218864 ], [ -122.418718265666911, 37.805931520041717 ], [ -122.418781807492508, 37.806241018338142 ], [ -122.418781854642702, 37.806241248585302 ], [ -122.418856183917853, 37.806607498073362 ], [ -122.418908043871269, 37.806863030947284 ], [ -122.419086067910683, 37.807803117635643 ], [ -122.419223966222532, 37.808453096037454 ], [ -122.419103158585543, 37.808467422639801 ], [ -122.419122467317635, 37.808544708340989 ], [ -122.418980965776527, 37.808562118993599 ], [ -122.418965099874526, 37.808484090255142 ], [ -122.417886530686005, 37.80861494396968 ], [ -122.417923033396889, 37.808821741173873 ], [ -122.417843612318336, 37.80882989992265 ], [ -122.417811191268285, 37.808647071958433 ], [ -122.417726330574766, 37.808645704666795 ], [ -122.417731886802656, 37.808592736810425 ], [ -122.417624531730937, 37.808591735208473 ], [ -122.417601699719071, 37.808579058949235 ], [ -122.41748929463067, 37.808583633129054 ], [ -122.417485092698755, 37.808420948020817 ], [ -122.417586902421718, 37.808408305143338 ], [ -122.417575917233663, 37.808385134844094 ], [ -122.417669145522396, 37.808375378317514 ], [ -122.41765313920358, 37.808291858459306 ], [ -122.41737529132557, 37.808325217992042 ], [ -122.417344584298249, 37.808141675039998 ], [ -122.416347061956941, 37.808260209523006 ], [ -122.416354024690548, 37.808328768820694 ], [ -122.416305697821443, 37.808334361125667 ], [ -122.416338782629509, 37.80847597548388 ], [ -122.41718410046191, 37.808496573566089 ], [ -122.417183326975007, 37.808533669258267 ], [ -122.416327431803367, 37.808505689336052 ], [ -122.416281962820022, 37.808487886292838 ], [ -122.416150789583881, 37.80850306555427 ], [ -122.416144807019506, 37.808539558863203 ], [ -122.416207242955323, 37.808544038257011 ], [ -122.416187547333237, 37.808854071166344 ], [ -122.41742892570683, 37.808927290365972 ], [ -122.417412600540189, 37.80916653558441 ], [ -122.418193962887401, 37.809680962781762 ], [ -122.41929170565983, 37.810403664792204 ], [ -122.41931534577914, 37.810380618458765 ], [ -122.419422885954745, 37.810454266609824 ], [ -122.419833484960733, 37.810735462513406 ], [ -122.419807989843818, 37.810753732347422 ], [ -122.420595101766708, 37.811266948659416 ], [ -122.420353825913267, 37.811509857466909 ], [ -122.420001661760068, 37.81128073132367 ], [ -122.419845148459302, 37.811320361929653 ], [ -122.419951835473171, 37.811563099184333 ], [ -122.419915762044113, 37.811573987538154 ], [ -122.419724362099529, 37.811134852199615 ], [ -122.41972295750638, 37.81113418613959 ], [ -122.419216088646508, 37.810893843097361 ], [ -122.419185739151644, 37.810925239548666 ], [ -122.419097184597589, 37.810915006165231 ], [ -122.418987802638568, 37.810835752698928 ], [ -122.418935347953351, 37.810882616404598 ], [ -122.419125945102621, 37.811023040645175 ], [ -122.419048154317267, 37.811094352280243 ], [ -122.419465867632354, 37.811381473037407 ], [ -122.419350858543552, 37.811486353332427 ], [ -122.418846744437559, 37.811473267417028 ], [ -122.416831664498375, 37.810133272229294 ], [ -122.415352404138332, 37.809160867759147 ], [ -122.415205531523597, 37.809171493557926 ], [ -122.415205867990196, 37.809184535850846 ], [ -122.415200978155667, 37.80919628956385 ], [ -122.415187329670815, 37.809204065160294 ], [ -122.415151663626474, 37.809230739831797 ], [ -122.415171052667063, 37.809244159741915 ], [ -122.415194871121983, 37.809227978313764 ], [ -122.415413019588954, 37.809363153673537 ], [ -122.415370856947149, 37.809406415569271 ], [ -122.415142166917732, 37.809265230241984 ], [ -122.415155744585249, 37.809254708904987 ], [ -122.415139781310558, 37.809239860465802 ], [ -122.415039713249854, 37.809185860695372 ], [ -122.41488880052961, 37.80924118848273 ], [ -122.414968316086458, 37.80930376277346 ], [ -122.414992913705149, 37.809317784591791 ], [ -122.415006420575594, 37.809304517526144 ], [ -122.415222785388849, 37.809437662297633 ], [ -122.415180622939999, 37.809480924119129 ], [ -122.41496425806919, 37.809347778996823 ], [ -122.414981136896941, 37.8093310235652 ], [ -122.41495316698277, 37.809320490118694 ], [ -122.414845930117963, 37.809256992445782 ], [ -122.414780776445994, 37.809281398852669 ], [ -122.414774461081151, 37.809372149219335 ], [ -122.415340036749569, 37.80975508488244 ], [ -122.415288518799699, 37.809838328383556 ], [ -122.41456302792659, 37.80956443044294 ], [ -122.414023978762671, 37.809471544827012 ], [ -122.413420668373689, 37.809236173514122 ], [ -122.41337430449579, 37.809317959368158 ], [ -122.413395600212141, 37.809338215320878 ], [ -122.413411510435665, 37.809351004954635 ], [ -122.413425672211702, 37.809363136228626 ], [ -122.413441564407123, 37.809375239427176 ], [ -122.413455726199771, 37.809387370972054 ], [ -122.413471618398191, 37.809399473891929 ], [ -122.413487492569899, 37.80941089065314 ], [ -122.413505097854454, 37.809422279326348 ], [ -122.413520972382244, 37.809433696077356 ], [ -122.413538559637843, 37.80944439831444 ], [ -122.413554416481929, 37.809455128624236 ], [ -122.413572003401356, 37.809465830861896 ], [ -122.413607142559428, 37.809485862444731 ], [ -122.413624694804525, 37.809495192064489 ], [ -122.414282035042135, 37.809946003161961 ], [ -122.414200903764723, 37.81002217256772 ], [ -122.414027337823839, 37.810138985552911 ], [ -122.413780738047123, 37.809907441000853 ], [ -122.413857049972947, 37.809845771015681 ], [ -122.412616832608151, 37.809078904365926 ], [ -122.412498775807535, 37.80906571088461 ], [ -122.412398060995869, 37.809120908451149 ], [ -122.412400109349747, 37.809133236262518 ], [ -122.412396967167027, 37.809145648237823 ], [ -122.412390346141294, 37.809157430172931 ], [ -122.412380210884578, 37.809167208369729 ], [ -122.412426492762847, 37.809216588736774 ], [ -122.412450629760414, 37.809212763732177 ], [ -122.41262839277087, 37.809393236325491 ], [ -122.412573868329858, 37.809427083257212 ], [ -122.412396105370902, 37.809246610582868 ], [ -122.412412861666652, 37.809225050449037 ], [ -122.412356250722411, 37.809177897728922 ], [ -122.41234073008107, 37.809180209833173 ], [ -122.412323390603305, 37.809179117259049 ], [ -122.412307675451856, 37.809173878278465 ], [ -122.412099340782589, 37.809285071655154 ], [ -122.412099676704088, 37.809298113956672 ], [ -122.412096516784118, 37.809309839486673 ], [ -122.412089895696084, 37.809321621404543 ], [ -122.412078012629308, 37.8093307411864 ], [ -122.412124294062423, 37.809380121676121 ], [ -122.412148413801376, 37.809375610565525 ], [ -122.412315935400727, 37.809561743172587 ], [ -122.412252793608843, 37.809597103119742 ], [ -122.412093889154491, 37.809409457275514 ], [ -122.41211066290181, 37.809388583353197 ], [ -122.412057512853792, 37.809341374382768 ], [ -122.412040244067796, 37.809343027789311 ], [ -122.412024634631933, 37.809341907398313 ], [ -122.412008919813204, 37.809336668372488 ], [ -122.411894272206808, 37.809388657747697 ], [ -122.412861765933144, 37.810522545447967 ], [ -122.412718336607824, 37.810599724430624 ], [ -122.412705816724809, 37.810584132828346 ], [ -122.411509089676429, 37.81123738012537 ], [ -122.41148957739901, 37.811219154555417 ], [ -122.412686215557258, 37.810562475550952 ], [ -122.411452462026304, 37.809105334882879 ], [ -122.411423380532113, 37.809118854220145 ], [ -122.411248622782082, 37.808920476073887 ], [ -122.411085557936261, 37.808907323817536 ], [ -122.411283571142818, 37.809134854169606 ], [ -122.411256255700124, 37.809149718017444 ], [ -122.411031438641331, 37.808889659210472 ], [ -122.410955336187001, 37.808892265747417 ], [ -122.410765573350616, 37.808850703243849 ], [ -122.410736033164511, 37.808846374759867 ], [ -122.410731512966407, 37.808872543480319 ], [ -122.410649866328171, 37.808861505447226 ], [ -122.410652655797975, 37.808835364493682 ], [ -122.410546641899074, 37.808819227353638 ], [ -122.410441958004114, 37.809325664485378 ], [ -122.410406413493931, 37.809289843904054 ], [ -122.410401787512413, 37.809311893981061 ], [ -122.410630331289113, 37.809716792194763 ], [ -122.410709259423612, 37.809689418065965 ], [ -122.410633083668301, 37.809554681184579 ], [ -122.41064851611452, 37.809548937394226 ], [ -122.410729547478269, 37.809670547859675 ], [ -122.410757004560026, 37.809661175631867 ], [ -122.410712947997226, 37.809563688219221 ], [ -122.410728380093076, 37.809557944424022 ], [ -122.410791312651469, 37.80964894551029 ], [ -122.410822177556227, 37.809637457886339 ], [ -122.410778085579025, 37.80953859734884 ], [ -122.410793518010678, 37.809532853539501 ], [ -122.410858216047515, 37.809625199709956 ], [ -122.410889098254941, 37.809614398511123 ], [ -122.410843240792332, 37.809514193154044 ], [ -122.410858672867818, 37.809508449341749 ], [ -122.410923406302985, 37.809602168351013 ], [ -122.410950845665482, 37.809592109640889 ], [ -122.410904952795121, 37.809490531433248 ], [ -122.410920384860916, 37.809484787612853 ], [ -122.410985153693048, 37.809579879462774 ], [ -122.411024617975485, 37.809566192280315 ], [ -122.410978689334627, 37.809463241232329 ], [ -122.410994104065225, 37.809456810959603 ], [ -122.411058925978935, 37.809553962080649 ], [ -122.411089808473605, 37.809543160823544 ], [ -122.411042113998747, 37.809438864964896 ], [ -122.411057546043196, 37.809433121126496 ], [ -122.411195348876859, 37.80967536169041 ], [ -122.41117818636998, 37.809681133587063 ], [ -122.411116453591873, 37.809569511282646 ], [ -122.41104955067469, 37.80959325722408 ], [ -122.41111476155065, 37.809705510201134 ], [ -122.411097598684464, 37.809711282091641 ], [ -122.411034100233891, 37.80959831463543 ], [ -122.410977509113948, 37.809619146556997 ], [ -122.411041007143098, 37.809732113774253 ], [ -122.411025592359422, 37.809738544052792 ], [ -122.410960346257056, 37.809624918427609 ], [ -122.410907162593759, 37.809643635209717 ], [ -122.410972426300958, 37.809757947300923 ], [ -122.410956993836351, 37.80976369113344 ], [ -122.410891730147881, 37.809649379033807 ], [ -122.410835138249837, 37.809670210623501 ], [ -122.410900419538606, 37.809785209191027 ], [ -122.410884987408849, 37.809790953008481 ], [ -122.410819706138938, 37.809675954432528 ], [ -122.410764809648242, 37.809695385622547 ], [ -122.410830108511632, 37.809811070390921 ], [ -122.41081467602497, 37.809816814204737 ], [ -122.410747646757216, 37.80970115746215 ], [ -122.410639354408318, 37.809731067210933 ], [ -122.410896947885561, 37.810188372007936 ], [ -122.410975841429376, 37.810159624823598 ], [ -122.410901536485113, 37.810030351311333 ], [ -122.410916969009435, 37.810024607486383 ], [ -122.410997965998874, 37.810144845157168 ], [ -122.41103912533255, 37.810129757339681 ], [ -122.410977003992286, 37.810003033077805 ], [ -122.410992436505126, 37.809997289242951 ], [ -122.411075146003029, 37.810116812392209 ], [ -122.411112880121649, 37.810103153220581 ], [ -122.411050758345823, 37.809976429551675 ], [ -122.411066208857108, 37.809971371863952 ], [ -122.411147188358683, 37.810090922996501 ], [ -122.411190078057032, 37.810075806811575 ], [ -122.411127956511336, 37.809949082902484 ], [ -122.411143389001253, 37.809943339047805 ], [ -122.411224368596535, 37.81006289012803 ], [ -122.411256964037719, 37.810051374350031 ], [ -122.411194842059288, 37.809924650755768 ], [ -122.41121027488505, 37.809918906886708 ], [ -122.4112929849924, 37.810038429879377 ], [ -122.411332431435511, 37.81002405588923 ], [ -122.411270309344076, 37.809897332059471 ], [ -122.411285742158299, 37.809891588180513 ], [ -122.411366721926342, 37.810011139164168 ], [ -122.411401047752832, 37.809999595302976 ], [ -122.411337195490745, 37.809872899820583 ], [ -122.411354358375661, 37.809867127895387 ], [ -122.411435338227506, 37.809986678832487 ], [ -122.411471359105562, 37.809973733758071 ], [ -122.411409237165202, 37.809847009994684 ], [ -122.411424669612117, 37.809841266103092 ], [ -122.41150566722375, 37.80996150342942 ], [ -122.411546826352634, 37.809946415434261 ], [ -122.411484704299241, 37.809819691435401 ], [ -122.411500136734659, 37.809813947533918 ], [ -122.411582846845619, 37.809933470331323 ], [ -122.4116188680253, 37.809920525480692 ], [ -122.411556745877689, 37.809793801793724 ], [ -122.411572177956074, 37.809788057888397 ], [ -122.411653176094603, 37.809908295109032 ], [ -122.4116909096619, 37.809894636032141 ], [ -122.411628787405917, 37.809767912107915 ], [ -122.411644219819436, 37.809762168187518 ], [ -122.411725217707357, 37.809882405639449 ], [ -122.411759525734439, 37.809870174962185 ], [ -122.411697403388885, 37.809743451348098 ], [ -122.411712835792031, 37.809737707418712 ], [ -122.411881278427131, 37.810026834486933 ], [ -122.41186411554628, 37.81003260648864 ], [ -122.411782586611622, 37.809891776308959 ], [ -122.411719126796399, 37.80991478009306 ], [ -122.411802385721074, 37.810055582271964 ], [ -122.411785222827419, 37.810061354262146 ], [ -122.411703694356945, 37.809920524023092 ], [ -122.411645389734517, 37.809942070760108 ], [ -122.411726900787329, 37.810082214596392 ], [ -122.411711467967621, 37.810087958532876 ], [ -122.411628227200978, 37.809947842721932 ], [ -122.41156305384375, 37.809971560917056 ], [ -122.411644564773539, 37.810111704809465 ], [ -122.411629131941311, 37.810117448735141 ], [ -122.411547621726527, 37.809977304820983 ], [ -122.411485874174801, 37.809999594002001 ], [ -122.411567384297499, 37.810139737958238 ], [ -122.411551952145643, 37.810145481862563 ], [ -122.411470441699677, 37.81000533790143 ], [ -122.411408676427612, 37.810026940604999 ], [ -122.411490204455376, 37.81016777104513 ], [ -122.41147477194562, 37.81017351494495 ], [ -122.411393243940836, 37.810032684494281 ], [ -122.411328070780158, 37.81005640255357 ], [ -122.41140959834128, 37.810197233054254 ], [ -122.411394148491496, 37.81020229050096 ], [ -122.41131090784944, 37.810062174474744 ], [ -122.411249177828495, 37.810085149968437 ], [ -122.411330687944414, 37.810225294080347 ], [ -122.4113152554104, 37.810231037959227 ], [ -122.411232014885002, 37.810090921878086 ], [ -122.411175405434363, 37.810111067735896 ], [ -122.411256933104966, 37.81025189806045 ], [ -122.411241500559697, 37.810257641929645 ], [ -122.411159972912074, 37.810116811594561 ], [ -122.411103380733024, 37.810137643311123 ], [ -122.411184890977466, 37.810277787516789 ], [ -122.411169458075165, 37.810283531382133 ], [ -122.411087948545713, 37.810143387154753 ], [ -122.411017619235537, 37.810168562307894 ], [ -122.411099128998927, 37.810308706303054 ], [ -122.411083696429642, 37.810314450151544 ], [ -122.411004005467134, 37.81017771001823 ], [ -122.410905971459442, 37.810202646996828 ], [ -122.411216101543474, 37.810750434096292 ], [ -122.411307020324173, 37.810718058221234 ], [ -122.411214614556201, 37.8105581756828 ], [ -122.411231794935318, 37.81055309021869 ], [ -122.411325542368957, 37.810697843090367 ], [ -122.411366719609191, 37.810683441322411 ], [ -122.411291830600106, 37.810531515646439 ], [ -122.411307262852333, 37.810525771776568 ], [ -122.411402864908169, 37.810675301597549 ], [ -122.411522935608915, 37.810632152260467 ], [ -122.411446209498621, 37.810476136111049 ], [ -122.411461659747943, 37.810471078652185 ], [ -122.411555407533228, 37.810615831617966 ], [ -122.41160859172949, 37.810597114547022 ], [ -122.411624041992908, 37.810592057067005 ], [ -122.411677226161913, 37.810573340239586 ], [ -122.411600605842565, 37.810421442809904 ], [ -122.411617768833821, 37.810415670846979 ], [ -122.411711534523249, 37.810561109852458 ], [ -122.411738974133357, 37.810551050960818 ], [ -122.411686385419046, 37.810391210096554 ], [ -122.411701817957677, 37.810385466169308 ], [ -122.411764700631707, 37.810541706828857 ], [ -122.411829892102887, 37.810518674961713 ], [ -122.41176529620391, 37.810363148827776 ], [ -122.411780746061879, 37.81035809133261 ], [ -122.411847054752684, 37.810512902971148 ], [ -122.411915671345156, 37.810488441813206 ], [ -122.411840781416544, 37.810336516754752 ], [ -122.411856213585779, 37.81033077281284 ], [ -122.411935941632692, 37.810468884965481 ], [ -122.411921351800245, 37.810305681309181 ], [ -122.411938638145514, 37.810304714362765 ], [ -122.411953405498025, 37.81047478237366 ], [ -122.412071780474818, 37.810433033401743 ], [ -122.412010591984938, 37.810275392256564 ], [ -122.412115642263785, 37.810455670909619 ], [ -122.412100192408317, 37.810460728448561 ], [ -122.412084406280471, 37.810452743692409 ], [ -122.41176878056207, 37.810565675738737 ], [ -122.41175334799118, 37.810571419674538 ], [ -122.411684748938015, 37.810596566899896 ], [ -122.411669298331702, 37.810601624393506 ], [ -122.411598969130708, 37.810626799885483 ], [ -122.411583536533968, 37.810632543799024 ], [ -122.411518344886403, 37.810655575529537 ], [ -122.411502912623547, 37.810661319426885 ], [ -122.411432582949345, 37.810686494275835 ], [ -122.411417150327338, 37.81069223816754 ], [ -122.411223323763636, 37.810761991358582 ], [ -122.41132311146211, 37.810939609065692 ], [ -122.411244573940635, 37.811116682909216 ], [ -122.410949479920689, 37.811220352571489 ], [ -122.410930216342933, 37.811279036146971 ], [ -122.410681455051716, 37.81136684679597 ], [ -122.410613578346386, 37.811352838185535 ], [ -122.410419696661208, 37.811420531005773 ], [ -122.410148367227194, 37.811505958616635 ], [ -122.408511879957302, 37.811283856992631 ], [ -122.407577358643394, 37.808803424612513 ], [ -122.407596251976869, 37.808797625245276 ], [ -122.408535735474004, 37.811269050069917 ], [ -122.410153064417187, 37.811486654300801 ], [ -122.41040703579597, 37.811399447392162 ], [ -122.410397994853795, 37.811384485925792 ], [ -122.410199185064457, 37.81132796106332 ], [ -122.410033026138677, 37.811396577420801 ], [ -122.410028523199003, 37.811423432538689 ], [ -122.408569038736545, 37.811217693403208 ], [ -122.408604939400348, 37.811065346992223 ], [ -122.408622314546491, 37.811067812437848 ], [ -122.408601547208733, 37.811202746444437 ], [ -122.408639776140404, 37.811208308039326 ], [ -122.408681379486623, 37.811075784005041 ], [ -122.408700502750108, 37.811078908147074 ], [ -122.408681466003685, 37.811213813888727 ], [ -122.408723173522517, 37.811220006160561 ], [ -122.408763046269982, 37.811087510102226 ], [ -122.408782169539933, 37.811090634230986 ], [ -122.40876313259281, 37.811225539991135 ], [ -122.408803092361268, 37.811231073796982 ], [ -122.408842964625947, 37.811098577717516 ], [ -122.408862088248199, 37.811101701827724 ], [ -122.408843051796623, 37.811236607869454 ], [ -122.408881280424794, 37.811242169666208 ], [ -122.408921153248102, 37.811109673549396 ], [ -122.408942006980325, 37.811112769370261 ], [ -122.408921240203938, 37.811247703157434 ], [ -122.408964677875915, 37.811253867342053 ], [ -122.409004568208587, 37.811122057634492 ], [ -122.409025404309773, 37.811124467552588 ], [ -122.409006385440833, 37.811260059513721 ], [ -122.409042866672721, 37.811264962818356 ], [ -122.409082738873835, 37.811132466653085 ], [ -122.409101862168811, 37.811135590729982 ], [ -122.409082825791046, 37.81127049654058 ], [ -122.409126264189027, 37.81127666092906 ], [ -122.409166136247578, 37.811144164735886 ], [ -122.409185259542042, 37.811147288524687 ], [ -122.409166223312823, 37.811282194348451 ], [ -122.409211409832309, 37.811289016857089 ], [ -122.409251281745554, 37.811156520635443 ], [ -122.40927213551177, 37.811159616672512 ], [ -122.40925136932222, 37.811294550516585 ], [ -122.409279162626277, 37.81129822094033 ], [ -122.40932078253644, 37.811166383119904 ], [ -122.409339888202226, 37.811168820995697 ], [ -122.409320870242325, 37.811304413000762 ], [ -122.409364308333835, 37.811310577307111 ], [ -122.409405910098016, 37.811178053025465 ], [ -122.409425033757373, 37.811181176769772 ], [ -122.409405998308287, 37.811316082900326 ], [ -122.40944074878638, 37.811321014101964 ], [ -122.40948063795679, 37.811189203966087 ], [ -122.409501474085218, 37.811191613525516 ], [ -122.409480725959895, 37.811327233846249 ], [ -122.409527624648632, 37.811333341792235 ], [ -122.409567496367472, 37.811200845459226 ], [ -122.409588350159311, 37.811203941440354 ], [ -122.40956758453207, 37.81133887533899 ], [ -122.409607544075371, 37.811344408877801 ], [ -122.409647432976385, 37.811212599235269 ], [ -122.409666538650669, 37.811215036508962 ], [ -122.4096475212896, 37.811350629114692 ], [ -122.409687480492039, 37.811356162357413 ], [ -122.409729082397121, 37.811223637951706 ], [ -122.409748205742758, 37.811226761923784 ], [ -122.40972917051603, 37.811361667836366 ], [ -122.40976739996718, 37.811367229334621 ], [ -122.409807270930216, 37.811234732926998 ], [ -122.409826394289098, 37.811237857160975 ], [ -122.409807359540622, 37.811372762805725 ], [ -122.409849067242604, 37.811378954679277 ], [ -122.409888938066231, 37.811246458244362 ], [ -122.409909791884289, 37.81124955416864 ], [ -122.409890757298484, 37.811384460375677 ], [ -122.409934195469972, 37.811390623922954 ], [ -122.409972335687982, 37.811258155482349 ], [ -122.409991388408557, 37.811258533667043 ], [ -122.410051001542016, 37.811355083215751 ], [ -122.410080225111116, 37.811347055723829 ], [ -122.410039452733983, 37.811242647397464 ], [ -122.410060076955276, 37.811236819614464 ], [ -122.410111355764599, 37.81134586484395 ], [ -122.410186754248173, 37.811315801374953 ], [ -122.410002034752523, 37.810999466686859 ], [ -122.410015948336749, 37.810934689402742 ], [ -122.410036236914948, 37.810915819594705 ], [ -122.410045418985376, 37.810868973454134 ], [ -122.40995683043738, 37.810857360334786 ], [ -122.409929090780366, 37.810990347084882 ], [ -122.409911715601922, 37.810987881557118 ], [ -122.409936471227283, 37.810873484930354 ], [ -122.409873927744698, 37.810864883322409 ], [ -122.409849172039969, 37.810979280485419 ], [ -122.409831796859692, 37.810976814671307 ], [ -122.409859730943055, 37.810851378751366 ], [ -122.409793708942289, 37.810842147255194 ], [ -122.409767522509881, 37.810968241308018 ], [ -122.409751878141279, 37.810965747731309 ], [ -122.409778063900148, 37.81083965341854 ], [ -122.409713790367476, 37.810831080014538 ], [ -122.409685856045158, 37.810956515900401 ], [ -122.409668480889763, 37.810954050611365 ], [ -122.409696415233427, 37.810828614454991 ], [ -122.40963387182353, 37.810820012994292 ], [ -122.409609415933446, 37.810946079263672 ], [ -122.409592040775962, 37.810943613688799 ], [ -122.409616496701801, 37.810817547697539 ], [ -122.409552222853762, 37.810808973936524 ], [ -122.409527766835737, 37.810935040463818 ], [ -122.4095103913304, 37.810932574607932 ], [ -122.409534847384165, 37.81080650835878 ], [ -122.409470556252117, 37.810797248385086 ], [ -122.4094443696399, 37.810923342636215 ], [ -122.409426994147125, 37.810920877042648 ], [ -122.409453181134111, 37.810794782789721 ], [ -122.40938717688249, 37.810786237228463 ], [ -122.409360972477401, 37.810911645024227 ], [ -122.409343596990126, 37.810909179418339 ], [ -122.409371532226004, 37.810783743881395 ], [ -122.409307258435504, 37.810775169986833 ], [ -122.409279323454484, 37.810900606052307 ], [ -122.409261948311553, 37.810898140154237 ], [ -122.409289883328043, 37.810772704367388 ], [ -122.409222130673314, 37.810763500569543 ], [ -122.409194195884822, 37.810888936060401 ], [ -122.409178551206097, 37.810886442413199 ], [ -122.409204755910437, 37.810761034657382 ], [ -122.409142194961319, 37.810751746498703 ], [ -122.409114277009948, 37.810877868693844 ], [ -122.409096902238019, 37.810875403314995 ], [ -122.409124837171674, 37.81074996729771 ], [ -122.409062293894237, 37.810741365533815 ], [ -122.409034358851102, 37.810866801261916 ], [ -122.409016983385186, 37.810864335607896 ], [ -122.409044919155974, 37.810738900147257 ], [ -122.408982375890048, 37.810730298066382 ], [ -122.408954440030968, 37.81085573406159 ], [ -122.408937065255401, 37.810853268110044 ], [ -122.408965000457812, 37.810727832404666 ], [ -122.408898979017181, 37.810718600127345 ], [ -122.408871043014514, 37.810844035828495 ], [ -122.408853668258587, 37.8108415704138 ], [ -122.408881603590444, 37.810716134453337 ], [ -122.408815582170575, 37.810706902129297 ], [ -122.408787646031413, 37.810832337810972 ], [ -122.408770288923606, 37.810830558546641 ], [ -122.408798206756401, 37.810704436717558 ], [ -122.408730454910014, 37.810695232351428 ], [ -122.408702518970472, 37.810820667733054 ], [ -122.408686891971527, 37.810818860457857 ], [ -122.408713079833362, 37.810692766372398 ], [ -122.408650536651805, 37.810684164390111 ], [ -122.408622600588473, 37.810809600027646 ], [ -122.408605243143839, 37.810807820744628 ], [ -122.408633161587474, 37.810681698673903 ], [ -122.408556510134844, 37.810663024107164 ], [ -122.408588984612706, 37.810512106294745 ], [ -122.408606359289806, 37.810514572023159 ], [ -122.408587340511048, 37.810650164195629 ], [ -122.408629047705375, 37.810656356501411 ], [ -122.408668902323384, 37.810523174029143 ], [ -122.408686277704945, 37.81052564000916 ], [ -122.40866552792356, 37.81066125993452 ], [ -122.408708965930458, 37.810667424477344 ], [ -122.408748820750048, 37.810534241698186 ], [ -122.40876619543765, 37.81053670740306 ], [ -122.40874717695219, 37.810672299875314 ], [ -122.408794093155748, 37.810679094270796 ], [ -122.408833947835987, 37.810545911737734 ], [ -122.408849592085303, 37.810548405436371 ], [ -122.40883057374208, 37.810683997647232 ], [ -122.408875741869977, 37.810690133853562 ], [ -122.408915614060632, 37.81055763773044 ], [ -122.408932971115192, 37.810559417248072 ], [ -122.408913970565308, 37.81069569563472 ], [ -122.408960869161646, 37.810701804075741 ], [ -122.409000741206668, 37.810569307924148 ], [ -122.409018098597954, 37.810571086874475 ], [ -122.40899736742189, 37.810707393837795 ], [ -122.409040787124908, 37.810712871283229 ], [ -122.409080641733894, 37.810579688936649 ], [ -122.409096286337629, 37.810582182322406 ], [ -122.409077268090201, 37.810717774577761 ], [ -122.40911897536337, 37.810723966710214 ], [ -122.409158829484909, 37.81059078406853 ], [ -122.409176204199355, 37.810593249712966 ], [ -122.409157186441121, 37.810728841975312 ], [ -122.409200623829136, 37.810735006073635 ], [ -122.409240478156264, 37.81060182339904 ], [ -122.409257853229136, 37.810604289300421 ], [ -122.409238852918037, 37.810740567743849 ], [ -122.409285751569428, 37.810746676055665 ], [ -122.409325605404021, 37.810613493358183 ], [ -122.409341250023104, 37.81061598671144 ], [ -122.40932224986912, 37.810752265442567 ], [ -122.4093656699755, 37.81075774303735 ], [ -122.40940554098205, 37.810625246755905 ], [ -122.409422898749284, 37.810627025915643 ], [ -122.409403898742326, 37.810763304659638 ], [ -122.409447336517104, 37.810769468661483 ], [ -122.40948544197218, 37.810635627488516 ], [ -122.409502816715019, 37.810638093359387 ], [ -122.409485547293727, 37.810774343825763 ], [ -122.409528985434875, 37.8107805080665 ], [ -122.409565359949454, 37.810646694615322 ], [ -122.409582735382628, 37.810649160188639 ], [ -122.409567196568673, 37.810785383198734 ], [ -122.409612364812048, 37.81079151884834 ], [ -122.409648756853613, 37.810658392357979 ], [ -122.409666132285238, 37.810660857644436 ], [ -122.409648863165444, 37.8107971084087 ], [ -122.409690552872675, 37.810802613901892 ], [ -122.409730423669671, 37.810670117506156 ], [ -122.409747781109076, 37.81067189662366 ], [ -122.409728781340874, 37.810808175424455 ], [ -122.409772201856015, 37.810813652863935 ], [ -122.409810324407417, 37.810680498024219 ], [ -122.409827699517621, 37.810682963841622 ], [ -122.409810430682086, 37.810819214354417 ], [ -122.4098555989803, 37.810825350459979 ], [ -122.409895451834942, 37.810692167571958 ], [ -122.409912826590485, 37.810694632833282 ], [ -122.409895222374288, 37.810817841328777 ], [ -122.409936876790525, 37.81082197386079 ], [ -122.409973639826163, 37.810703262163521 ], [ -122.409991014940061, 37.810705727682269 ], [ -122.409959938125212, 37.81084357554878 ], [ -122.410048526318235, 37.810855188946014 ], [ -122.41005622518567, 37.810817980946432 ], [ -122.410043511556253, 37.810794838529432 ], [ -122.410054194116455, 37.810739040961913 ], [ -122.410078049482479, 37.810724233171044 ], [ -122.410094488114893, 37.810623018930904 ], [ -122.410081703845862, 37.810597130219826 ], [ -122.410092509988729, 37.810546137980772 ], [ -122.410117989755761, 37.810527183534326 ], [ -122.410136070412563, 37.810422508799753 ], [ -122.410119930917134, 37.810400795044814 ], [ -122.41012762970874, 37.810363587311961 ], [ -122.410156217048225, 37.810330848613937 ], [ -122.41017620465729, 37.81023300994017 ], [ -122.410158299784257, 37.810209951610261 ], [ -122.410179752853338, 37.810101788351538 ], [ -122.410076402542387, 37.809920107344034 ], [ -122.410041882266327, 37.809924099736733 ], [ -122.410019086454341, 37.809912794612728 ], [ -122.409979357246016, 37.809916185169463 ], [ -122.409958274206915, 37.809904165299031 ], [ -122.409922023510461, 37.809908185953802 ], [ -122.409899227375504, 37.80989688081219 ], [ -122.409856019993072, 37.80989964065347 ], [ -122.409833224216882, 37.809888335493483 ], [ -122.409796955869524, 37.80989166994722 ], [ -122.409774159751635, 37.809880364506853 ], [ -122.40973616131653, 37.809883726681605 ], [ -122.409715095991231, 37.809872393479395 ], [ -122.409673618697951, 37.809875125240453 ], [ -122.409650822957047, 37.809863820045173 ], [ -122.409611093758144, 37.809867210477904 ], [ -122.409590028449543, 37.809855876978752 ], [ -122.409552029326491, 37.809859239105428 ], [ -122.40952923395507, 37.809847933880995 ], [ -122.409489504405954, 37.809851324003851 ], [ -122.409466709046484, 37.809840018767318 ], [ -122.409426961850301, 37.809842722706414 ], [ -122.409405896576772, 37.809831389174342 ], [ -122.409362689214092, 37.809834148834945 ], [ -122.409339893540192, 37.80982284385405 ], [ -122.40930537326976, 37.809826836031277 ], [ -122.409282577599768, 37.809815530764716 ], [ -122.409239369556644, 37.809818290665945 ], [ -122.409216574238357, 37.809806985106434 ], [ -122.409183784056154, 37.809810949516532 ], [ -122.409160988755644, 37.809799644220845 ], [ -122.409117781056253, 37.80980240379737 ], [ -122.409096715848435, 37.809791070484557 ], [ -122.409062177941692, 37.809794376702477 ], [ -122.40903938231871, 37.80978307138885 ], [ -122.409001401198537, 37.80978711949534 ], [ -122.408980336012803, 37.809775786161715 ], [ -122.408940588826241, 37.809778489662385 ], [ -122.408917793572726, 37.809767184319618 ], [ -122.408872855464537, 37.809769972088361 ], [ -122.408850059531787, 37.809758666743676 ], [ -122.408812061110055, 37.80976202834627 ], [ -122.408789265535077, 37.809750722984248 ], [ -122.40874778827569, 37.809753454419798 ], [ -122.408724992367041, 37.80974214905094 ], [ -122.408688724387432, 37.809745483158423 ], [ -122.408665928836285, 37.809734177772519 ], [ -122.408627929726592, 37.809737539327024 ], [ -122.408605134533261, 37.809726233923747 ], [ -122.40856886620287, 37.809729567725441 ], [ -122.408546070674888, 37.809718262316345 ], [ -122.408502862660981, 37.80972102194783 ], [ -122.408480067491766, 37.809709716520373 ], [ -122.408442068732256, 37.809713078009395 ], [ -122.408419272882526, 37.809701772581377 ], [ -122.40838475263304, 37.809705765038423 ], [ -122.408363687557454, 37.809694431319926 ], [ -122.408318732173385, 37.809696532434543 ], [ -122.408295936693619, 37.809685226977031 ], [ -122.408254459445629, 37.809687957964584 ], [ -122.408238053815026, 37.809790545390122 ], [ -122.40821721811372, 37.809788135332319 ], [ -122.408256439046454, 37.809562942360742 ], [ -122.408275562248491, 37.809566066566916 ], [ -122.408269450984477, 37.809665053549438 ], [ -122.408286825452777, 37.809667519325309 ], [ -122.40832766898086, 37.809572777430049 ], [ -122.408321557439706, 37.809671764420713 ], [ -122.408342410750109, 37.809674860622998 ], [ -122.408383254218379, 37.809580118983206 ], [ -122.408377142750709, 37.809679105976613 ], [ -122.408394517910963, 37.809681571450852 ], [ -122.408435360963296, 37.809586829524143 ], [ -122.408429249910625, 37.809685816514552 ], [ -122.408451833660507, 37.80968888497187 ], [ -122.408492676297627, 37.809594143031056 ], [ -122.408484852889558, 37.809693844457087 ], [ -122.408503958134872, 37.809696281919784 ], [ -122.408544801055655, 37.809601539955445 ], [ -122.408536959377372, 37.809700554958617 ], [ -122.408557795064482, 37.809702964959982 ], [ -122.408598638259278, 37.809608222696959 ], [ -122.408592544731249, 37.809707896412988 ], [ -122.408615128826568, 37.809710964284278 ], [ -122.40865597161357, 37.809616222281704 ], [ -122.408639231230907, 37.809705767179551 ], [ -122.408663757193779, 37.809717044567101 ], [ -122.408704599922103, 37.80962230254778 ], [ -122.408696758454738, 37.809721317561177 ], [ -122.408722821063833, 37.809725016115578 ], [ -122.408763663375069, 37.80963027408157 ], [ -122.408757553102589, 37.809729261082566 ], [ -122.408776676029532, 37.8097323854876 ], [ -122.408817518615137, 37.809637643154893 ], [ -122.408811408067763, 37.809736630164153 ], [ -122.408839165466787, 37.809738927817939 ], [ -122.408880043284086, 37.809645558612985 ], [ -122.408873932819418, 37.809744545625371 ], [ -122.40889130733342, 37.809747011586715 ], [ -122.408932150126873, 37.809652269208989 ], [ -122.408926057042962, 37.809751942941425 ], [ -122.408946892742989, 37.809754352324887 ], [ -122.408987735476614, 37.809659610202615 ], [ -122.408979894728986, 37.80975862522854 ], [ -122.409002478177683, 37.809761693586005 ], [ -122.409043320837327, 37.809666951170023 ], [ -122.40903548016307, 37.809765966199507 ], [ -122.409052855026459, 37.809768431856902 ], [ -122.409093697286551, 37.809673689703786 ], [ -122.409085856332652, 37.809772704742095 ], [ -122.409106709703295, 37.809775800809213 ], [ -122.409147552244775, 37.809681058631973 ], [ -122.409141441787753, 37.809780045663132 ], [ -122.409162295162758, 37.809783141720409 ], [ -122.409203137637348, 37.809688399524063 ], [ -122.409195297173937, 37.809787414563765 ], [ -122.409214402473708, 37.809789852185943 ], [ -122.409255244539409, 37.809695109977277 ], [ -122.409249134570899, 37.809794097008144 ], [ -122.409268257528154, 37.809797221058851 ], [ -122.409309099536273, 37.809702479106257 ], [ -122.40930298963896, 37.809801466139774 ], [ -122.409325573445983, 37.809804533880602 ], [ -122.409366415377917, 37.809709791633715 ], [ -122.409360305556405, 37.809808778670053 ], [ -122.409379410874138, 37.809811216540062 ], [ -122.409420252741057, 37.809716474274637 ], [ -122.409412429873498, 37.809816175771125 ], [ -122.409431535526792, 37.809818613077915 ], [ -122.409472376985178, 37.809723870800191 ], [ -122.409466267649847, 37.80982285783616 ], [ -122.409488851138192, 37.809825926100473 ], [ -122.409529693219639, 37.809731183791826 ], [ -122.409521853187186, 37.809830198852438 ], [ -122.409544436665897, 37.809833266556943 ], [ -122.409585278680453, 37.809738524229203 ], [ -122.409577438721357, 37.809837539293362 ], [ -122.409600022218754, 37.809840607536366 ], [ -122.409640864166391, 37.809745865189505 ], [ -122.409624124935263, 37.809835409950374 ], [ -122.409648668402042, 37.809847373575664 ], [ -122.409694718878129, 37.809753233598798 ], [ -122.409683400550946, 37.809851618269946 ], [ -122.40970946326199, 37.809855316880828 ], [ -122.409750304385923, 37.809760574507528 ], [ -122.409744195418114, 37.809859561557211 ], [ -122.409763300747386, 37.809861998815862 ], [ -122.409800681301817, 37.809767312459051 ], [ -122.409798050568668, 37.809866929913561 ], [ -122.409813677394268, 37.809868737041889 ], [ -122.409859727674416, 37.809774597001002 ], [ -122.409848409562613, 37.809872981687576 ], [ -122.409872741508423, 37.809876708014343 ], [ -122.409896207540612, 37.809779500054304 ], [ -122.409902917913584, 37.809838449581335 ], [ -122.409927956256155, 37.809869633383848 ], [ -122.410058214833967, 37.809886065459693 ], [ -122.40978805552237, 37.809411107578008 ], [ -122.409692176324654, 37.809452490025258 ], [ -122.409753394315103, 37.809476907533615 ], [ -122.409795083288799, 37.80948241299123 ], [ -122.409790439454952, 37.809503776606206 ], [ -122.409767643810284, 37.809492471432705 ], [ -122.409733123723498, 37.809496464009918 ], [ -122.40971032808983, 37.809485158825325 ], [ -122.40967926884106, 37.809489095348837 ], [ -122.409656473217836, 37.809477790153814 ], [ -122.409630622889722, 37.80948232932171 ], [ -122.409609557687361, 37.809470995825244 ], [ -122.409573289526762, 37.809474329935902 ], [ -122.409550493924201, 37.809463024720365 ], [ -122.40952291317636, 37.809467591881273 ], [ -122.409500117230408, 37.809456286387039 ], [ -122.409465597146067, 37.809460278886 ], [ -122.409442784254765, 37.809448287206727 ], [ -122.409413473087668, 37.809452882357093 ], [ -122.409390677508952, 37.809441576836036 ], [ -122.409354409006824, 37.809444910885041 ], [ -122.409331613792688, 37.809433605621535 ], [ -122.409304033042332, 37.809438172731298 ], [ -122.409281237484791, 37.809426867189075 ], [ -122.409251926309096, 37.809431462024762 ], [ -122.40922913042256, 37.809420156752616 ], [ -122.409192844962547, 37.809422804303409 ], [ -122.409170049433754, 37.809411499014253 ], [ -122.409133798935159, 37.809415519427169 ], [ -122.409110985426068, 37.809403527969394 ], [ -122.409076465338302, 37.809407520079958 ], [ -122.409053670177968, 37.809396214762678 ], [ -122.409027819488273, 37.809400753529559 ], [ -122.409005024337446, 37.809389448202872 ], [ -122.408973965091334, 37.809393384540734 ], [ -122.408951169258785, 37.809382079214799 ], [ -122.40891837994225, 37.80938604354025 ], [ -122.408895584120444, 37.809374738203552 ], [ -122.408862794804193, 37.809378702513534 ], [ -122.408839998993102, 37.809367397166127 ], [ -122.408808940093522, 37.809371333454934 ], [ -122.408786144638981, 37.809360028091476 ], [ -122.408756815463747, 37.809363936372364 ], [ -122.4087340203655, 37.80935263099321 ], [ -122.408701230358204, 37.809356595269499 ], [ -122.408678435270645, 37.809345289879595 ], [ -122.408645645263661, 37.809349254140457 ], [ -122.408622850186802, 37.809337948739781 ], [ -122.408591790941983, 37.809341884977052 ], [ -122.408568995183444, 37.809330579577171 ], [ -122.408536205869268, 37.809334543796403 ], [ -122.408513410121444, 37.809323238385751 ], [ -122.408482351223043, 37.809327174588631 ], [ -122.408459555831755, 37.809315869161935 ], [ -122.408426766172141, 37.809319833356362 ], [ -122.408403970791582, 37.809308527918944 ], [ -122.408371181132239, 37.809312492097938 ], [ -122.408350116177374, 37.809301158650754 ], [ -122.408315578458229, 37.809304464375806 ], [ -122.408292783099327, 37.809293158916844 ], [ -122.408263471569185, 37.80929775351261 ], [ -122.408240676566351, 37.80928644803798 ], [ -122.408207886561954, 37.809290412177198 ], [ -122.408185073925949, 37.809278420254287 ], [ -122.408155762741032, 37.809283014817716 ], [ -122.408132967413039, 37.809271709327838 ], [ -122.408100177755486, 37.809275673431507 ], [ -122.408077382438208, 37.809264367930865 ], [ -122.408039154542493, 37.809258805877114 ], [ -122.408058756181504, 37.809145866471148 ], [ -122.408066594168815, 37.809248747837302 ], [ -122.408087429706811, 37.809251157647353 ], [ -122.408126507222988, 37.809155071214583 ], [ -122.408120448716886, 37.809256117235002 ], [ -122.408137823084502, 37.809258583032992 ], [ -122.408178631290198, 37.80916246830698 ], [ -122.408172554871641, 37.809262828172606 ], [ -122.408196869235468, 37.809265868402413 ], [ -122.408235946617765, 37.809169781933626 ], [ -122.408229888259399, 37.809270827959395 ], [ -122.408254202289157, 37.809273868457552 ], [ -122.408293279587355, 37.809177781420765 ], [ -122.408287221320464, 37.809278827998476 ], [ -122.408308056867014, 37.809281237494979 ], [ -122.408347134113498, 37.809185150989656 ], [ -122.408332158807269, 37.809276040458201 ], [ -122.408356702573101, 37.809288004342378 ], [ -122.408397510165557, 37.809191889546774 ], [ -122.408391452032305, 37.809292935854977 ], [ -122.408412287593251, 37.809295345607659 ], [ -122.408453095124827, 37.809199231067545 ], [ -122.408447037059574, 37.809300277103894 ], [ -122.408471350761801, 37.809303317562879 ], [ -122.408512158553279, 37.809207202447709 ], [ -122.408506100235769, 37.809308249041685 ], [ -122.408521727251397, 37.8093100560612 ], [ -122.408560804236558, 37.809213969485583 ], [ -122.408554745970605, 37.809315015532796 ], [ -122.408577329958945, 37.809318083960704 ], [ -122.408618119627377, 37.809221282377308 ], [ -122.40861206179197, 37.80932232869629 ], [ -122.408636375847209, 37.809325368841058 ], [ -122.408677182759092, 37.809229254229557 ], [ -122.408671125342451, 37.80933030027127 ], [ -122.40868850009889, 37.809332766257086 ], [ -122.408727576866028, 37.809236679077507 ], [ -122.408721501183379, 37.80933703897 ], [ -122.408740606697776, 37.80933947666351 ], [ -122.408781413482515, 37.80924336201619 ], [ -122.408775356206561, 37.809344408062977 ], [ -122.40879620945104, 37.809347504459829 ], [ -122.408837016154081, 37.809251389244281 ], [ -122.408830941310313, 37.809351749130926 ], [ -122.408848316070006, 37.809354214818633 ], [ -122.4088891230695, 37.809258100128716 ], [ -122.40888306559286, 37.80935914618636 ], [ -122.408902170426074, 37.809361583864899 ], [ -122.408942977698928, 37.809265468876312 ], [ -122.408936919955934, 37.809366515216752 ], [ -122.408959503968703, 37.809369583296906 ], [ -122.408998562767209, 37.809272810139959 ], [ -122.408992505092215, 37.809373856208545 ], [ -122.409013358354017, 37.809376952566957 ], [ -122.409054147832379, 37.809280150828236 ], [ -122.409048090239509, 37.809381197174098 ], [ -122.409070674261315, 37.809384265232971 ], [ -122.409109750575112, 37.809288178476827 ], [ -122.40910369305017, 37.809389224550813 ], [ -122.409122798597593, 37.809391662456981 ], [ -122.409161857180791, 37.809294888697217 ], [ -122.409155800079347, 37.809395935042737 ], [ -122.409180113834879, 37.809398975080981 ], [ -122.409220920775525, 37.809302860271487 ], [ -122.409214863400692, 37.809403906350916 ], [ -122.409233968955562, 37.809406344239079 ], [ -122.409273045055528, 37.809310256880117 ], [ -122.409266988111227, 37.80941130350562 ], [ -122.40929130186926, 37.809414343246381 ], [ -122.409332108667385, 37.80931822812412 ], [ -122.409326033795196, 37.809418588046228 ], [ -122.409343408940103, 37.809421053929945 ], [ -122.40938421532131, 37.809324938520824 ], [ -122.409378158527119, 37.809425985151776 ], [ -122.40939901180549, 37.809429080892826 ], [ -122.409438070062492, 37.809332307591447 ], [ -122.409432013326835, 37.809433353675857 ], [ -122.409477180743622, 37.809439489653357 ], [ -122.409529287502835, 37.809446200260403 ], [ -122.409588351243272, 37.809454171101315 ], [ -122.40962830977378, 37.809459704635067 ], [ -122.409632794735771, 37.809432163090825 ], [ -122.409672911837845, 37.809443874825128 ], [ -122.409782563727632, 37.809399522210484 ], [ -122.409759009148317, 37.809358700227392 ], [ -122.409646479104083, 37.809089266648215 ], [ -122.409583548723262, 37.809065563811615 ], [ -122.409522825494292, 37.80906036618412 ], [ -122.409518181262428, 37.809081729795679 ], [ -122.409495386134864, 37.809070424563046 ], [ -122.409466075113144, 37.809075019452258 ], [ -122.409443262001091, 37.809063028052371 ], [ -122.409410472498593, 37.80906699224586 ], [ -122.409387677045885, 37.809055686998015 ], [ -122.409356617959673, 37.80905962343688 ], [ -122.409333822524488, 37.809048318453144 ], [ -122.409299302613846, 37.809052310629191 ], [ -122.40927823759111, 37.809040977347202 ], [ -122.409247178159163, 37.809044913762847 ], [ -122.409226113153551, 37.80903358074611 ], [ -122.409193341651701, 37.809038231311064 ], [ -122.409172276649144, 37.80902689801011 ], [ -122.409141217563558, 37.809030834392281 ], [ -122.409118422162948, 37.809019529092303 ], [ -122.409083884609018, 37.809022835042484 ], [ -122.409061089219591, 37.809011529731414 ], [ -122.409026569318456, 37.809015522102243 ], [ -122.409005504354852, 37.809004189046036 ], [ -122.408972714854954, 37.80900815311788 ], [ -122.408949919486972, 37.808996847785302 ], [ -122.408918860402167, 37.809000784108946 ], [ -122.408896065051678, 37.808989479040513 ], [ -122.408865005613961, 37.808993415081005 ], [ -122.408842210612988, 37.80898210972196 ], [ -122.408807673071223, 37.808985415865877 ], [ -122.408784877735343, 37.808974110501353 ], [ -122.408753818298166, 37.808978046512571 ], [ -122.408732753379752, 37.808966713133003 ], [ -122.40870344269787, 37.808971307827179 ], [ -122.408680647389247, 37.80896000271705 ], [ -122.408653066760635, 37.80896456912587 ], [ -122.408630271454712, 37.808953263731418 ], [ -122.408595751557471, 37.808957255976196 ], [ -122.408574686669112, 37.808945922568363 ], [ -122.40853841837243, 37.808949256366759 ], [ -122.4085173534951, 37.808937922948687 ], [ -122.408484564351539, 37.808941887153871 ], [ -122.408461768739215, 37.80893058200698 ], [ -122.408432440401654, 37.808934489921761 ], [ -122.408409645138534, 37.808923184484605 ], [ -122.408375125243424, 37.808927176664845 ], [ -122.408354060404321, 37.808915843492116 ], [ -122.408319522857553, 37.808919148943978 ], [ -122.408296727616332, 37.808907843484988 ], [ -122.408265686178666, 37.808912466074247 ], [ -122.408242890954767, 37.808901160879408 ], [ -122.408208353409876, 37.808904466298728 ], [ -122.408185558190112, 37.808893160818222 ], [ -122.408154499115199, 37.808897097215251 ], [ -122.40813170390588, 37.808885791724293 ], [ -122.40810064447102, 37.808889727563603 ], [ -122.408077849618252, 37.808878422056637 ], [ -122.408048538584595, 37.808883016593732 ], [ -122.408027473807891, 37.80887168336259 ], [ -122.407989475110696, 37.808875044711961 ], [ -122.407968410338185, 37.808863711195677 ], [ -122.40793908201519, 37.808867619537004 ], [ -122.407916286847737, 37.808856314004366 ], [ -122.407867659098386, 37.808850233137854 ], [ -122.407892470076433, 37.808737895932389 ], [ -122.407895080955839, 37.808839488699526 ], [ -122.407919412118858, 37.808843215435566 ], [ -122.407965428881198, 37.808747703240833 ], [ -122.407954143699186, 37.808847460639832 ], [ -122.407971518664866, 37.808849926725884 ], [ -122.408015804954957, 37.808754442230494 ], [ -122.408004537488765, 37.808854886346353 ], [ -122.408030581417677, 37.80885789835331 ], [ -122.408074867989683, 37.808762414104869 ], [ -122.408063600595128, 37.808862857951631 ], [ -122.408080957579173, 37.808864637589593 ], [ -122.408126991783163, 37.808769811495232 ], [ -122.408115706821903, 37.808869569183827 ], [ -122.408134811496907, 37.808872006712299 ], [ -122.408175637137717, 37.80877657841792 ], [ -122.408167830687617, 37.808876966281417 ], [ -122.408188666131636, 37.808879376348344 ], [ -122.408234682562991, 37.808783863774664 ], [ -122.40822341538842, 37.808884307910851 ], [ -122.4082459985258, 37.808887375864508 ], [ -122.408292014895409, 37.808791863543163 ], [ -122.408280730145464, 37.80889162097256 ], [ -122.408299853182712, 37.808894745449784 ], [ -122.408345869480527, 37.808799232832989 ], [ -122.408334584808884, 37.808898990541991 ], [ -122.40835716795533, 37.808902058474338 ], [ -122.408401454133696, 37.808806574104075 ], [ -122.408390187174248, 37.808907017981177 ], [ -122.408412770332475, 37.808910086177463 ], [ -122.408457056451198, 37.808814602061034 ], [ -122.408447501979367, 37.808914331510991 ], [ -122.408464876962967, 37.808916796975197 ], [ -122.408510893069277, 37.808821284568992 ], [ -122.408499626255633, 37.808921728456291 ], [ -122.408520461722972, 37.808924138464597 ], [ -122.408564747351377, 37.808828653764436 ], [ -122.408553480616533, 37.808929097931319 ], [ -122.40857606412726, 37.808932165816167 ], [ -122.408622080100045, 37.808836653366868 ], [ -122.408610795786757, 37.808936410826988 ], [ -122.408633379309109, 37.808939478975418 ], [ -122.408677664815599, 37.808843994782293 ], [ -122.408666398217051, 37.808944438410528 ], [ -122.408683754881451, 37.808946217690789 ], [ -122.408728058314978, 37.808851419636184 ], [ -122.408718504202398, 37.808951149107379 ], [ -122.40873414881105, 37.808953643085459 ], [ -122.40878016458673, 37.808858130300308 ], [ -122.408768880489617, 37.80895788804974 ], [ -122.408788002858174, 37.808961011909815 ], [ -122.408832288517658, 37.808865527378856 ], [ -122.408822734543293, 37.808965256858244 ], [ -122.40884531843632, 37.808968325235043 ], [ -122.408891334078092, 37.80887281240679 ], [ -122.408880067778369, 37.808973256604034 ], [ -122.40889917250513, 37.808975694008623 ], [ -122.408943458030421, 37.808880209436197 ], [ -122.408933921854199, 37.808980625361755 ], [ -122.408953027290934, 37.808983063295585 ], [ -122.408997312398199, 37.808887578434081 ], [ -122.408987758995764, 37.808987308195377 ], [ -122.409008612134684, 37.808990404005712 ], [ -122.409052897181908, 37.808894919398057 ], [ -122.409041631090304, 37.808995363335725 ], [ -122.40906421464841, 37.808998431401648 ], [ -122.409110230041378, 37.808902919037678 ], [ -122.409098946373874, 37.809002676543273 ], [ -122.409121529583416, 37.809005744329234 ], [ -122.409165814840676, 37.808910259673837 ], [ -122.409154548899522, 37.809010703622 ], [ -122.409175384406026, 37.80901311324002 ], [ -122.4092196692594, 37.808917628844746 ], [ -122.409208385736662, 37.80901738636053 ], [ -122.409229238893218, 37.809020482131849 ], [ -122.409273523674656, 37.808924997441885 ], [ -122.4092622402232, 37.809024754962692 ], [ -122.40927961492774, 37.809027220861601 ], [ -122.409325630047334, 37.808931707864964 ], [ -122.409314364326178, 37.80903215210256 ], [ -122.409336947553612, 37.809035219847274 ], [ -122.409381232551411, 37.808939735111537 ], [ -122.409369949242404, 37.809039492642384 ], [ -122.409390802418955, 37.809042588659686 ], [ -122.409422921195898, 37.808945240701227 ], [ -122.409422903348997, 37.809011853140163 ], [ -122.40946679914822, 37.809035864508125 ], [ -122.409564019832658, 37.809046651478369 ], [ -122.409549629214183, 37.809025596054688 ], [ -122.409548887643922, 37.80899676568643 ], [ -122.409387695818651, 37.808719879048233 ], [ -122.409342422574227, 37.808709624416799 ], [ -122.409302270626966, 37.808696540242821 ], [ -122.409262612300481, 37.808769974638814 ], [ -122.409243366033195, 37.808762045524638 ], [ -122.409286290635848, 37.808681004303558 ], [ -122.409251523749987, 37.808675386616557 ], [ -122.409211865384634, 37.808748820995767 ], [ -122.409192619474325, 37.8087408918677 ], [ -122.409232277847408, 37.808667457220274 ], [ -122.409218046276052, 37.808652579691525 ], [ -122.409199082493714, 37.808655633568947 ], [ -122.409183155837965, 37.808642156922303 ], [ -122.409146746495978, 37.80863999940842 ], [ -122.409132550252011, 37.808626494744182 ], [ -122.409097906968512, 37.808625682074002 ], [ -122.409081980690672, 37.808612205682593 ], [ -122.409045571705349, 37.808610047857293 ], [ -122.409029645094293, 37.808596571464371 ], [ -122.40899498416762, 37.808595072051922 ], [ -122.408979057222851, 37.808581595657749 ], [ -122.408939170155094, 37.808578807372939 ], [ -122.408923243223967, 37.808565330971156 ], [ -122.40887636397639, 37.80855990894463 ], [ -122.408862167796897, 37.808546404247657 ], [ -122.40882402846016, 37.808544274635025 ], [ -122.408771338418944, 37.808649509314336 ], [ -122.408752144836185, 37.80864363943796 ], [ -122.408804834900437, 37.808538404767106 ], [ -122.408755995512777, 37.808524087565431 ], [ -122.40870503613472, 37.808629294204955 ], [ -122.408684130157809, 37.808624138753608 ], [ -122.408736802648747, 37.808518217400646 ], [ -122.408686214896832, 37.808503241742777 ], [ -122.408633542337299, 37.808609162798888 ], [ -122.40861434946801, 37.808603292888833 ], [ -122.408665291301503, 37.808497399575863 ], [ -122.408618182709631, 37.808483054307779 ], [ -122.408565527707552, 37.808589661496853 ], [ -122.408546334502589, 37.808583791581334 ], [ -122.408598989528059, 37.808477184400701 ], [ -122.408550150206281, 37.808462866564483 ], [ -122.408494192805264, 37.808575707944065 ], [ -122.408475017602044, 37.808570524448861 ], [ -122.408530957042373, 37.808456996920889 ], [ -122.408475143235307, 37.808440732021886 ], [ -122.408419203721877, 37.80855425952376 ], [ -122.408400010537662, 37.808548389584381 ], [ -122.40845594972285, 37.808434861822526 ], [ -122.408401884334964, 37.808419255320196 ], [ -122.408345944732787, 37.808532783062383 ], [ -122.408326768858856, 37.808527599554232 ], [ -122.408382691187029, 37.808413385377861 ], [ -122.408326877445205, 37.808397120408593 ], [ -122.40827095504342, 37.808511334558837 ], [ -122.408251779872415, 37.808506151027288 ], [ -122.408325818753553, 37.80835593442692 ], [ -122.408307261690325, 37.808307477072752 ], [ -122.408233773949888, 37.808277076846032 ], [ -122.408190831757594, 37.808290132648246 ], [ -122.408103813680896, 37.80847420912815 ], [ -122.408070707145512, 37.808465817066804 ], [ -122.408167524728952, 37.808258920751598 ], [ -122.408046540290897, 37.80819907276836 ], [ -122.408024204007958, 37.808205614634559 ], [ -122.407919104249203, 37.808427066268948 ], [ -122.407885997416685, 37.80841867443587 ], [ -122.407996041444051, 37.808187528721767 ], [ -122.407913795821727, 37.808153149917878 ], [ -122.407807565173499, 37.808397968053718 ], [ -122.407786659324017, 37.808392812443081 ], [ -122.407868398033912, 37.808205388267609 ], [ -122.407660185387385, 37.808254079991599 ], [ -122.407706584592447, 37.808375566178441 ], [ -122.407613672832028, 37.80839767070411 ], [ -122.407507720833991, 37.808114394328115 ], [ -122.407549056121539, 37.808106171825735 ], [ -122.407536061536263, 37.808072046122568 ], [ -122.407462591282297, 37.808042331588446 ], [ -122.40744611868692, 37.808007575403529 ], [ -122.407487420240358, 37.807930680888951 ], [ -122.407431324879042, 37.807903432764398 ], [ -122.407355431147764, 37.80804887173035 ], [ -122.406644940711814, 37.807817946705647 ], [ -122.406816836689401, 37.809994826134172 ], [ -122.406786252768356, 37.810017295716854 ], [ -122.40617819806161, 37.810068327706666 ], [ -122.406151660268563, 37.810046094760864 ], [ -122.406135997898389, 37.810042914277616 ], [ -122.406123656094778, 37.810034186621294 ], [ -122.405904441804637, 37.807159674056429 ], [ -122.405322208784199, 37.806866923600786 ], [ -122.404400300125417, 37.808853394598287 ], [ -122.404390181819835, 37.80886385881621 ], [ -122.404376497046869, 37.808870260285914 ], [ -122.404359263409262, 37.808873285169796 ], [ -122.404316325011152, 37.808819040682266 ], [ -122.403937477028578, 37.80876197892308 ], [ -122.403923457745378, 37.80875533773979 ], [ -122.403912828869224, 37.808745895483341 ], [ -122.403907320429198, 37.80873362312807 ], [ -122.403906985949291, 37.808720580801918 ], [ -122.404717282916977, 37.806971462592401 ], [ -122.403955936424254, 37.806579276399596 ], [ -122.402761932327437, 37.808014567794245 ], [ -122.402746534430648, 37.808021683436984 ], [ -122.402731014070881, 37.808023993997161 ], [ -122.402715370212889, 37.808021499491424 ], [ -122.40235585639897, 37.807840510524542 ], [ -122.402346922703828, 37.807829667068134 ], [ -122.402341415289797, 37.807817394901065 ], [ -122.402339367950134, 37.807805066923208 ], [ -122.402340764477955, 37.807791996673913 ], [ -122.402345656255733, 37.807780243491045 ], [ -122.403421726415289, 37.806471156550586 ], [ -122.402804368682325, 37.806023074735968 ], [ -122.400943288973451, 37.807638041928655 ], [ -122.40092780379058, 37.807641725129315 ], [ -122.400912142497489, 37.807638543945465 ], [ -122.400398744529411, 37.807261566606726 ], [ -122.400572958659495, 37.806120993590262 ], [ -122.401732349384048, 37.805192215433102 ], [ -122.403194419486127, 37.805118563841738 ], [ -122.403587277644846, 37.805412029499024 ], [ -122.404128809815958, 37.80582849738515 ], [ -122.404696069838451, 37.806264743038192 ], [ -122.405495723806581, 37.806640585378162 ], [ -122.405545441190654, 37.806634177056651 ], [ -122.405362337774832, 37.805695301990511 ], [ -122.405357241074242, 37.805695943874476 ], [ -122.405356257037084, 37.805690948342658 ], [ -122.405173536628851, 37.804763212222298 ], [ -122.404986245080067, 37.803832670552438 ], [ -122.404798316633176, 37.802900762043983 ], [ -122.40352117840483, 37.80305477917063 ], [ -122.40315960682554, 37.803098380641011 ], [ -122.402973676735002, 37.802166749844929 ], [ -122.402973611142329, 37.802166419353441 ], [ -122.402883459886269, 37.801713453423041 ], [ -122.402789664410264, 37.801242172237629 ], [ -122.402604124590809, 37.800307129616797 ], [ -122.402603736644934, 37.800305175692849 ], [ -122.402420666593613, 37.799382141273902 ], [ -122.402228639238132, 37.798429701815799 ], [ -122.402040983242472, 37.797504944420098 ], [ -122.401906946643678, 37.796875708196644 ], [ -122.401853390100442, 37.796626165074152 ], [ -122.402402444702886, 37.796554566975963 ], [ -122.40291796673857, 37.796490379340391 ], [ -122.403496709817034, 37.796417485859841 ], [ -122.404412160626791, 37.796302098196776 ], [ -122.405142977212691, 37.796210954635839 ], [ -122.405862652252878, 37.796122174218517 ], [ -122.406224736410849, 37.796077505131322 ], [ -122.406350669109713, 37.796061968858353 ], [ -122.406652352369846, 37.796024750165536 ], [ -122.407083680819795, 37.795970583772274 ], [ -122.407319877605971, 37.795940921047873 ], [ -122.407432089697608, 37.795926828732469 ], [ -122.407563768850565, 37.795910291726024 ], [ -122.40779730388941, 37.795880962818103 ], [ -122.408253202051654, 37.795823706218044 ], [ -122.408704654154022, 37.795766841471867 ], [ -122.408743234497422, 37.795761981540487 ], [ -122.409075520379659, 37.795720125786943 ], [ -122.409077868767497, 37.795719830108119 ], [ -122.409343544204319, 37.795686363949223 ], [ -122.40954722057397, 37.795660707190791 ], [ -122.40989875147848, 37.795616424537307 ], [ -122.411081667103218, 37.795467382264249 ], [ -122.411541226025591, 37.795408552082151 ], [ -122.411541229133036, 37.795408565216896 ], [ -122.411541531721369, 37.795408526524874 ], [ -122.411893657029495, 37.795363458292385 ], [ -122.412335878555311, 37.795306857217497 ], [ -122.413187771447625, 37.795197816725128 ], [ -122.414825631965456, 37.794988155997579 ], [ -122.415005455310151, 37.795877318912275 ], [ -122.415094279286492, 37.796316514471208 ], [ -122.415172033219093, 37.796700969266084 ], [ -122.41519297245145, 37.796804503853558 ], [ -122.415290513107706, 37.797286788953464 ], [ -122.415384105347158, 37.79774954140936 ], [ -122.415384693800732, 37.797752451808172 ], [ -122.415571551794869, 37.798676329254079 ], [ -122.415572319635913, 37.798680127283284 ], [ -122.415667503417794, 37.799150732537029 ], [ -122.41576151132729, 37.799616465113374 ], [ -122.416491256558686, 37.799525268171301 ], [ -122.417385454528372, 37.799413513042644 ], [ -122.417492539304973, 37.799906258247788 ], [ -122.417586974866069, 37.800340791478632 ], [ -122.417798642975782, 37.801267347943607 ], [ -122.41787748762404, 37.801706751150704 ], [ -122.417966229723234, 37.802201308768375 ], [ -122.418151092101994, 37.803135399210959 ], [ -122.418255886912107, 37.803650215613203 ], [ -122.418215611082957, 37.803687299847837 ], [ -122.418280954876565, 37.804023161939504 ], [ -122.418341342522965, 37.804070022432718 ], [ -122.418530631419571, 37.804999043218864 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":8,"ZIP_CODE":94109,"ID":94109},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.413915879652706, 37.790463115032836 ], [ -122.412266187164306, 37.790672783986288 ], [ -122.412154318600955, 37.79012444884593 ], [ -122.412075867445836, 37.789739906579548 ], [ -122.411885657146456, 37.788807543703371 ], [ -122.413541442066688, 37.788598204045492 ], [ -122.415185269301574, 37.788387930678724 ], [ -122.414995423274036, 37.787453843784689 ], [ -122.414806647966373, 37.786519819325378 ], [ -122.414617207572036, 37.785582474657787 ], [ -122.414430198422409, 37.784657140813145 ], [ -122.414241572919337, 37.783723783021379 ], [ -122.415882538254209, 37.783515640872785 ], [ -122.417528773439201, 37.78331088958533 ], [ -122.419181703937824, 37.783101400150407 ], [ -122.420816620257895, 37.78289417046458 ], [ -122.420817002825672, 37.782894121654586 ], [ -122.422463744273344, 37.782685368786026 ], [ -122.422597534917514, 37.782659914421728 ], [ -122.424108200948226, 37.782477051425644 ], [ -122.427396397680198, 37.782056939506091 ], [ -122.427490665181679, 37.782522998381459 ], [ -122.427584325166535, 37.78298604740867 ], [ -122.427778871361184, 37.783924735360486 ], [ -122.427988927379005, 37.784953879052303 ], [ -122.428148186422831, 37.785784488173462 ], [ -122.428241496400901, 37.78624657727314 ], [ -122.428241829261111, 37.786248226022003 ], [ -122.428335613076769, 37.786712655890966 ], [ -122.428525011003728, 37.78765056176524 ], [ -122.428712111452299, 37.788577067507021 ], [ -122.428905308896674, 37.789533740830485 ], [ -122.429092268257477, 37.790459499306614 ], [ -122.429269817037863, 37.791338636935983 ], [ -122.429447192175289, 37.79221689778025 ], [ -122.429625242377327, 37.793098475947545 ], [ -122.429803981887915, 37.793977244761322 ], [ -122.429989276973558, 37.794894937362344 ], [ -122.430182832162615, 37.795853517593606 ], [ -122.428537813517494, 37.796062892623418 ], [ -122.426892728667355, 37.796272251947869 ], [ -122.425249874473522, 37.79648130315109 ], [ -122.423601877370103, 37.796690947281171 ], [ -122.423601876988513, 37.796690945913937 ], [ -122.42360129621845, 37.796691056748735 ], [ -122.423601296960271, 37.796691058659476 ], [ -122.423792964234153, 37.797616581376253 ], [ -122.423793785438747, 37.7976164776058 ], [ -122.423982396975646, 37.798552421556877 ], [ -122.423982145098208, 37.798552453684835 ], [ -122.42417056430692, 37.799484532744323 ], [ -122.42417056511286, 37.799484537126212 ], [ -122.424242907462499, 37.799842398528341 ], [ -122.424358667137113, 37.800415027771606 ], [ -122.424517597070277, 37.801201189595353 ], [ -122.424538324517613, 37.801303719934985 ], [ -122.424731635083759, 37.802281009278651 ], [ -122.424731259133807, 37.802280983275736 ], [ -122.424808684502352, 37.802662664019884 ], [ -122.424918804152185, 37.803205508171892 ], [ -122.425109521046082, 37.804145845932808 ], [ -122.425204919000421, 37.804616199985951 ], [ -122.425298563577385, 37.80507790289635 ], [ -122.425486832357592, 37.806006120121552 ], [ -122.425487611207828, 37.806009959663712 ], [ -122.425531817297653, 37.806150610629167 ], [ -122.425627533230582, 37.806456787332273 ], [ -122.4257796482039, 37.806715259689653 ], [ -122.426066893674061, 37.80699787612533 ], [ -122.426256728575282, 37.807185221316665 ], [ -122.426357658303132, 37.807388412718332 ], [ -122.426488519796493, 37.807651861239542 ], [ -122.426560904719622, 37.807943556174827 ], [ -122.426613230594512, 37.808152010516238 ], [ -122.426749407153778, 37.80832970781308 ], [ -122.426815901093192, 37.808623913624309 ], [ -122.42681099272437, 37.808701593834883 ], [ -122.426830737473963, 37.808795352699491 ], [ -122.426826276753118, 37.808823581609779 ], [ -122.426828951398363, 37.808859934107588 ], [ -122.426829913470996, 37.808897001584555 ], [ -122.426829127336148, 37.808933411171161 ], [ -122.426830071586494, 37.80896979193826 ], [ -122.426848658020631, 37.809018932542891 ], [ -122.426823913850725, 37.809066034426849 ], [ -122.426821397293551, 37.809102471733105 ], [ -122.426817149990782, 37.809138937589218 ], [ -122.426811172632014, 37.809175431983689 ], [ -122.42680517743706, 37.809211239393754 ], [ -122.426799200066583, 37.80924773378711 ], [ -122.426791474798563, 37.809283569459971 ], [ -122.426783766999961, 37.80932009184702 ], [ -122.426764854928408, 37.809391820287793 ], [ -122.426753650652387, 37.809427026340984 ], [ -122.426742463842274, 37.809462919107801 ], [ -122.42673125988388, 37.809498124878161 ], [ -122.426718325162497, 37.809533359195932 ], [ -122.426703641860442, 37.809567935625843 ], [ -122.426690707106644, 37.80960316966555 ], [ -122.426674294047132, 37.809637774073536 ], [ -122.426659593228109, 37.809671663782375 ], [ -122.426641449382515, 37.809706296733168 ], [ -122.426624999956104, 37.809739528275571 ], [ -122.426606838595305, 37.809773474231129 ], [ -122.426586928644923, 37.809806762295736 ], [ -122.426568749097328, 37.809840022090548 ], [ -122.426547090883986, 37.809872652254199 ], [ -122.426527163066623, 37.80990525387346 ], [ -122.426505504455619, 37.809937883485567 ], [ -122.426482098287991, 37.809969855187106 ], [ -122.426435249574482, 37.810032425717694 ], [ -122.426410094762232, 37.810063739239673 ], [ -122.426384921777455, 37.810094366601653 ], [ -122.426359731637717, 37.810124306962969 ], [ -122.426305889769012, 37.810184245028879 ], [ -122.426277202393095, 37.810212869038814 ], [ -122.426248533505472, 37.810242179739554 ], [ -122.426219828627396, 37.810270117569488 ], [ -122.426165541280753, 37.810312894703067 ], [ -122.426148806543424, 37.810335143220563 ], [ -122.426077517869416, 37.810389871747489 ], [ -122.426029956191201, 37.810424984999884 ], [ -122.426004427087875, 37.810441883304833 ], [ -122.425978879818175, 37.810458095175186 ], [ -122.425953351037933, 37.810474993463338 ], [ -122.425902221511379, 37.810506044020848 ], [ -122.425874926298846, 37.810521597684627 ], [ -122.425847613267436, 37.810536464907365 ], [ -122.425792951557781, 37.810564826464294 ], [ -122.425738254193391, 37.810591815126337 ], [ -122.425709157251291, 37.810604651266786 ], [ -122.425621812948378, 37.810641100340696 ], [ -122.425563512153047, 37.810662654222938 ], [ -122.425532631291532, 37.810673458992433 ], [ -122.425501732623886, 37.810683577593657 ], [ -122.425472546238581, 37.810692981507543 ], [ -122.425441630096913, 37.810702413652621 ], [ -122.425410695451745, 37.810711159366136 ], [ -122.425348791232992, 37.810727278162595 ], [ -122.425317821646317, 37.810734650696368 ], [ -122.42528512127241, 37.810742051749649 ], [ -122.425254133532235, 37.81074873811216 ], [ -122.425221397542259, 37.810754766278279 ], [ -122.425190391643511, 37.810760766194903 ], [ -122.425157620386827, 37.810765421468112 ], [ -122.425124866580816, 37.810770763172656 ], [ -122.425093807273001, 37.810774704034145 ], [ -122.425028228777975, 37.810782641379291 ], [ -122.424962578393604, 37.810787833509224 ], [ -122.424931484149809, 37.810790400897922 ], [ -122.424898623523902, 37.810791623930832 ], [ -122.424876305744775, 37.810798855419677 ], [ -122.424848476260408, 37.810793815800935 ], [ -122.424819040922628, 37.810793609459935 ], [ -122.42478787514149, 37.810793431351755 ], [ -122.424758404216234, 37.810791852400563 ], [ -122.42472891548077, 37.810789586458021 ], [ -122.424699408618324, 37.810786634628094 ], [ -122.424640324731897, 37.810777984365998 ], [ -122.424610747039267, 37.810772286768845 ], [ -122.424582881984065, 37.810765873943147 ], [ -122.42455326835632, 37.810758803192932 ], [ -122.424525367734788, 37.810751018033073 ], [ -122.424497431514737, 37.810741859447681 ], [ -122.42447122609704, 37.810732672889145 ], [ -122.424443254308628, 37.810722141695749 ], [ -122.424406843510837, 37.810719989167595 ], [ -122.424404739729965, 37.810705601989262 ], [ -122.424392430564922, 37.810698249126709 ], [ -122.424380086492334, 37.810689522832604 ], [ -122.424367724289866, 37.810680110382542 ], [ -122.424357092185232, 37.810670669703008 ], [ -122.424346425188247, 37.810659856141378 ], [ -122.424337488288586, 37.810649014350894 ], [ -122.424328533252009, 37.810637486130467 ], [ -122.424321309004071, 37.810625929670387 ], [ -122.424315797750651, 37.810613658536091 ], [ -122.424310250566421, 37.810600014537307 ], [ -122.42430472117745, 37.810587056973155 ], [ -122.4243009222361, 37.810574071450297 ], [ -122.424298835580885, 37.810560370715905 ], [ -122.424298497510776, 37.810547328452351 ], [ -122.424299872431348, 37.810533571515215 ], [ -122.424301264798501, 37.810520501018615 ], [ -122.424304387263248, 37.810507402569137 ], [ -122.424309258634793, 37.810494961760924 ], [ -122.424315860102183, 37.810482492999512 ], [ -122.424324191657433, 37.810469996010013 ], [ -122.424332559488974, 37.810458871878474 ], [ -122.42434440529064, 37.810448377725301 ], [ -122.424354539139387, 37.810438598228359 ], [ -122.424368151310617, 37.810429448977779 ], [ -122.424380050823189, 37.810421013845534 ], [ -122.424395446797789, 37.810413895387818 ], [ -122.424410860570717, 37.810407463637567 ], [ -122.424426309569299, 37.810402404211651 ], [ -122.424441794853934, 37.810398717916826 ], [ -122.42445902802703, 37.810395690099803 ], [ -122.424474548198873, 37.810393376407241 ], [ -122.424495313410532, 37.810393037578869 ], [ -122.424512653696851, 37.810394128357849 ], [ -122.424528280984248, 37.810395933262043 ], [ -122.424545674311858, 37.810399083346539 ], [ -122.424561354987802, 37.810402947551076 ], [ -122.424577071263883, 37.810408184897881 ], [ -122.424591092706251, 37.810414823624235 ], [ -122.424605131932822, 37.810422148234672 ], [ -122.424619206768625, 37.810430846262342 ], [ -122.424631551158143, 37.810439571977035 ], [ -122.424642200368709, 37.810449699078426 ], [ -122.424652868070766, 37.810460512602432 ], [ -122.424661822790284, 37.810472040804292 ], [ -122.424669047076236, 37.810483597243831 ], [ -122.424676306964855, 37.810496526827265 ], [ -122.424683904979332, 37.810522498123575 ], [ -122.424685973208497, 37.810535512153116 ], [ -122.424686685078399, 37.810562969547746 ], [ -122.424688754001352, 37.810575983565833 ], [ -122.424694265313605, 37.810588254682798 ], [ -122.424703220408176, 37.810599783150167 ], [ -122.424713852193449, 37.810609223529688 ], [ -122.424727909273159, 37.81061723483468 ], [ -122.424743643057568, 37.81062315859959 ], [ -122.424759306354005, 37.810626336886287 ], [ -122.424774915898695, 37.810627455322866 ], [ -122.424844204676688, 37.810629071443891 ], [ -122.424883986990039, 37.810627735460123 ], [ -122.424942750746894, 37.810624029768022 ], [ -122.424970402172974, 37.810622204741975 ], [ -122.424999748098813, 37.810618978876803 ], [ -122.425029112521329, 37.810616439702436 ], [ -122.42505844098109, 37.810612527107622 ], [ -122.425086039005805, 37.810608643024629 ], [ -122.425115367473737, 37.810604730964819 ], [ -122.425142947684478, 37.810600160159147 ], [ -122.425172240190349, 37.810594874946659 ], [ -122.42519980259955, 37.810589617967473 ], [ -122.425229077987609, 37.810583646294816 ], [ -122.425311658363697, 37.810563756689383 ], [ -122.425339167350202, 37.810556440647844 ], [ -122.425394149679065, 37.810540434852271 ], [ -122.425449096383744, 37.810523056436082 ], [ -122.425474821139559, 37.810513709039498 ], [ -122.42550225886724, 37.810503646946287 ], [ -122.425553673774345, 37.810483579237776 ], [ -122.425579363239436, 37.810472858943186 ], [ -122.425656378173159, 37.810438638721514 ], [ -122.425680301215294, 37.81042657379389 ], [ -122.425705937577163, 37.810413794436336 ], [ -122.425729843135883, 37.81040104278366 ], [ -122.425777618636445, 37.81037416741794 ], [ -122.425799775930017, 37.810360757570926 ], [ -122.425823645502135, 37.810346633309891 ], [ -122.425845767517558, 37.810331850853636 ], [ -122.425869619617202, 37.810317040417416 ], [ -122.425891740915375, 37.81030225768918 ], [ -122.425912114318606, 37.810286817047619 ], [ -122.425934218490383, 37.810271348139892 ], [ -122.42595457407505, 37.810255221330763 ], [ -122.425976660073871, 37.81023906598594 ], [ -122.426033069704985, 37.810211362243855 ], [ -122.426044381296308, 37.810180274872565 ], [ -122.426071409213066, 37.810154424922551 ], [ -122.426098419287058, 37.810127887982347 ], [ -122.426123698921984, 37.810101379570156 ], [ -122.42617422251692, 37.810046989859728 ], [ -122.426197736051108, 37.810019136822319 ], [ -122.426222979645814, 37.809991255524551 ], [ -122.426244745255502, 37.809962744298282 ], [ -122.426268240925296, 37.809934204811682 ], [ -122.426289987997293, 37.809905007153375 ], [ -122.426310004983833, 37.8098758380223 ], [ -122.426331734895541, 37.809845953635381 ], [ -122.426350003264446, 37.809816126056347 ], [ -122.426370002384175, 37.809786270205322 ], [ -122.42640650446053, 37.80972524214534 ], [ -122.426423024539801, 37.809694756383479 ], [ -122.426439527484902, 37.809663584173109 ], [ -122.426456011918219, 37.809631725811407 ], [ -122.426470784413283, 37.809600581586317 ], [ -122.426485538743833, 37.809568751204715 ], [ -122.426498562648177, 37.809536949086315 ], [ -122.426511568735094, 37.809504460806153 ], [ -122.426524592609866, 37.809472658409931 ], [ -122.426535868255684, 37.809440198117713 ], [ -122.426547125731901, 37.809407051395155 ], [ -122.426556671294222, 37.80937461936086 ], [ -122.42657572607385, 37.809308382431155 ], [ -122.426583523043476, 37.809275292231341 ], [ -122.426589589599459, 37.809242230297407 ], [ -122.426597386209863, 37.809209140101942 ], [ -122.426601704881108, 37.809175419993217 ], [ -122.42660775360666, 37.809141671622967 ], [ -122.426612089737361, 37.809108637953877 ], [ -122.42661985311382, 37.809007562446936 ], [ -122.426622425964752, 37.808906571727555 ], [ -122.426632418849564, 37.808824688117525 ], [ -122.426616150524296, 37.80879817156422 ], [ -122.426607002185577, 37.808712480555535 ], [ -122.426596123115345, 37.808626817267942 ], [ -122.42658353220007, 37.808541869217166 ], [ -122.426569192751245, 37.808456262451642 ], [ -122.426553140769713, 37.808371370658513 ], [ -122.426535358440475, 37.808286507127633 ], [ -122.426521448780022, 37.808150762619441 ], [ -122.42648716178519, 37.808163683754294 ], [ -122.426478316482672, 37.808089661844356 ], [ -122.426472145992449, 37.808051992713068 ], [ -122.426465992974997, 37.808015010021762 ], [ -122.42645810959354, 37.807978055869093 ], [ -122.426450244018099, 37.807941787601465 ], [ -122.426431016184523, 37.807867935277343 ], [ -122.426421420613309, 37.807831695540209 ], [ -122.426410094332368, 37.807795484071661 ], [ -122.426383981060937, 37.807723117657737 ], [ -122.426370941909852, 37.807687620888885 ], [ -122.426356154936116, 37.8076514659409 ], [ -122.42634140359948, 37.807616683860772 ], [ -122.426324904443447, 37.807581243600652 ], [ -122.426289370917274, 37.807546114229226 ], [ -122.426116990256872, 37.807640950874436 ], [ -122.426004575599805, 37.807511622087709 ], [ -122.425948221432193, 37.807541385135394 ], [ -122.426072979790121, 37.807679439549148 ], [ -122.426043902201883, 37.807692962208542 ], [ -122.425788908967789, 37.807405954455511 ], [ -122.425811101339534, 37.807393917738004 ], [ -122.425841407866244, 37.807427759425885 ], [ -122.425860156968014, 37.807416465651144 ], [ -122.425910013941177, 37.807469902573231 ], [ -122.425894653990497, 37.807478394108394 ], [ -122.425932202930852, 37.807524478297722 ], [ -122.425969647726248, 37.80749983141159 ], [ -122.425933954139211, 37.807458524016887 ], [ -122.426097611558333, 37.807361083192824 ], [ -122.42613200511353, 37.807352281054179 ], [ -122.426091315966914, 37.80731860900228 ], [ -122.4260559073373, 37.80728828460429 ], [ -122.425981701022749, 37.807230438026032 ], [ -122.425942884837923, 37.807202229419872 ], [ -122.425865288869659, 37.807147185302298 ], [ -122.425824778720127, 37.807120377771732 ], [ -122.425784286059837, 37.807094256667916 ], [ -122.425743811226624, 37.807068821710658 ], [ -122.425659436564132, 37.807019381954113 ], [ -122.425575133216185, 37.806972687328404 ], [ -122.425531269042693, 37.806950055090923 ], [ -122.425487422692115, 37.806928108997688 ], [ -122.425396304969212, 37.806885646130702 ], [ -122.425305258549756, 37.806845928659463 ], [ -122.425259770989555, 37.806827443179728 ], [ -122.425212552741186, 37.806808985385324 ], [ -122.425165353022919, 37.806791214545072 ], [ -122.425118188573762, 37.806774816287508 ], [ -122.425069293788937, 37.80675844598079 ], [ -122.4250204168317, 37.806742762363598 ], [ -122.424973288049415, 37.806727737193157 ], [ -122.42492444672159, 37.806713426132198 ], [ -122.424873892869243, 37.806699830002309 ], [ -122.424802432493848, 37.806681081528858 ], [ -122.424772802670631, 37.806673324118421 ], [ -122.424744921357572, 37.806666225439869 ], [ -122.424689194317793, 37.806653400109965 ], [ -122.424659600807814, 37.806647015805055 ], [ -122.424631755098972, 37.806641289695882 ], [ -122.42460219684277, 37.806636278252959 ], [ -122.42457436893713, 37.806631238565636 ], [ -122.424544828483292, 37.806626913543731 ], [ -122.424517018379291, 37.806622560278207 ], [ -122.424487495380134, 37.806618921682983 ], [ -122.424428486015572, 37.806613017324239 ], [ -122.424398998964037, 37.806610751846591 ], [ -122.42437124224621, 37.806608457578399 ], [ -122.424341772644766, 37.806606878527504 ], [ -122.424282870046667, 37.806605092433877 ], [ -122.424224002349433, 37.806604679467583 ], [ -122.424165170926941, 37.806605639331515 ], [ -122.424135772832813, 37.80660680569077 ], [ -122.424077012229233, 37.806610511532789 ], [ -122.424018287184794, 37.806615589667317 ], [ -122.42398895989578, 37.806619501737501 ], [ -122.423959615506732, 37.806622727353634 ], [ -122.423932018904594, 37.806626611175993 ], [ -122.423873400581527, 37.806635808400436 ], [ -122.423845839538984, 37.806641064799031 ], [ -122.423816565594137, 37.806647036132823 ], [ -122.423789022338056, 37.806652979228197 ], [ -122.423759766870432, 37.806659637246682 ], [ -122.423706445903605, 37.806672867782268 ], [ -122.423653321266002, 37.806693649347707 ], [ -122.423589920527235, 37.806718718849552 ], [ -122.423526538222887, 37.806744474741464 ], [ -122.423399843925978, 37.80679873217619 ], [ -122.423338262626473, 37.806827205494514 ], [ -122.423215171014846, 37.806886897776501 ], [ -122.423155391052063, 37.806918088524029 ], [ -122.423095628820221, 37.806949965676615 ], [ -122.423037614673063, 37.806982501019867 ], [ -122.422979636035322, 37.807016409205524 ], [ -122.422923387701616, 37.807050289149693 ], [ -122.422867174874767, 37.807085541937973 ], [ -122.422807430162962, 37.807118105379153 ], [ -122.422669617719095, 37.80721100017012 ], [ -122.422538512716017, 37.807295544473774 ], [ -122.422410922154015, 37.807382091240839 ], [ -122.422406568873129, 37.807385156047935 ], [ -122.422285114644055, 37.807470669252126 ], [ -122.422159360151895, 37.8075613064347 ], [ -122.422037101638551, 37.807653259953362 ], [ -122.421916608736879, 37.807746558017001 ], [ -122.421799629592272, 37.807841858870269 ], [ -122.42168270310637, 37.807939218918449 ], [ -122.421532057745097, 37.808071464473507 ], [ -122.421789175548739, 37.808374241220797 ], [ -122.421758561641454, 37.808395342089796 ], [ -122.421493253559859, 37.808110553294661 ], [ -122.421324496714121, 37.808278803348081 ], [ -122.421367127445279, 37.808320685807196 ], [ -122.421400626951964, 37.808344175435167 ], [ -122.421417984134223, 37.808345953110788 ], [ -122.421538848573221, 37.808467594219884 ], [ -122.421521846706554, 37.808479545548913 ], [ -122.421585810928775, 37.808543055557919 ], [ -122.421558551068415, 37.808559981099798 ], [ -122.421494604621685, 37.808497157511823 ], [ -122.421482722503114, 37.808506278522707 ], [ -122.42136546133365, 37.808390072182092 ], [ -122.421343808401488, 37.808356088677073 ], [ -122.421300875659668, 37.808302536803509 ], [ -122.421061625998746, 37.808556401980894 ], [ -122.421102646347336, 37.808803641534986 ], [ -122.421495500883367, 37.809133737012722 ], [ -122.421447795704026, 37.809163356667042 ], [ -122.422886026597482, 37.810219448665336 ], [ -122.422843690020329, 37.8102558485987 ], [ -122.42136637775458, 37.809161249445332 ], [ -122.421209585435776, 37.809189899457976 ], [ -122.421035643651535, 37.808957186122555 ], [ -122.420944163231766, 37.808967603286121 ], [ -122.420910323787112, 37.808797159929568 ], [ -122.420858358549751, 37.808795946109164 ], [ -122.420717381312784, 37.80890056409217 ], [ -122.420760227934167, 37.809084595303112 ], [ -122.420694330112809, 37.809080174685604 ], [ -122.420677247269424, 37.809022081268409 ], [ -122.420415813879998, 37.809020844655912 ], [ -122.420359979289643, 37.809003898946663 ], [ -122.420384124514499, 37.808933459866985 ], [ -122.420668674045118, 37.808958355470025 ], [ -122.420635748727079, 37.808756307812423 ], [ -122.420540860637956, 37.808768840609403 ], [ -122.420461300526242, 37.808303163202581 ], [ -122.419223966222532, 37.808453096037454 ], [ -122.419086067910683, 37.807803117635643 ], [ -122.418908043871269, 37.806863030947284 ], [ -122.418856183917853, 37.806607498073362 ], [ -122.418781854642702, 37.806241248585302 ], [ -122.418781807492508, 37.806241018338142 ], [ -122.418718265666911, 37.805931520041717 ], [ -122.418530631419571, 37.804999043218864 ], [ -122.418341342522965, 37.804070022432718 ], [ -122.418280954876565, 37.804023161939504 ], [ -122.418215611082957, 37.803687299847837 ], [ -122.418255886912107, 37.803650215613203 ], [ -122.418151092101994, 37.803135399210959 ], [ -122.417966229723234, 37.802201308768375 ], [ -122.41787748762404, 37.801706751150704 ], [ -122.417798642975782, 37.801267347943607 ], [ -122.417586974866069, 37.800340791478632 ], [ -122.417492539304973, 37.799906258247788 ], [ -122.417385454528372, 37.799413513042644 ], [ -122.416491256558686, 37.799525268171301 ], [ -122.41576151132729, 37.799616465113374 ], [ -122.415667503417794, 37.799150732537029 ], [ -122.415572319635913, 37.798680127283284 ], [ -122.415571551794869, 37.798676329254079 ], [ -122.415384693800732, 37.797752451808172 ], [ -122.415384105347158, 37.79774954140936 ], [ -122.415290513107706, 37.797286788953464 ], [ -122.41519297245145, 37.796804503853558 ], [ -122.415172033219093, 37.796700969266084 ], [ -122.415094279286492, 37.796316514471208 ], [ -122.415005455310151, 37.795877318912275 ], [ -122.414825631965456, 37.794988155997579 ], [ -122.414647632176155, 37.794109807074861 ], [ -122.414470074462415, 37.79322314646798 ], [ -122.414381908270244, 37.792784070108439 ], [ -122.414293264567746, 37.792342610236801 ], [ -122.414107303557273, 37.79141647884336 ], [ -122.413915879652706, 37.790463115032836 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":9,"ZIP_CODE":94111,"ID":94111},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.400058259594957, 37.793693587424592 ], [ -122.400148778887171, 37.794134234665414 ], [ -122.400149325778898, 37.794134165695652 ], [ -122.401314504615144, 37.793987063215781 ], [ -122.402133431503088, 37.793883778773662 ], [ -122.40215951272063, 37.793880489466119 ], [ -122.402957360909014, 37.793779857671261 ], [ -122.40308689535884, 37.793763518993806 ], [ -122.404016114128936, 37.793646309359175 ], [ -122.404370134182003, 37.793598168205968 ], [ -122.404613421373455, 37.793565084338127 ], [ -122.404710582177955, 37.794021380197684 ], [ -122.404796472837063, 37.794453004909116 ], [ -122.404875610619072, 37.794859533373135 ], [ -122.404957208224928, 37.795326691921687 ], [ -122.405142977212691, 37.796210954635839 ], [ -122.404412160626791, 37.796302098196776 ], [ -122.403496709817034, 37.796417485859841 ], [ -122.40291796673857, 37.796490379340391 ], [ -122.402402444702886, 37.796554566975963 ], [ -122.401853390100442, 37.796626165074152 ], [ -122.401906946643678, 37.796875708196644 ], [ -122.402040983242472, 37.797504944420098 ], [ -122.402228639238132, 37.798429701815799 ], [ -122.402420666593613, 37.799382141273902 ], [ -122.402603736644934, 37.800305175692849 ], [ -122.402604124590809, 37.800307129616797 ], [ -122.402789664410264, 37.801242172237629 ], [ -122.402883459886269, 37.801713453423041 ], [ -122.402973611142329, 37.802166419353441 ], [ -122.402973676735002, 37.802166749844929 ], [ -122.40315960682554, 37.803098380641011 ], [ -122.40352117840483, 37.80305477917063 ], [ -122.404798316633176, 37.802900762043983 ], [ -122.404986245080067, 37.803832670552438 ], [ -122.405173536628851, 37.804763212222298 ], [ -122.405356257037084, 37.805690948342658 ], [ -122.405357241074242, 37.805695943874476 ], [ -122.405362337774832, 37.805695301990511 ], [ -122.405545441190654, 37.806634177056651 ], [ -122.405495723806581, 37.806640585378162 ], [ -122.404696069838451, 37.806264743038192 ], [ -122.404128809815958, 37.80582849738515 ], [ -122.403587277644846, 37.805412029499024 ], [ -122.403194419486127, 37.805118563841738 ], [ -122.401732349384048, 37.805192215433102 ], [ -122.400572958659495, 37.806120993590262 ], [ -122.400963593501643, 37.803563391134098 ], [ -122.400842454396695, 37.803429372376385 ], [ -122.400479886428016, 37.803466118528789 ], [ -122.398551197769294, 37.804602806142064 ], [ -122.398535712754665, 37.804606489036345 ], [ -122.398520052204233, 37.804603307533085 ], [ -122.398559631153262, 37.804526444219782 ], [ -122.398227927335071, 37.804281130126874 ], [ -122.398222420518948, 37.804268857764917 ], [ -122.398225564864617, 37.80425644615601 ], [ -122.399971727587683, 37.803225025895152 ], [ -122.399602741790233, 37.802807948916175 ], [ -122.397824683987196, 37.803810348092696 ], [ -122.397809199101829, 37.803814030892141 ], [ -122.397793538749667, 37.803810849291956 ], [ -122.397517150597622, 37.803494597437428 ], [ -122.397511661501127, 37.80348301148031 ], [ -122.3975148062854, 37.803470600157546 ], [ -122.399615259663278, 37.802282404799911 ], [ -122.39972332623249, 37.802176282179168 ], [ -122.399409670069147, 37.801824238674413 ], [ -122.399371692841143, 37.801828283680663 ], [ -122.399347556878283, 37.801832106025373 ], [ -122.399325151849467, 37.801835900487347 ], [ -122.399302764032285, 37.801840381390434 ], [ -122.39928039377223, 37.801845548729034 ], [ -122.399258040722614, 37.801851402508781 ], [ -122.399235705920944, 37.801857942712921 ], [ -122.399215101014406, 37.801864455053376 ], [ -122.399192800984025, 37.8018723684091 ], [ -122.399172231180287, 37.801880253347079 ], [ -122.399151696503523, 37.801889511710215 ], [ -122.397115576147101, 37.803021039584841 ], [ -122.397100091038084, 37.803024722022734 ], [ -122.397084431235825, 37.80302154059693 ], [ -122.396146888856933, 37.801962584949095 ], [ -122.396143112804936, 37.801950284664713 ], [ -122.396146275276891, 37.801938559540567 ], [ -122.396156183429241, 37.801919858733392 ], [ -122.398383194135846, 37.80067265166084 ], [ -122.398279805658603, 37.800555512940733 ], [ -122.397989357773142, 37.800230561089471 ], [ -122.395767421385884, 37.801472872307706 ], [ -122.395751936546873, 37.801476555118818 ], [ -122.395736277114864, 37.801473372963947 ], [ -122.395444597217249, 37.801167663046662 ], [ -122.395439108270097, 37.801156076993678 ], [ -122.395442253641278, 37.801143665440662 ], [ -122.397525741108808, 37.799970200398498 ], [ -122.397542727338319, 37.799957565794791 ], [ -122.397573204312565, 37.79993098020509 ], [ -122.397588407347527, 37.799916314120374 ], [ -122.397601862985724, 37.799900989703779 ], [ -122.397613588764841, 37.799885693121588 ], [ -122.397625296656045, 37.799869710378033 ], [ -122.397635256446222, 37.799853068765884 ], [ -122.397583045956239, 37.799774248814408 ], [ -122.397381692278955, 37.799548810060863 ], [ -122.397362923291766, 37.799559412884541 ], [ -122.397350478314067, 37.799546565387622 ], [ -122.39725607725606, 37.79944232919879 ], [ -122.396973022275191, 37.799609635784066 ], [ -122.396895724416169, 37.799632854304804 ], [ -122.396944532454214, 37.799578505110418 ], [ -122.39725156444139, 37.799401198172731 ], [ -122.397069823583166, 37.79919810547964 ], [ -122.39674205306757, 37.798834607866056 ], [ -122.396702784737215, 37.798855840868825 ], [ -122.396669034992286, 37.798822047566397 ], [ -122.396624664146429, 37.798846796498019 ], [ -122.396609180236553, 37.798850479143326 ], [ -122.396595251158345, 37.798847269554258 ], [ -122.396579311359616, 37.798833104740751 ], [ -122.395709347701867, 37.79933397933474 ], [ -122.395681634538477, 37.799401037179429 ], [ -122.395581007954107, 37.799459652414193 ], [ -122.395491073098484, 37.799462471471649 ], [ -122.39520444855259, 37.799625711063314 ], [ -122.394470973718072, 37.800049529845779 ], [ -122.394485183177821, 37.80006372301127 ], [ -122.394463863656298, 37.80011007561265 ], [ -122.394495883468409, 37.800143897322769 ], [ -122.394436254505337, 37.800181251519263 ], [ -122.394338714865782, 37.800157409688907 ], [ -122.39425176311174, 37.800073652886503 ], [ -122.394244541007424, 37.799994109133792 ], [ -122.39430588261277, 37.79995604107372 ], [ -122.39433954456824, 37.799986402561352 ], [ -122.394405256913004, 37.79998397351315 ], [ -122.394419466347642, 37.799998166686734 ], [ -122.395383240540369, 37.799442229567333 ], [ -122.3954446687179, 37.79940759283992 ], [ -122.395460481077649, 37.799348967284097 ], [ -122.395564480002861, 37.799286864055659 ], [ -122.395650954616428, 37.799284100562168 ], [ -122.396137291028239, 37.799011206820815 ], [ -122.39652596834469, 37.798777651667436 ], [ -122.396513506102295, 37.798764117365188 ], [ -122.396508017858096, 37.798752531345663 ], [ -122.396511162609784, 37.798740120038758 ], [ -122.396521298172757, 37.798730342643047 ], [ -122.396562296308161, 37.798709081605075 ], [ -122.396530276519627, 37.798675260441449 ], [ -122.396574647301449, 37.798650511819105 ], [ -122.396522999163949, 37.798593657491452 ], [ -122.396499841034597, 37.79856793447253 ], [ -122.396467423337157, 37.798586310883579 ], [ -122.396357190239343, 37.798472027219738 ], [ -122.396393032843889, 37.798452222590186 ], [ -122.395860656588496, 37.797870888391557 ], [ -122.395839947322898, 37.79787328122778 ], [ -122.395814065475506, 37.797876444215788 ], [ -122.395788200806479, 37.797880293644518 ], [ -122.395762353661098, 37.797884829508355 ], [ -122.395738254199486, 37.7978900242679 ], [ -122.395712442099452, 37.797895933002444 ], [ -122.395664348290325, 37.797910440317423 ], [ -122.395640318568425, 37.797918380825799 ], [ -122.395616307044421, 37.797927007209815 ], [ -122.39557006603053, 37.797946292034375 ], [ -122.395547836878862, 37.797956950195463 ], [ -122.395525625244971, 37.797968294793179 ], [ -122.395505143760289, 37.797979611576075 ], [ -122.393842000273821, 37.798938215357374 ], [ -122.393826533722603, 37.798942584352829 ], [ -122.39381087421539, 37.798939401951962 ], [ -122.393557994085199, 37.798661220282753 ], [ -122.393552505963697, 37.798649634131031 ], [ -122.393557381363038, 37.798637194571512 ], [ -122.395454327884067, 37.797548480176857 ], [ -122.395493853667872, 37.797469558194479 ], [ -122.395422650268614, 37.797392416327632 ], [ -122.395305000587612, 37.797394307309993 ], [ -122.395131013605095, 37.797494618186263 ], [ -122.394995545751499, 37.797340909474201 ], [ -122.395176347980751, 37.797236368651362 ], [ -122.395203657816268, 37.797153523030403 ], [ -122.395175134630833, 37.797121018758673 ], [ -122.395015962104765, 37.797123576784635 ], [ -122.394842063300572, 37.797227319439131 ], [ -122.394877471902745, 37.797258339703205 ], [ -122.393211663425149, 37.798247880172283 ], [ -122.393197909634068, 37.798251534593128 ], [ -122.393182250998592, 37.798248352371843 ], [ -122.392924377254829, 37.797977803222231 ], [ -122.392918871782612, 37.79796553059834 ], [ -122.392922034593937, 37.797953805551998 ], [ -122.392933760337485, 37.797938509440698 ], [ -122.393022573378389, 37.797891760094423 ], [ -122.393418332763261, 37.797664281733844 ], [ -122.39349443929828, 37.797594387482981 ], [ -122.393614723501102, 37.797492194551531 ], [ -122.39379620770903, 37.797346441866999 ], [ -122.393858891962495, 37.797293244534764 ], [ -122.39453577454303, 37.796890939592352 ], [ -122.394518070397197, 37.796875429409333 ], [ -122.394797677744066, 37.796708870398604 ], [ -122.394681926486655, 37.796581626428896 ], [ -122.394272580881463, 37.796818941592662 ], [ -122.39351702175675, 37.797258217667746 ], [ -122.39355080472113, 37.797293385033349 ], [ -122.39316857384685, 37.797508285701419 ], [ -122.393092042374221, 37.797425733952373 ], [ -122.393468994757654, 37.797207484670842 ], [ -122.393490421626595, 37.797233236341413 ], [ -122.39412658804784, 37.796863176781166 ], [ -122.393932453058198, 37.796648603921177 ], [ -122.393850369991199, 37.796687691964301 ], [ -122.393741908884792, 37.796574751186853 ], [ -122.393880385256736, 37.796507288896663 ], [ -122.393597295890373, 37.796198002709581 ], [ -122.393523863725633, 37.796236951615114 ], [ -122.393397437145097, 37.796098203833878 ], [ -122.393481197043371, 37.796057028727645 ], [ -122.393264277786542, 37.795831146645604 ], [ -122.39319930347132, 37.795862405337601 ], [ -122.393014017140644, 37.7956552428926 ], [ -122.39305487457618, 37.795628491529783 ], [ -122.392997761288825, 37.795560736430133 ], [ -122.392816418294032, 37.795643993697439 ], [ -122.391589731865537, 37.796205501614423 ], [ -122.391196361068637, 37.795779176166889 ], [ -122.39241116638668, 37.794819563891082 ], [ -122.39226709396803, 37.794667363398794 ], [ -122.391941265746169, 37.794853886332461 ], [ -122.391649609982679, 37.794547480215279 ], [ -122.391828732520565, 37.794445031825084 ], [ -122.391802064349278, 37.794417304057546 ], [ -122.391945361729881, 37.794335345459139 ], [ -122.391890260341384, 37.794278544568918 ], [ -122.392507683750154, 37.79377708635252 ], [ -122.39249932896719, 37.793768814133983 ], [ -122.392702063215523, 37.793608792659974 ], [ -122.39270797067924, 37.793614415765255 ], [ -122.394150899798674, 37.794987788593353 ], [ -122.394745701490038, 37.794478274267938 ], [ -122.394745733667804, 37.794478246556643 ], [ -122.394747579547172, 37.794479718347191 ], [ -122.394971722038662, 37.794300351169447 ], [ -122.395317307728533, 37.794023797689903 ], [ -122.39533276386878, 37.794011429145591 ], [ -122.395622922555773, 37.793779228585429 ], [ -122.395983670970253, 37.793501461560965 ], [ -122.396302004290646, 37.793256350429786 ], [ -122.396302004629632, 37.793256350149633 ], [ -122.396376076969489, 37.793198086984006 ], [ -122.396504486670068, 37.793097082520163 ], [ -122.39738344591872, 37.792405521295422 ], [ -122.397840810091907, 37.792047595331439 ], [ -122.39826444614279, 37.791716060417308 ], [ -122.398264448861653, 37.791716058450703 ], [ -122.399148598683425, 37.79101664916432 ], [ -122.39914859901539, 37.791016648609592 ], [ -122.399148705293825, 37.791016743863253 ], [ -122.399148704954868, 37.791016744143391 ], [ -122.399494165511513, 37.791324916192721 ], [ -122.399572029409299, 37.791326533708947 ], [ -122.399763353084495, 37.792257948007119 ], [ -122.399958735737897, 37.793209101900771 ], [ -122.400058259594957, 37.793693587424592 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":10,"ZIP_CODE":94104,"ID":94104},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.400067228055164, 37.790303858609981 ], [ -122.401375490979433, 37.789264321921429 ], [ -122.4018939793784, 37.788856309111516 ], [ -122.402065730098272, 37.788721152097366 ], [ -122.401960433993054, 37.788922171387867 ], [ -122.401997470431979, 37.789102650051042 ], [ -122.402189645264357, 37.790039096806382 ], [ -122.402532679537515, 37.789995540560724 ], [ -122.40273920526738, 37.789969317269424 ], [ -122.403841563913829, 37.789829338872408 ], [ -122.403934377264903, 37.790286026286218 ], [ -122.404030724679231, 37.790760095776051 ], [ -122.404219835191427, 37.791690583910508 ], [ -122.40441842761642, 37.79263865633952 ], [ -122.404613389070732, 37.793564931583006 ], [ -122.404613421373455, 37.793565084338127 ], [ -122.404370134182003, 37.793598168205968 ], [ -122.404016114128936, 37.793646309359175 ], [ -122.40308689535884, 37.793763518993806 ], [ -122.402957360909014, 37.793779857671261 ], [ -122.40215951272063, 37.793880489466119 ], [ -122.402133431503088, 37.793883778773662 ], [ -122.401314504615144, 37.793987063215781 ], [ -122.400149325778898, 37.794134165695652 ], [ -122.400148778887171, 37.794134234665414 ], [ -122.400058259594957, 37.793693587424592 ], [ -122.399958735737897, 37.793209101900771 ], [ -122.399763353084495, 37.792257948007119 ], [ -122.399572029409299, 37.791326533708947 ], [ -122.399494165511513, 37.791324916192721 ], [ -122.399148704954868, 37.791016744143391 ], [ -122.399148705293825, 37.791016743863253 ], [ -122.39914859901539, 37.791016648609592 ], [ -122.399222136170906, 37.790956214990921 ], [ -122.399480001759599, 37.790744297277485 ], [ -122.399919790020746, 37.790414442896498 ], [ -122.400024135710936, 37.790336179680637 ], [ -122.400067228055164, 37.790303858609981 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":11,"ZIP_CODE":94108,"ID":94108},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.404219835191427, 37.791690583910508 ], [ -122.404030724679231, 37.790760095776051 ], [ -122.403934377264903, 37.790286026286218 ], [ -122.403841563913829, 37.789829338872408 ], [ -122.40273920526738, 37.789969317269424 ], [ -122.402532679537515, 37.789995540560724 ], [ -122.402189645264357, 37.790039096806382 ], [ -122.401997470431979, 37.789102650051042 ], [ -122.401960433993054, 37.788922171387867 ], [ -122.402065730098272, 37.788721152097366 ], [ -122.402404665507532, 37.788463925757384 ], [ -122.402903089488873, 37.788085654318181 ], [ -122.40290309900054, 37.788085647297414 ], [ -122.403239953883428, 37.787802352067843 ], [ -122.403430800369534, 37.787641848645734 ], [ -122.403925775648347, 37.787250481113581 ], [ -122.404583316787637, 37.786730565897571 ], [ -122.404583317133643, 37.786730565891986 ], [ -122.404583317818549, 37.786730565606241 ], [ -122.4045836593057, 37.786730668317922 ], [ -122.404583659644615, 37.786730668037741 ], [ -122.404849901045083, 37.78680995410096 ], [ -122.405346079234604, 37.786747618574395 ], [ -122.40639887788349, 37.786615347203238 ], [ -122.408036236552462, 37.786409613336666 ], [ -122.408226725993813, 37.78735926231473 ], [ -122.408401550373739, 37.788293193957799 ], [ -122.408595045382015, 37.789225614946417 ], [ -122.408595692092703, 37.789225606675593 ], [ -122.410242438640608, 37.789016337723744 ], [ -122.411885657146456, 37.788807543703371 ], [ -122.412075867445836, 37.789739906579548 ], [ -122.412154318600955, 37.79012444884593 ], [ -122.412266187164306, 37.790672783986288 ], [ -122.413915879652706, 37.790463115032836 ], [ -122.414107303557273, 37.79141647884336 ], [ -122.414293264567746, 37.792342610236801 ], [ -122.414381908270244, 37.792784070108439 ], [ -122.414470074462415, 37.79322314646798 ], [ -122.414647632176155, 37.794109807074861 ], [ -122.414825631965456, 37.794988155997579 ], [ -122.413187771447625, 37.795197816725128 ], [ -122.412335878555311, 37.795306857217497 ], [ -122.411893657029495, 37.795363458292385 ], [ -122.411541531721369, 37.795408526524874 ], [ -122.411081667103218, 37.795467382264249 ], [ -122.40989875147848, 37.795616424537307 ], [ -122.40954722057397, 37.795660707190791 ], [ -122.409343544204319, 37.795686363949223 ], [ -122.409077868767497, 37.795719830108119 ], [ -122.409075520379659, 37.795720125786943 ], [ -122.408743234497422, 37.795761981540487 ], [ -122.408704654154022, 37.795766841471867 ], [ -122.408253202051654, 37.795823706218044 ], [ -122.40779730388941, 37.795880962818103 ], [ -122.407563768850565, 37.795910291726024 ], [ -122.407432089697608, 37.795926828732469 ], [ -122.407319877605971, 37.795940921047873 ], [ -122.407083680819795, 37.795970583772274 ], [ -122.406652352369846, 37.796024750165536 ], [ -122.406350669109713, 37.796061968858353 ], [ -122.406224736410849, 37.796077505131322 ], [ -122.405862652252878, 37.796122174218517 ], [ -122.405142977212691, 37.796210954635839 ], [ -122.404957208224928, 37.795326691921687 ], [ -122.404875610619072, 37.794859533373135 ], [ -122.404796472837063, 37.794453004909116 ], [ -122.404710582177955, 37.794021380197684 ], [ -122.404613421373455, 37.793565084338127 ], [ -122.404613389070732, 37.793564931583006 ], [ -122.40441842761642, 37.79263865633952 ], [ -122.404219835191427, 37.791690583910508 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":12,"ZIP_CODE":94103,"ID":94103},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.403877699904385, 37.770062866265505 ], [ -122.403615112128733, 37.769893190404822 ], [ -122.403406518421917, 37.769807099957397 ], [ -122.403037758616776, 37.769828657390953 ], [ -122.402926809989424, 37.76864812762463 ], [ -122.401962350744, 37.768706209224241 ], [ -122.401842503677628, 37.76743077711658 ], [ -122.400877239583821, 37.76748837440357 ], [ -122.400680751363893, 37.767503407870436 ], [ -122.4004285874814, 37.76730030349627 ], [ -122.399677637243116, 37.766695444602661 ], [ -122.39980174760619, 37.766587745781216 ], [ -122.399760960198876, 37.766250252443854 ], [ -122.40075504647362, 37.766190486570189 ], [ -122.401720515816834, 37.766132520250999 ], [ -122.401604204317508, 37.764894634517518 ], [ -122.401598999326723, 37.764839236400867 ], [ -122.402563396844656, 37.764781034314389 ], [ -122.403527034519726, 37.764722870371436 ], [ -122.404496977488066, 37.764664317561468 ], [ -122.404841911264157, 37.764643492872132 ], [ -122.405089602982216, 37.764628538373131 ], [ -122.405089603673972, 37.764628538361961 ], [ -122.405463420216606, 37.764605967981389 ], [ -122.406005237363416, 37.764573252226405 ], [ -122.406429152848446, 37.764547653527842 ], [ -122.406429154577822, 37.764547653499882 ], [ -122.406859230067056, 37.764521681123377 ], [ -122.407419737953433, 37.764487829924626 ], [ -122.407534229395537, 37.765783299286987 ], [ -122.408544242939584, 37.765722599679115 ], [ -122.410486689274492, 37.765605838622655 ], [ -122.411455262151748, 37.765547605227276 ], [ -122.412416426589019, 37.765489809283601 ], [ -122.413105243007919, 37.765447608576679 ], [ -122.415308388038014, 37.765314639624691 ], [ -122.416387522888556, 37.765249494040667 ], [ -122.41748659577631, 37.765183134636899 ], [ -122.418579138459435, 37.765117159398407 ], [ -122.418698425401715, 37.765109955145007 ], [ -122.419668972681833, 37.765051337054757 ], [ -122.420482492120144, 37.765002197009743 ], [ -122.420580607922048, 37.764996270018614 ], [ -122.420901270224292, 37.764976898858535 ], [ -122.421239593012103, 37.764956459387825 ], [ -122.421381475659516, 37.764947887797014 ], [ -122.421886445840627, 37.764917378530825 ], [ -122.42285341443899, 37.764858950163855 ], [ -122.423112421134832, 37.764843298770074 ], [ -122.424102683503691, 37.764783452170008 ], [ -122.424574375550648, 37.764754942537614 ], [ -122.426381062356072, 37.764645726997848 ], [ -122.426381062758907, 37.764645729188807 ], [ -122.426381708477521, 37.764645690891633 ], [ -122.426490697526233, 37.765773605772118 ], [ -122.426518991136163, 37.766066400051031 ], [ -122.426538465047457, 37.766267922745747 ], [ -122.426572006355102, 37.766615035704866 ], [ -122.426615944414863, 37.767069730096857 ], [ -122.426693183296933, 37.76786901846797 ], [ -122.426693183304053, 37.767869018742559 ], [ -122.426902347012131, 37.769049368265463 ], [ -122.426309438735913, 37.769602597220121 ], [ -122.424852598682307, 37.770747745074537 ], [ -122.423971653706317, 37.771401668385572 ], [ -122.423707555870649, 37.771638138620823 ], [ -122.42361952356508, 37.771716961429995 ], [ -122.423479344850293, 37.771827141530693 ], [ -122.423258913662679, 37.772000399157754 ], [ -122.422619690282815, 37.772502817311128 ], [ -122.422169936976104, 37.77285593639396 ], [ -122.421941247178026, 37.773036050819961 ], [ -122.421284370393934, 37.77356039048216 ], [ -122.421008229272687, 37.773780811646674 ], [ -122.420910608715644, 37.773852419132908 ], [ -122.420699239041511, 37.774007568561714 ], [ -122.420698854806645, 37.774007872313192 ], [ -122.42069877383058, 37.774007805509001 ], [ -122.420254278900828, 37.774358674888319 ], [ -122.420254205644639, 37.774358732668077 ], [ -122.419544527888206, 37.774918988504218 ], [ -122.419256088091217, 37.775146694295351 ], [ -122.419256086565611, 37.775146688826375 ], [ -122.419255604623004, 37.775147068879761 ], [ -122.419255606501622, 37.775147074617692 ], [ -122.419255600381447, 37.775147078837719 ], [ -122.418683590110874, 37.775586568849455 ], [ -122.417757669457401, 37.776334062520824 ], [ -122.417501462863584, 37.776540893581355 ], [ -122.416757677810395, 37.777126789723972 ], [ -122.416291701725271, 37.777493842582118 ], [ -122.416291701393504, 37.777493843136881 ], [ -122.416024573316548, 37.777713893977598 ], [ -122.415925978170975, 37.777795112873314 ], [ -122.414741221622947, 37.778719429321896 ], [ -122.412512255967954, 37.78047851222005 ], [ -122.412243715889375, 37.780689421480552 ], [ -122.411972359306191, 37.780902540886757 ], [ -122.411972358960256, 37.78090254089237 ], [ -122.411625130786987, 37.781189627190479 ], [ -122.410716598656492, 37.781899054565059 ], [ -122.410292026384454, 37.782230575136197 ], [ -122.40895215871069, 37.783287852576514 ], [ -122.408597310055299, 37.783569788681966 ], [ -122.408066548174432, 37.783991486066526 ], [ -122.408066547510714, 37.783991487176031 ], [ -122.407625723544982, 37.784337071806426 ], [ -122.406821367207598, 37.78496763543707 ], [ -122.405831011063668, 37.78574398921409 ], [ -122.405371564397683, 37.786107287119592 ], [ -122.404583317818549, 37.786730565606241 ], [ -122.404583317133643, 37.786730565891986 ], [ -122.404583316787637, 37.786730565897571 ], [ -122.403925775648347, 37.787250481113581 ], [ -122.403430800369534, 37.787641848645734 ], [ -122.403342641535644, 37.787274627660381 ], [ -122.403028734856406, 37.78702485040828 ], [ -122.403028193190352, 37.787024418822838 ], [ -122.402575227394536, 37.786678208153539 ], [ -122.402025419766176, 37.786248152290575 ], [ -122.401489835489045, 37.785829214187501 ], [ -122.401480059865179, 37.785821567351917 ], [ -122.400998469557948, 37.785444857061968 ], [ -122.400994549885382, 37.785441790992316 ], [ -122.400468483886854, 37.785030285141588 ], [ -122.399369533643153, 37.785899247741973 ], [ -122.397811613142864, 37.784666586003652 ], [ -122.398930331092998, 37.783784933304034 ], [ -122.399891477967842, 37.783025880124256 ], [ -122.400019020063766, 37.782925153640136 ], [ -122.400374366843309, 37.782644515545172 ], [ -122.401159718585049, 37.782024266952142 ], [ -122.403387209275081, 37.78026497235011 ], [ -122.404431250807633, 37.779440334605447 ], [ -122.405615266425855, 37.778505104539292 ], [ -122.405068508898097, 37.778068981419388 ], [ -122.404605505853894, 37.777699659794813 ], [ -122.404070256642925, 37.777272702482797 ], [ -122.403673439982725, 37.776956165214415 ], [ -122.403505778866929, 37.776822422431877 ], [ -122.40337073826143, 37.776714700215486 ], [ -122.402524096584528, 37.776039321403807 ], [ -122.400981567656032, 37.774808775969753 ], [ -122.400592319049849, 37.774498244536282 ], [ -122.400212340771517, 37.774195105423317 ], [ -122.400212340411557, 37.77419510487973 ], [ -122.399433130909728, 37.773573455617395 ], [ -122.401656680421155, 37.7718171255028 ], [ -122.403877699904385, 37.770062866265505 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":13,"ZIP_CODE":94115,"ID":94115},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.447679208068394, 37.79170289872647 ], [ -122.44720637942703, 37.791763091830468 ], [ -122.446299547924625, 37.791878529215651 ], [ -122.446299573716246, 37.791878694429421 ], [ -122.446446033268856, 37.792810866507708 ], [ -122.446446456540414, 37.792813716046261 ], [ -122.446587034424141, 37.793765298555968 ], [ -122.445035345747925, 37.79396273368863 ], [ -122.443384198876302, 37.794172877898092 ], [ -122.441712771485612, 37.794385578392699 ], [ -122.440870170501768, 37.794492795601883 ], [ -122.440868123190498, 37.794493055920753 ], [ -122.440045216960385, 37.794597761146619 ], [ -122.438402484723895, 37.794806973138577 ], [ -122.436760975027326, 37.795016021968365 ], [ -122.435113289920963, 37.795225833115033 ], [ -122.433469062960725, 37.795435179810816 ], [ -122.431827832563371, 37.79564412085616 ], [ -122.430182832162615, 37.795853517593606 ], [ -122.429989276973558, 37.794894937362344 ], [ -122.429803981887915, 37.793977244761322 ], [ -122.429625242377327, 37.793098475947545 ], [ -122.429447192175289, 37.79221689778025 ], [ -122.429269817037863, 37.791338636935983 ], [ -122.429092268257477, 37.790459499306614 ], [ -122.428905308896674, 37.789533740830485 ], [ -122.428712111452299, 37.788577067507021 ], [ -122.428525011003728, 37.78765056176524 ], [ -122.428335613076769, 37.786712655890966 ], [ -122.428241829261111, 37.786248226022003 ], [ -122.428241496400901, 37.78624657727314 ], [ -122.428148186422831, 37.785784488173462 ], [ -122.427988927379005, 37.784953879052303 ], [ -122.427778871361184, 37.783924735360486 ], [ -122.427584325166535, 37.78298604740867 ], [ -122.427490665181679, 37.782522998381459 ], [ -122.427396397680198, 37.782056939506091 ], [ -122.42720275579525, 37.781117127328834 ], [ -122.427016756808811, 37.780193030481158 ], [ -122.42868554474839, 37.779980201690215 ], [ -122.430233236584385, 37.779782794230314 ], [ -122.431951802315041, 37.779564148987781 ], [ -122.433595938040227, 37.779354585436536 ], [ -122.435241012398947, 37.779144878458894 ], [ -122.436884629197735, 37.778937753600381 ], [ -122.437707163233824, 37.778832380147421 ], [ -122.43855227772093, 37.778724107938281 ], [ -122.440213334218711, 37.778511463388014 ], [ -122.441865640580161, 37.778299553615973 ], [ -122.441865640558632, 37.778299552792262 ], [ -122.441865967212379, 37.778299511152262 ], [ -122.441865967226732, 37.778299511701405 ], [ -122.443506919728407, 37.778089213415292 ], [ -122.445155752336433, 37.777886506805444 ], [ -122.446846469920573, 37.777669108909684 ], [ -122.447039806751391, 37.778622307248391 ], [ -122.447351927163439, 37.780152061280916 ], [ -122.447517982733274, 37.781069510753063 ], [ -122.447576361567485, 37.781175778551805 ], [ -122.447655108274333, 37.781537309189886 ], [ -122.447637300982407, 37.781719177617617 ], [ -122.447450898997985, 37.782195217632704 ], [ -122.447301513844337, 37.78239164221629 ], [ -122.447283893261542, 37.782434393634787 ], [ -122.447225622636566, 37.782575775503396 ], [ -122.447173033991248, 37.782710075581413 ], [ -122.447149436147441, 37.783030677550911 ], [ -122.447549635601661, 37.784906798974511 ], [ -122.447578549915917, 37.784998355250835 ], [ -122.447620107068687, 37.785083635258417 ], [ -122.447621599012791, 37.785194684567394 ], [ -122.447605133356163, 37.785275579171099 ], [ -122.447533801639068, 37.785411415165207 ], [ -122.446849274413296, 37.786186897081585 ], [ -122.446738337622591, 37.786243163870765 ], [ -122.446610465639836, 37.786302298311156 ], [ -122.446792779960703, 37.787261853518181 ], [ -122.4469741664482, 37.788186460801001 ], [ -122.448656220796209, 37.787977164570449 ], [ -122.448835781299294, 37.788856511426609 ], [ -122.449011564525605, 37.789726786022129 ], [ -122.449189583391288, 37.790608108274284 ], [ -122.449367313308201, 37.791487980191171 ], [ -122.447679208068394, 37.79170289872647 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":14,"ZIP_CODE":94102,"ID":94102},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.419255600381447, 37.775147078837719 ], [ -122.419255606501622, 37.775147074617692 ], [ -122.419255604623004, 37.775147068879761 ], [ -122.419256086565611, 37.775146688826375 ], [ -122.419256088091217, 37.775146694295351 ], [ -122.419544527888206, 37.774918988504218 ], [ -122.420254205644639, 37.774358732668077 ], [ -122.420254278900828, 37.774358674888319 ], [ -122.42069877383058, 37.774007805509001 ], [ -122.420698854806645, 37.774007872313192 ], [ -122.420699239041511, 37.774007568561714 ], [ -122.420910608715644, 37.773852419132908 ], [ -122.421008229272687, 37.773780811646674 ], [ -122.421284370393934, 37.77356039048216 ], [ -122.421941247178026, 37.773036050819961 ], [ -122.422169936976104, 37.77285593639396 ], [ -122.422619690282815, 37.772502817311128 ], [ -122.423258913662679, 37.772000399157754 ], [ -122.423479344850293, 37.771827141530693 ], [ -122.42361952356508, 37.771716961429995 ], [ -122.423707555870649, 37.771638138620823 ], [ -122.423971653706317, 37.771401668385572 ], [ -122.424852598682307, 37.770747745074537 ], [ -122.426309438735913, 37.769602597220121 ], [ -122.426683978032827, 37.769533626427062 ], [ -122.428218351470321, 37.769440923680406 ], [ -122.428428952948465, 37.770451409238284 ], [ -122.428426180541749, 37.770451760600665 ], [ -122.428520173517541, 37.770917853912216 ], [ -122.428614043687816, 37.771383330257258 ], [ -122.428708105393241, 37.771849753810166 ], [ -122.428802101899663, 37.772315846507482 ], [ -122.428990051967787, 37.773247800757233 ], [ -122.42917834319843, 37.774181422747475 ], [ -122.429178342852524, 37.774181422753124 ], [ -122.429178383795261, 37.774181626728783 ], [ -122.429178384487102, 37.774181626717471 ], [ -122.429272630354163, 37.774648924607646 ], [ -122.429365859793393, 37.775111180032617 ], [ -122.42955405641294, 37.77604428584678 ], [ -122.429622603726443, 37.776331628240193 ], [ -122.429626330769736, 37.776513151917612 ], [ -122.429686883301301, 37.776976022351889 ], [ -122.429849199803343, 37.777919295570904 ], [ -122.430047265291023, 37.778850928515844 ], [ -122.430233236584385, 37.779782794230314 ], [ -122.42868554474839, 37.779980201690215 ], [ -122.427016756808811, 37.780193030481158 ], [ -122.42720275579525, 37.781117127328834 ], [ -122.427396397680198, 37.782056939506091 ], [ -122.424108200948226, 37.782477051425644 ], [ -122.422597534917514, 37.782659914421728 ], [ -122.422463744273344, 37.782685368786026 ], [ -122.420817002825672, 37.782894121654586 ], [ -122.420816620257895, 37.78289417046458 ], [ -122.419181703937824, 37.783101400150407 ], [ -122.417528773439201, 37.78331088958533 ], [ -122.415882538254209, 37.783515640872785 ], [ -122.414241572919337, 37.783723783021379 ], [ -122.414430198422409, 37.784657140813145 ], [ -122.414617207572036, 37.785582474657787 ], [ -122.414806647966373, 37.786519819325378 ], [ -122.414995423274036, 37.787453843784689 ], [ -122.414995029297003, 37.787453894134082 ], [ -122.415185269301574, 37.788387930678724 ], [ -122.413541442066688, 37.788598204045492 ], [ -122.411885657146456, 37.788807543703371 ], [ -122.410242438640608, 37.789016337723744 ], [ -122.408595692092703, 37.789225606675593 ], [ -122.408595045382015, 37.789225614946417 ], [ -122.408401550373739, 37.788293193957799 ], [ -122.408226725993813, 37.78735926231473 ], [ -122.408036236552462, 37.786409613336666 ], [ -122.40639887788349, 37.786615347203238 ], [ -122.405346079234604, 37.786747618574395 ], [ -122.404849901045083, 37.78680995410096 ], [ -122.404583659644615, 37.786730668037741 ], [ -122.4045836593057, 37.786730668317922 ], [ -122.404583317818549, 37.786730565606241 ], [ -122.405371564397683, 37.786107287119592 ], [ -122.405831011063668, 37.78574398921409 ], [ -122.406821367207598, 37.78496763543707 ], [ -122.407625723544982, 37.784337071806426 ], [ -122.408066547510714, 37.783991487176031 ], [ -122.408066548174432, 37.783991486066526 ], [ -122.408597310055299, 37.783569788681966 ], [ -122.40895215871069, 37.783287852576514 ], [ -122.410292026384454, 37.782230575136197 ], [ -122.410716598656492, 37.781899054565059 ], [ -122.411625130786987, 37.781189627190479 ], [ -122.411972358960256, 37.78090254089237 ], [ -122.411972359306191, 37.780902540886757 ], [ -122.412243715889375, 37.780689421480552 ], [ -122.412512255967954, 37.78047851222005 ], [ -122.413308361492682, 37.779850246537862 ], [ -122.414741221622947, 37.778719429321896 ], [ -122.415925978170975, 37.777795112873314 ], [ -122.416024573316548, 37.777713893977598 ], [ -122.416291701393504, 37.777493843136881 ], [ -122.416291701725271, 37.777493842582118 ], [ -122.416757677810395, 37.777126789723972 ], [ -122.417501462863584, 37.776540893581355 ], [ -122.417757669457401, 37.776334062520824 ], [ -122.418683590110874, 37.775586568849455 ], [ -122.419255600381447, 37.775147078837719 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":15,"ZIP_CODE":94124,"ID":94124},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.398991043085772, 37.715338797679301 ], [ -122.398953101659146, 37.715385829745912 ], [ -122.398839335741798, 37.715526852955328 ], [ -122.398735527529269, 37.715727131371494 ], [ -122.398656056102226, 37.71588045500463 ], [ -122.398643015232707, 37.715917722950913 ], [ -122.398565370170317, 37.716139616445538 ], [ -122.398550700112352, 37.7161815389411 ], [ -122.398499278161879, 37.716543657492224 ], [ -122.398561414050022, 37.716897923924947 ], [ -122.398668885707423, 37.717503589023465 ], [ -122.398686680058731, 37.717603871431201 ], [ -122.39871606167118, 37.717769450850419 ], [ -122.398759937061044, 37.718047446028777 ], [ -122.398787867001658, 37.718224410399863 ], [ -122.398799134608808, 37.718275024173522 ], [ -122.398913161799925, 37.718792447247658 ], [ -122.398923285260594, 37.718836507697276 ], [ -122.398942440206895, 37.718921151552976 ], [ -122.398943601880902, 37.718926286066001 ], [ -122.399066465573654, 37.719469200866385 ], [ -122.399125486878972, 37.719730004239857 ], [ -122.399208340593788, 37.719991530079234 ], [ -122.399309038031902, 37.720278334103305 ], [ -122.399419264352986, 37.720532021245042 ], [ -122.399600300155441, 37.720920363637823 ], [ -122.399830553211288, 37.721427080386505 ], [ -122.399925016822507, 37.721517272170509 ], [ -122.40038213245046, 37.722633285332655 ], [ -122.400661931084002, 37.723316373994798 ], [ -122.400784747286778, 37.723616209251418 ], [ -122.40078474798517, 37.723616209514844 ], [ -122.401182917574161, 37.724588254281116 ], [ -122.401471218295981, 37.725516183407578 ], [ -122.401474642450822, 37.725528485745301 ], [ -122.401822425920514, 37.726775260854211 ], [ -122.401875118236148, 37.726964759399728 ], [ -122.402039596395539, 37.727554690472438 ], [ -122.402105120777605, 37.727789703519925 ], [ -122.402209197740476, 37.728101973566574 ], [ -122.402752244737584, 37.729357163240891 ], [ -122.403021622188092, 37.729901901370539 ], [ -122.403400462440644, 37.730658352585962 ], [ -122.403961731325225, 37.731610333558521 ], [ -122.40405482060109, 37.731789516245591 ], [ -122.40465709692171, 37.732948781873532 ], [ -122.404657097641305, 37.732948782960683 ], [ -122.404878800551302, 37.733336356125804 ], [ -122.405096042524178, 37.733716127227488 ], [ -122.405494571184249, 37.734287050530888 ], [ -122.406294659725731, 37.735306888886043 ], [ -122.406454646881144, 37.735510813404687 ], [ -122.406618861734884, 37.735896873766244 ], [ -122.40670383539134, 37.73630860402433 ], [ -122.406910504104971, 37.737965866913434 ], [ -122.406900092501772, 37.738009155282221 ], [ -122.406867742024218, 37.738143654094841 ], [ -122.406895428755547, 37.738323651840822 ], [ -122.406915744052654, 37.738455725148341 ], [ -122.40693392611557, 37.738601770051126 ], [ -122.406945393527934, 37.738693880058896 ], [ -122.406939830707117, 37.738876165961258 ], [ -122.406936851773693, 37.739087891690275 ], [ -122.406930338448149, 37.739188255204461 ], [ -122.40692734433064, 37.739234393770168 ], [ -122.406923419099328, 37.739294876190314 ], [ -122.406917382338506, 37.739360326809205 ], [ -122.40691098434678, 37.739429695993088 ], [ -122.406910847801768, 37.73943120901172 ], [ -122.406977761294414, 37.739566302699039 ], [ -122.406889400847547, 37.739668564915668 ], [ -122.407641980575562, 37.73960607595005 ], [ -122.407891817991583, 37.739621065115479 ], [ -122.407910235902733, 37.739622169745928 ], [ -122.408137030577961, 37.739635775942595 ], [ -122.408114071971212, 37.739818086787388 ], [ -122.408049229318891, 37.740339110042903 ], [ -122.407964646391505, 37.740662552272049 ], [ -122.407846654253319, 37.741024367104636 ], [ -122.407757062965644, 37.741253133394146 ], [ -122.407625696256517, 37.741528038897464 ], [ -122.407448073794797, 37.741860521932459 ], [ -122.407209491524853, 37.742235666028684 ], [ -122.407179681106143, 37.742274728523746 ], [ -122.406881612449212, 37.742665295031905 ], [ -122.406149889909912, 37.743534947555823 ], [ -122.406047831839984, 37.743656241756561 ], [ -122.405778655290121, 37.743989539741165 ], [ -122.405747110957691, 37.744028598841339 ], [ -122.405475695814175, 37.744427001636382 ], [ -122.405444172050537, 37.744486004341084 ], [ -122.405202201087945, 37.744938889063008 ], [ -122.405179630488661, 37.744981134097749 ], [ -122.405051159825348, 37.745369647465395 ], [ -122.40491012189095, 37.745826558312224 ], [ -122.40472494664624, 37.746505061967419 ], [ -122.404496510435962, 37.747208430674682 ], [ -122.404390053649081, 37.747536214374357 ], [ -122.404249303912664, 37.747969580021021 ], [ -122.404105247604519, 37.748421906188959 ], [ -122.404104297626958, 37.748424888760844 ], [ -122.404103617259366, 37.748427025595028 ], [ -122.404051662308461, 37.74859015799958 ], [ -122.403990987296382, 37.74878066971192 ], [ -122.403865672790147, 37.749174139069758 ], [ -122.403826366530197, 37.749298003881435 ], [ -122.403783562755194, 37.749432891426196 ], [ -122.403667613571599, 37.749458113882532 ], [ -122.403568849778438, 37.749475672986911 ], [ -122.403260968692152, 37.749530409553117 ], [ -122.403203674195439, 37.749534260068266 ], [ -122.402968925612569, 37.749550036933734 ], [ -122.402866309087059, 37.749478458911533 ], [ -122.402866303074774, 37.749478453789486 ], [ -122.402746245055127, 37.749375020002113 ], [ -122.402215286387033, 37.749358244852793 ], [ -122.402063015501824, 37.749396333205695 ], [ -122.40206163398004, 37.749396678541473 ], [ -122.397285415820363, 37.749684622841229 ], [ -122.396273544250747, 37.74974560058007 ], [ -122.395307862010839, 37.749803786070743 ], [ -122.395231400136637, 37.749808114846253 ], [ -122.393340265733656, 37.749915158351328 ], [ -122.393322792145199, 37.749917097944952 ], [ -122.393314555211816, 37.749918012051069 ], [ -122.392381992909165, 37.750021506018193 ], [ -122.392354048972692, 37.750025545503377 ], [ -122.392350740047519, 37.750026024134087 ], [ -122.391929934247997, 37.750086859865874 ], [ -122.391714686151033, 37.750109474739723 ], [ -122.391705979739527, 37.750110389401705 ], [ -122.391693805117924, 37.750111668488358 ], [ -122.391418367221192, 37.750140606282606 ], [ -122.390433038183829, 37.750118341633915 ], [ -122.389478017653872, 37.750145107673561 ], [ -122.388507729357968, 37.750205975353602 ], [ -122.387585270262662, 37.750263378063039 ], [ -122.387633974640565, 37.751559603455405 ], [ -122.387756280477618, 37.752835611637821 ], [ -122.386811646507837, 37.752890377320497 ], [ -122.385845701796796, 37.752946370817803 ], [ -122.38487975596891, 37.753002356118301 ], [ -122.383913808692512, 37.753058333776714 ], [ -122.383438933023925, 37.753085850281579 ], [ -122.382951309683904, 37.753114103639163 ], [ -122.382560989570067, 37.75313671714089 ], [ -122.382560765120331, 37.753136419940226 ], [ -122.381985040410456, 37.753169774197133 ], [ -122.381708677132991, 37.753185861496782 ], [ -122.38168223616799, 37.75316636834409 ], [ -122.381661069503124, 37.753150224878624 ], [ -122.381641614233217, 37.753133367358956 ], [ -122.381622142285593, 37.753115823651214 ], [ -122.381604399103537, 37.753098251789652 ], [ -122.381556374012021, 37.753046140647704 ], [ -122.381542176020147, 37.753031946080576 ], [ -122.381526284033754, 37.753019152008761 ], [ -122.381510409098041, 37.753007044663264 ], [ -122.381492804694034, 37.752994964377287 ], [ -122.381475235761897, 37.75298425724899 ], [ -122.381436673423011, 37.752964271381444 ], [ -122.381417427536135, 37.752955650919624 ], [ -122.381375546404385, 37.752941211547565 ], [ -122.381354640609899, 37.75293536475278 ], [ -122.381333752201158, 37.75293020440273 ], [ -122.381311151719544, 37.752925758105562 ], [ -122.381288586703278, 37.752922684964496 ], [ -122.381266038711004, 37.75292029772389 ], [ -122.381243508115659, 37.752918597476601 ], [ -122.381221011931387, 37.752918269852813 ], [ -122.381184718304496, 37.752919535917627 ], [ -122.381162274601664, 37.752921267347901 ], [ -122.381139865666057, 37.752924371945412 ], [ -122.381117473763211, 37.752928162992639 ], [ -122.381095099929965, 37.752932640473013 ], [ -122.381072743135178, 37.752937804677757 ], [ -122.381050368943576, 37.752942281880571 ], [ -122.381027977030755, 37.752946072910795 ], [ -122.38100556843483, 37.752949177751802 ], [ -122.38098141298515, 37.752951623194257 ], [ -122.380958968929022, 37.752953354865902 ], [ -122.380936508184703, 37.752954400073762 ], [ -122.380889821786923, 37.752955145192665 ], [ -122.380865579793621, 37.752954158637948 ], [ -122.380843066568161, 37.752953144488032 ], [ -122.380797970609038, 37.752948370381233 ], [ -122.380773676141516, 37.752945324467625 ], [ -122.380728475930468, 37.752936431643164 ], [ -122.380707587564899, 37.752931271182163 ], [ -122.380684952713352, 37.752925451862353 ], [ -122.380667539609021, 37.752920922661339 ], [ -122.380641464261203, 37.752915844962516 ], [ -122.380615405953847, 37.752911453986556 ], [ -122.380589365011275, 37.752907748904235 ], [ -122.38056161234158, 37.752904758130924 ], [ -122.38053562319034, 37.752903112662466 ], [ -122.380507905274172, 37.752901494773603 ], [ -122.380480204733729, 37.752900563326783 ], [ -122.380433519056851, 37.752901308253911 ], [ -122.380238268028847, 37.752909917328637 ], [ -122.380029271599042, 37.752922178983432 ], [ -122.379994654613483, 37.752921358032168 ], [ -122.379959933403185, 37.752916418104356 ], [ -122.379944267166053, 37.752912547382195 ], [ -122.379912864887501, 37.752902060691724 ], [ -122.379897129538875, 37.752895444712365 ], [ -122.379883105576184, 37.752888114156903 ], [ -122.37987077565819, 37.752879383675683 ], [ -122.379861869913029, 37.752869224847544 ], [ -122.379854658198184, 37.752857665545626 ], [ -122.379850887331656, 37.752845364357682 ], [ -122.379850574694558, 37.752833008281776 ], [ -122.379853720278177, 37.752820597043424 ], [ -122.37985861234651, 37.752808844946877 ], [ -122.379865250884947, 37.752797751442777 ], [ -122.379882315832674, 37.752788551525661 ], [ -122.379911450501524, 37.752777785898218 ], [ -122.379938873076583, 37.752767734300228 ], [ -122.379980076404905, 37.752755402685878 ], [ -122.379993770314556, 37.752749690431031 ], [ -122.380005682657426, 37.752741946417643 ], [ -122.380015797100285, 37.752731484181091 ], [ -122.380022435608339, 37.752720390667974 ], [ -122.380025580812656, 37.752707979430312 ], [ -122.380025233406471, 37.752694250457282 ], [ -122.380007137303139, 37.752457618747144 ], [ -122.379959987158614, 37.752029854003567 ], [ -122.379883834201038, 37.752034160974858 ], [ -122.376087329752295, 37.752248827801239 ], [ -122.375771286398191, 37.74870623521705 ], [ -122.382681120134976, 37.748282212078522 ], [ -122.384914143794745, 37.748144880283171 ], [ -122.384920340493579, 37.748184611607194 ], [ -122.384650947212847, 37.748201967818915 ], [ -122.384670831989453, 37.748303972394424 ], [ -122.384688156495528, 37.748305068501672 ], [ -122.384721007906435, 37.748304543099884 ], [ -122.384738280527714, 37.748303580123398 ], [ -122.384755518322564, 37.748301244247457 ], [ -122.384771026767297, 37.748298936027936 ], [ -122.384788230079309, 37.748295227244739 ], [ -122.384803704040692, 37.748291546118445 ], [ -122.384819160241221, 37.748287178547208 ], [ -122.384850004018801, 37.748275697588227 ], [ -122.384865408317154, 37.748269270660025 ], [ -122.384882471958647, 37.748260070280949 ], [ -122.384896077598697, 37.748250925484513 ], [ -122.384911429637739, 37.748242438930326 ], [ -122.384926799094799, 37.748234639097134 ], [ -122.384942203039174, 37.748228212438939 ], [ -122.384959354081715, 37.748222444285403 ], [ -122.384976521838055, 37.748217362314264 ], [ -122.384993725120907, 37.748213653501011 ], [ -122.385009181639873, 37.748209285899271 ], [ -122.385022856909728, 37.748202886607288 ], [ -122.385036497346164, 37.748195114416852 ], [ -122.385046610116049, 37.748184651746037 ], [ -122.385053264882572, 37.748174244389467 ], [ -122.385059867399946, 37.748161777687201 ], [ -122.385062977084218, 37.748147993403109 ], [ -122.385067868014104, 37.74813624080646 ], [ -122.38507799784864, 37.748126464861393 ], [ -122.385089892189129, 37.748118033594025 ], [ -122.38510529608827, 37.748111606639817 ], [ -122.385120787757828, 37.748108611914709 ], [ -122.385138077744813, 37.748108335328041 ], [ -122.385155454814836, 37.748111490980968 ], [ -122.385169426138901, 37.748116761295172 ], [ -122.385181755211505, 37.748125491789409 ], [ -122.385192373382367, 37.748134935830123 ], [ -122.385204720216592, 37.748144352490229 ], [ -122.385218761226213, 37.748152368866798 ], [ -122.385234478972677, 37.748158297687098 ], [ -122.385250161900544, 37.748162854157655 ], [ -122.385267521563421, 37.748165323071063 ], [ -122.385284846398747, 37.748166419359649 ], [ -122.385307218551446, 37.748161941354901 ], [ -122.385322623132453, 37.748155514361287 ], [ -122.385336298358496, 37.748149114758291 ], [ -122.385351667751635, 37.748141314869592 ], [ -122.385370425465482, 37.748130713860917 ], [ -122.385385847107514, 37.748124973312947 ], [ -122.38540299740022, 37.748119205105795 ], [ -122.385420183219992, 37.748114809781839 ], [ -122.385437403184611, 37.748111787363236 ], [ -122.385454641265781, 37.748109451653981 ], [ -122.385471896059883, 37.748107801852534 ], [ -122.385494373386805, 37.748107442216863 ], [ -122.38551168079205, 37.748107852023772 ], [ -122.385530752036246, 37.748109607060321 ], [ -122.385548128777415, 37.748112762660895 ], [ -122.385617567456492, 37.748122639221975 ], [ -122.385652269381737, 37.748126891038808 ], [ -122.385685225236202, 37.748130484058379 ], [ -122.385719909747124, 37.748134049406957 ], [ -122.385785855632406, 37.748142608581347 ], [ -122.385801503731642, 37.748145791532721 ], [ -122.385816588465147, 37.748146745865732 ], [ -122.385818828224473, 37.748146887748376 ], [ -122.385834354718469, 37.748145265826139 ], [ -122.38585155760299, 37.748141557167763 ], [ -122.385865250211054, 37.74813584422629 ], [ -122.385878890540098, 37.748128071663686 ], [ -122.3858907496043, 37.748118267698949 ], [ -122.385900844474122, 37.748107118511911 ], [ -122.385902260194882, 37.748094734766624 ], [ -122.385907133219177, 37.748082295692257 ], [ -122.385917263620584, 37.748072519389318 ], [ -122.385930956210871, 37.748066806440157 ], [ -122.385953433177363, 37.748066446722468 ], [ -122.385965727831334, 37.748073804232597 ], [ -122.385981463045027, 37.748080419401688 ], [ -122.385998909841959, 37.748086320723502 ], [ -122.38601630437492, 37.74809016297241 ], [ -122.386033664046266, 37.748092631772991 ], [ -122.386050971451041, 37.748093041500702 ], [ -122.386068226580846, 37.748091391880983 ], [ -122.386087192943762, 37.74808902841783 ], [ -122.386104378709106, 37.748084632719518 ], [ -122.386119835135943, 37.748080264972018 ], [ -122.386135256363829, 37.74807452433145 ], [ -122.386150643429275, 37.748067410781196 ], [ -122.386162536953989, 37.748058979691152 ], [ -122.386174396322502, 37.748049175966834 ], [ -122.386184491486219, 37.748038026749811 ], [ -122.386194569220663, 37.74802619108366 ], [ -122.386201171526452, 37.748013724042565 ], [ -122.386204298419131, 37.748000626176299 ], [ -122.386207059358142, 37.747973112895849 ], [ -122.386211932676204, 37.74796067407766 ], [ -122.386218534973267, 37.747948207035471 ], [ -122.386226883695826, 37.747936399040974 ], [ -122.386236996262895, 37.747925936267578 ], [ -122.386250601668095, 37.747916791039664 ], [ -122.38626425935739, 37.747909705429613 ], [ -122.38627966345058, 37.747903278041591 ], [ -122.386295119836348, 37.747898910545544 ], [ -122.386310628142297, 37.747896601848709 ], [ -122.386338292035447, 37.747896159029516 ], [ -122.386357415873647, 37.747899973271664 ], [ -122.386373115890919, 37.747905215772221 ], [ -122.386388851457951, 37.747911831156145 ], [ -122.386404621538247, 37.747919819440014 ], [ -122.386418680056124, 37.747928521847626 ], [ -122.386427603879639, 37.747939366631606 ], [ -122.386439915980972, 37.747947410266093 ], [ -122.386455564081089, 37.74795059367991 ], [ -122.386471037535358, 37.747946912065444 ], [ -122.386789455008412, 37.747884816204298 ], [ -122.3868315118753, 37.747838131816167 ], [ -122.386850251869276, 37.747826844123239 ], [ -122.386870720848805, 37.747815528743104 ], [ -122.386889443052766, 37.747803554601212 ], [ -122.386908148509548, 37.747790893997063 ], [ -122.386942065866194, 37.74776425526499 ], [ -122.386965801028097, 37.74774533356738 ], [ -122.386981135299891, 37.747736160569232 ], [ -122.386994723145222, 37.747726328806948 ], [ -122.387010022542214, 37.747715782908614 ], [ -122.387037163346392, 37.747694746479311 ], [ -122.387050698881637, 37.747682855640441 ], [ -122.38706252285192, 37.747671678660687 ], [ -122.38707605836494, 37.747659787269711 ], [ -122.387087812590266, 37.747645864494586 ], [ -122.387097942431041, 37.747636088094978 ], [ -122.387109818697425, 37.747626970729563 ], [ -122.387123441368203, 37.747618511574053 ], [ -122.387137098912476, 37.747611425587927 ], [ -122.387154231515737, 37.747604970677259 ], [ -122.387171469418391, 37.747602634442131 ], [ -122.387190435960278, 37.747600270521147 ], [ -122.387209419590647, 37.747598593050817 ], [ -122.387226657490075, 37.747596256807626 ], [ -122.387245658900213, 37.747595265774123 ], [ -122.387264642528066, 37.747593588294905 ], [ -122.387281915296896, 37.747592624939976 ], [ -122.387300916705343, 37.747591633897549 ], [ -122.387316296380376, 37.747591387583803 ], [ -122.38733895439411, 37.747591024699865 ], [ -122.387356261689263, 37.747591434235915 ], [ -122.387375280187655, 37.747591129635204 ], [ -122.387394334251837, 37.747592197916667 ], [ -122.387413370533409, 37.74759257975245 ], [ -122.387430694921051, 37.74759367573126 ], [ -122.387449748986683, 37.747594744003763 ], [ -122.38746882014496, 37.747596498726871 ], [ -122.38748616197239, 37.747598281145677 ], [ -122.387505250916419, 37.747600722305499 ], [ -122.387538363228003, 37.747610492846007 ], [ -122.387550745149639, 37.747621282157453 ], [ -122.387563144167856, 37.747632757921238 ], [ -122.38758451981073, 37.747657137719408 ], [ -122.387602472716026, 37.747682945794239 ], [ -122.387611466439651, 37.747696536281474 ], [ -122.387617002189558, 37.747710182158386 ], [ -122.387624284369664, 37.747724486787845 ], [ -122.387629837563409, 37.747738819112165 ], [ -122.387633661769783, 37.747753179131621 ], [ -122.387635983354997, 37.747776490677239 ], [ -122.387636332144282, 37.747790219639235 ], [ -122.387640121821377, 37.747803206756615 ], [ -122.387649063247679, 37.747814737896427 ], [ -122.38765798689127, 37.747825582592974 ], [ -122.38767204553811, 37.747834284851223 ], [ -122.387686034428512, 37.747840241315451 ], [ -122.387703429329918, 37.74784408303541 ], [ -122.387720806101257, 37.747847238315771 ], [ -122.387738148684832, 37.747849020686374 ], [ -122.387757219915159, 37.747850775362728 ], [ -122.387776255919036, 37.747851157145398 ], [ -122.387793563622978, 37.747851566611679 ], [ -122.38781256509084, 37.747850575486822 ], [ -122.387829820125248, 37.747848925609141 ], [ -122.387848786709029, 37.747846561582286 ], [ -122.387866006512709, 37.747843538808695 ], [ -122.387888379097262, 37.747839060028085 ], [ -122.387903835368149, 37.747834692046453 ], [ -122.387921107500148, 37.747833728883549 ], [ -122.38793675597158, 37.747836911546052 ], [ -122.387950727441307, 37.7478421815308 ], [ -122.387968122011031, 37.747846023217228 ], [ -122.387985481697157, 37.747848492005005 ], [ -122.388002823941576, 37.747850274342177 ], [ -122.388020131300777, 37.747850683780733 ], [ -122.388039132419564, 37.747849692624868 ], [ -122.38805637035118, 37.747847356260422 ], [ -122.388073590146575, 37.74784433345652 ], [ -122.388089046753478, 37.747839965445046 ], [ -122.388109620211083, 37.747832768537954 ], [ -122.388109062008056, 37.747810802201109 ], [ -122.388077940175876, 37.747811300839857 ], [ -122.38807409843713, 37.74779625438692 ], [ -122.388108678243654, 37.747795700344511 ], [ -122.388099616701311, 37.74771137804548 ], [ -122.388148028374744, 37.747710602372756 ], [ -122.388152687991848, 37.747825897938156 ], [ -122.388277000893524, 37.747817039049515 ], [ -122.388487762928946, 37.747806794121068 ], [ -122.388506886854486, 37.747810608014518 ], [ -122.388525975547779, 37.747813049289029 ], [ -122.388546793218978, 37.747815462302533 ], [ -122.388565847011719, 37.747816530400094 ], [ -122.388605613450011, 37.747815893090063 ], [ -122.388626326439876, 37.747814187676354 ], [ -122.388645293335259, 37.747811823515768 ], [ -122.388665971425112, 37.747808745199229 ], [ -122.388684903080716, 37.747805008416485 ], [ -122.388703817271136, 37.747800584633623 ], [ -122.388722696221464, 37.747794788231978 ], [ -122.388738135330243, 37.747789733687412 ], [ -122.388758743610779, 37.74778390956282 ], [ -122.388800029962908, 37.747775007094489 ], [ -122.38882243702561, 37.74777190103795 ], [ -122.38884313255457, 37.74776950941277 ], [ -122.388865591959274, 37.747768462417191 ], [ -122.388886322380927, 37.747767443405706 ], [ -122.388908833806198, 37.747768456300328 ], [ -122.388929616574529, 37.747769496350386 ], [ -122.388945212727961, 37.747770619809877 ], [ -122.388964301079568, 37.747773061018961 ], [ -122.388983355206264, 37.747774128768917 ], [ -122.38900242644678, 37.747775883243818 ], [ -122.389021462783674, 37.747776264819827 ], [ -122.389042245569726, 37.747777305399197 ], [ -122.389080318237873, 37.747778068260708 ], [ -122.389137374546209, 37.7477771536037 ], [ -122.389175377760296, 37.747775171186596 ], [ -122.389196090718727, 37.747773465398161 ], [ -122.38926533756586, 37.747775788884091 ], [ -122.389334549507055, 37.747776739433625 ], [ -122.3894037440012, 37.747777003769272 ], [ -122.389542063148724, 37.747774785978237 ], [ -122.389680277530928, 37.747768449063493 ], [ -122.389818387138831, 37.74775799357456 ], [ -122.38988740700772, 37.747751392873859 ], [ -122.38995468041503, 37.747744133414443 ], [ -122.390039173851804, 37.747733851094473 ], [ -122.390066855117027, 37.747734093573278 ], [ -122.390085856531513, 37.747733102356463 ], [ -122.390103128943423, 37.747732138319044 ], [ -122.390122130349909, 37.747731146821835 ], [ -122.390141096830732, 37.747728782426051 ], [ -122.390158334329385, 37.747726446034243 ], [ -122.390177283337934, 37.747723394910331 ], [ -122.390194485555256, 37.747719685348756 ], [ -122.390213417450141, 37.74771594804033 ], [ -122.390230602546296, 37.747711552020206 ], [ -122.390249481354928, 37.747705755373893 ], [ -122.3902666667924, 37.747701359342962 ], [ -122.390283903927951, 37.747699022663753 ], [ -122.390311567723842, 37.747698578911937 ], [ -122.390328910334858, 37.747700360901341 ], [ -122.390344558542523, 37.747703543524345 ], [ -122.390363664733329, 37.747706670948986 ], [ -122.390381024113694, 37.747709139114932 ], [ -122.390398366728832, 37.747710921094118 ], [ -122.390415726118349, 37.747713389529537 ], [ -122.390433121131167, 37.747717230846696 ], [ -122.390448804284702, 37.74772178662581 ], [ -122.390464522011555, 37.747727714754603 ], [ -122.390476782463509, 37.747733698619065 ], [ -122.390494212070166, 37.747738912828105 ], [ -122.390511589281189, 37.747742067691526 ], [ -122.390527184761183, 37.747743190952775 ], [ -122.390653785454447, 37.747824253927604 ], [ -122.390638206813605, 37.747755831079004 ], [ -122.390653872859318, 37.747759700103025 ], [ -122.390669573495856, 37.747764942025796 ], [ -122.390681886034457, 37.74777298549197 ], [ -122.39069250450811, 37.747782429043276 ], [ -122.390701428591996, 37.747793273509437 ], [ -122.390706912858818, 37.747804859892483 ], [ -122.390710737663227, 37.747819219811937 ], [ -122.390717985513646, 37.7478321513547 ], [ -122.390725250834635, 37.747845769344615 ], [ -122.39073249869017, 37.747858700886397 ], [ -122.390741475546321, 37.747871604961333 ], [ -122.390750434923376, 37.747883822038752 ], [ -122.390771776747243, 37.747906828362581 ], [ -122.390782430195571, 37.747917645075368 ], [ -122.39079481229362, 37.747928434050969 ], [ -122.39082296530907, 37.747947210986922 ], [ -122.390837024342559, 37.747955912592879 ], [ -122.390849337269742, 37.747963955761179 ], [ -122.390865002685743, 37.747967825042672 ], [ -122.390880686250455, 37.747972380209411 ], [ -122.3909120177685, 37.747980118201738 ], [ -122.390943314352953, 37.747986483290504 ], [ -122.390960691640942, 37.747989638087581 ], [ -122.390976339590807, 37.747992820632099 ], [ -122.391007601590601, 37.747997812803085 ], [ -122.391024961067359, 37.748000281148649 ], [ -122.391056188138322, 37.748003900686179 ], [ -122.391073512668584, 37.74800499585487 ], [ -122.391089126375263, 37.748006805478177 ], [ -122.391122029339527, 37.748008337920567 ], [ -122.39113764304112, 37.74801014726286 ], [ -122.391155055286944, 37.748014674926367 ], [ -122.3911690619626, 37.748021317424552 ], [ -122.391183121057651, 37.748030019263688 ], [ -122.391193757118117, 37.748040149766119 ], [ -122.391202716589845, 37.748052366808828 ], [ -122.391208200608148, 37.748063953173585 ], [ -122.391241557893906, 37.74808333321856 ], [ -122.391295995830475, 37.748115422483572 ], [ -122.391962189342451, 37.748397274549454 ], [ -122.391983042262396, 37.748401060399672 ], [ -122.392002166513251, 37.748404873451001 ], [ -122.392021325387503, 37.7484100596741 ], [ -122.392042213267686, 37.748415218134042 ], [ -122.392078889429584, 37.748429050561562 ], [ -122.392113924006139, 37.748446342975576 ], [ -122.392131528713293, 37.748458421690032 ], [ -122.39214384116525, 37.748466464458922 ], [ -122.392159577364851, 37.748473079071736 ], [ -122.392175243295199, 37.748476947898624 ], [ -122.392194332280141, 37.748479388578737 ], [ -122.392215132775206, 37.748481114496656 ], [ -122.392234186445535, 37.748482182006597 ], [ -122.392254951984697, 37.748482535297406 ], [ -122.392294719439334, 37.748481896731604 ], [ -122.392336145620007, 37.748478484604256 ], [ -122.392355112221097, 37.748476119852498 ], [ -122.392375790342101, 37.748473040885386 ], [ -122.392394739456975, 37.748469989679933 ], [ -122.392410230561637, 37.748466994002406 ], [ -122.392430943652641, 37.748465288194843 ], [ -122.392449945215546, 37.748464296322425 ], [ -122.392477609283375, 37.748463852062244 ], [ -122.392496645468526, 37.748464233082473 ], [ -122.392534753839612, 37.748466367717036 ], [ -122.392553842833664, 37.748468808338913 ], [ -122.392571185325409, 37.748470589729116 ], [ -122.392588457883463, 37.748469625602191 ], [ -122.392596639186095, 37.748469494208877 ], [ -122.392610934939555, 37.748469264614883 ], [ -122.39262824212247, 37.74846967338226 ], [ -122.392662927124746, 37.748473236687367 ], [ -122.392680287459143, 37.74847570477781 ], [ -122.392695935930789, 37.748478887088204 ], [ -122.392713348381406, 37.748483414521154 ], [ -122.392729031836424, 37.748487969996233 ], [ -122.39274473277321, 37.748493211641936 ], [ -122.392760450846382, 37.748499139463782 ], [ -122.392774457756872, 37.748505781770611 ], [ -122.392790211508157, 37.748513082746427 ], [ -122.392804253398694, 37.748521097944213 ], [ -122.392825263777468, 37.748531061396008 ], [ -122.392842711223665, 37.748536961704282 ], [ -122.39286010621592, 37.748540802942827 ], [ -122.392879212368058, 37.748543929415632 ], [ -122.392898284250904, 37.748545683528903 ], [ -122.392917320797991, 37.748546064201044 ], [ -122.392936339863667, 37.748545758697475 ], [ -122.392953524990631, 37.748541362280918 ], [ -122.392966938977182, 37.748536367729422 ], [ -122.392968945786251, 37.748535620746658 ], [ -122.392982602941643, 37.748528534084265 ], [ -122.392994513945695, 37.748520788741565 ], [ -122.393006389623011, 37.748511670508776 ], [ -122.393016518457316, 37.748501893607475 ], [ -122.39303324918852, 37.748479649545963 ], [ -122.393038138879703, 37.74846789661926 ], [ -122.393043010740925, 37.74845545752526 ], [ -122.393046136785017, 37.748442359198343 ], [ -122.393047533485998, 37.748429288926303 ], [ -122.393054199696095, 37.748283595463981 ], [ -122.393077928476629, 37.748128700431906 ], [ -122.392979444727942, 37.747588651673503 ], [ -122.39297940856946, 37.747588454476606 ], [ -122.392907366368178, 37.747544287652012 ], [ -122.39290993009746, 37.747441237230703 ], [ -122.392849293374297, 37.747437404131951 ], [ -122.392809823765376, 37.747449712490337 ], [ -122.39276850310074, 37.747457243469029 ], [ -122.392735233137245, 37.747441296365679 ], [ -122.392709245973222, 37.747439653574382 ], [ -122.392606956367715, 37.747430308793902 ], [ -122.392589631603045, 37.747429213856059 ], [ -122.392573983004198, 37.747426031261952 ], [ -122.392558282650754, 37.747420789587025 ], [ -122.392545987120343, 37.747413433318528 ], [ -122.392533639816108, 37.747404017146245 ], [ -122.392522986186506, 37.747393200590786 ], [ -122.392515773033679, 37.747381642052915 ], [ -122.392369749857508, 37.747285098201544 ], [ -122.392309356598403, 37.747222889020321 ], [ -122.391563535628293, 37.747006182915136 ], [ -122.391515981789823, 37.747108581714961 ], [ -122.391549059112705, 37.747116978239831 ], [ -122.39154102623057, 37.747141142664127 ], [ -122.391633378020288, 37.747167816090183 ], [ -122.391610658187417, 37.747226552683614 ], [ -122.391284893471251, 37.747135639523535 ], [ -122.391304260773893, 37.747081077170833 ], [ -122.391400018273714, 37.747105635933018 ], [ -122.391414984907726, 37.747082046956919 ], [ -122.391449669204121, 37.747085610619905 ], [ -122.391496995599269, 37.746974288032909 ], [ -122.390841889233045, 37.746787710251105 ], [ -122.390710603266925, 37.746750702923116 ], [ -122.390692063133784, 37.7467454771745 ], [ -122.390583853899699, 37.746707382782333 ], [ -122.390491852370616, 37.746694437487911 ], [ -122.389167167584475, 37.74677199330884 ], [ -122.389007159419478, 37.746805461394153 ], [ -122.38886264165825, 37.746835933506375 ], [ -122.388798600052468, 37.746834213094125 ], [ -122.388745420841317, 37.746851546922535 ], [ -122.388650571528245, 37.746862681307142 ], [ -122.388568244062029, 37.746890096400243 ], [ -122.388501285688704, 37.746909711129156 ], [ -122.388430153337836, 37.746901236873853 ], [ -122.388403030664151, 37.746922960074855 ], [ -122.388383874714961, 37.746923267046867 ], [ -122.388364993671857, 37.746923569610487 ], [ -122.388206416880053, 37.746945339015134 ], [ -122.388203900596949, 37.746982462626271 ], [ -122.388121154182954, 37.746993402651967 ], [ -122.388116562743861, 37.746948838923466 ], [ -122.387896826491271, 37.746946178902249 ], [ -122.387881213437979, 37.746944369124783 ], [ -122.387867242141994, 37.746939099130984 ], [ -122.387854912604922, 37.746930368921483 ], [ -122.387704648799442, 37.746938956647774 ], [ -122.387598167965407, 37.746968818149767 ], [ -122.387589223776885, 37.747025273076481 ], [ -122.387549736768761, 37.747036893214862 ], [ -122.387544863742193, 37.747049332364881 ], [ -122.387534786009468, 37.747061168154005 ], [ -122.38752465665732, 37.747070944861157 ], [ -122.387511034118646, 37.747079403514647 ], [ -122.387495647733758, 37.747086517238138 ], [ -122.387478445182509, 37.747090226411743 ], [ -122.387461451881805, 37.747102172961299 ], [ -122.387268251932909, 37.747106390211968 ], [ -122.387107064056366, 37.74710990881966 ], [ -122.387091486195246, 37.747109471553998 ], [ -122.387075890554399, 37.747108347843543 ], [ -122.387060207744099, 37.747103791889728 ], [ -122.387046201608655, 37.747097148902206 ], [ -122.387033854715085, 37.747087732433343 ], [ -122.387024930905355, 37.74707688769373 ], [ -122.387021159152255, 37.747064586997716 ], [ -122.387005168327306, 37.746911702839881 ], [ -122.385924087590695, 37.746978453708003 ], [ -122.382764926423121, 37.74715258139431 ], [ -122.382708148125133, 37.747164476159931 ], [ -122.382642308174283, 37.747160034224571 ], [ -122.382018857926923, 37.747061489736957 ], [ -122.379659819974563, 37.747207644757545 ], [ -122.379607354913716, 37.746979801452689 ], [ -122.379559186732763, 37.746990183908736 ], [ -122.379533356297898, 37.746994716256566 ], [ -122.379509237470685, 37.74699853457313 ], [ -122.379483389665921, 37.747002380460607 ], [ -122.379459270487843, 37.747006198772453 ], [ -122.379433405660123, 37.74700935819407 ], [ -122.379407523121102, 37.747011831166098 ], [ -122.379383369216924, 37.747014276838193 ], [ -122.379357487013394, 37.747016749519133 ], [ -122.379331587106719, 37.747018536025081 ], [ -122.379307398466224, 37.747019608508175 ], [ -122.379255564276221, 37.747021808862577 ], [ -122.379229629642097, 37.747022222447264 ], [ -122.379144857745686, 37.747021513827882 ], [ -122.379072223061954, 37.747021985338478 ], [ -122.37899789481213, 37.747023857260928 ], [ -122.378925329913201, 37.747027074747926 ], [ -122.378851035672341, 37.747030319213138 ], [ -122.378706009969704, 37.747040872109451 ], [ -122.378631820547639, 37.747048235671635 ], [ -122.378559359727831, 37.747055571081212 ], [ -122.378486933610205, 37.74706427961987 ], [ -122.378414542183847, 37.747074361013084 ], [ -122.378342168091294, 37.747085128811385 ], [ -122.378269828683315, 37.747097269464334 ], [ -122.378197506610775, 37.747110096797023 ], [ -122.378126930483418, 37.747123582435272 ], [ -122.377700185384086, 37.747142744068015 ], [ -122.377451264431812, 37.747148770308641 ], [ -122.377202256724516, 37.747151363774975 ], [ -122.376953162296658, 37.747150524466448 ], [ -122.376703981182786, 37.747146252382528 ], [ -122.376633214042542, 37.747152186453157 ], [ -122.376586583950242, 37.747154989206692 ], [ -122.376541665151564, 37.747157077964779 ], [ -122.376496729013979, 37.747158480255926 ], [ -122.376406822062478, 37.747159911887174 ], [ -122.3763168457685, 37.747158597650483 ], [ -122.376226800142021, 37.747154537545661 ], [ -122.376181759998943, 37.747151821017589 ], [ -122.376136702533032, 37.747148418296995 ], [ -122.376091627724676, 37.747144328560168 ], [ -122.376046535596004, 37.747139552630784 ], [ -122.376003154781813, 37.747134062989552 ], [ -122.375912901223032, 37.747121764971595 ], [ -122.375869469128858, 37.747114215920412 ], [ -122.375824307704988, 37.747106693831739 ], [ -122.375780857600304, 37.747098458034387 ], [ -122.375737390867457, 37.747089535760047 ], [ -122.375693906470275, 37.747079927025247 ], [ -122.375650404755746, 37.747069631824438 ], [ -122.375606885379298, 37.74705865016309 ], [ -122.375565078011306, 37.747046954511831 ], [ -122.375521542024956, 37.747035286357942 ], [ -122.375484921614671, 37.747023508124926 ], [ -122.375446537240038, 37.747010384502651 ], [ -122.375427328249984, 37.747003136228599 ], [ -122.375409847894304, 37.746995860440805 ], [ -122.375390638220011, 37.746988612171734 ], [ -122.375373140891156, 37.746980649922982 ], [ -122.375353914244343, 37.746972715192399 ], [ -122.375283854298274, 37.746938120381792 ], [ -122.375266321996932, 37.746928785222565 ], [ -122.375250518328926, 37.746919422552502 ], [ -122.375232969057322, 37.746909400932758 ], [ -122.375217148425804, 37.746899352077222 ], [ -122.375199598810724, 37.746889330183407 ], [ -122.375183760856842, 37.746878594598741 ], [ -122.37516794023162, 37.746868545461957 ], [ -122.375152084617042, 37.746857123428462 ], [ -122.375137975649949, 37.746846360325264 ], [ -122.375122120743228, 37.74683493855126 ], [ -122.37510799445424, 37.746823488719798 ], [ -122.37509213920427, 37.746812066672646 ], [ -122.375063852016254, 37.746787794649727 ], [ -122.375051437407549, 37.746775631399466 ], [ -122.375037293817897, 37.746763495109327 ], [ -122.375023132917065, 37.746750672641994 ], [ -122.374998269070602, 37.746724972682053 ], [ -122.374960921021042, 37.746684363387303 ], [ -122.374939480511969, 37.746657235495441 ], [ -122.374896530254759, 37.746600233899152 ], [ -122.374887504692197, 37.746585269533512 ], [ -122.374878496108821, 37.746570991622754 ], [ -122.374851418423177, 37.746526098810385 ], [ -122.374837344197417, 37.746516708296284 ], [ -122.374824981280824, 37.746506604102919 ], [ -122.374812601738441, 37.746495813447105 ], [ -122.374801933498034, 37.746484308838191 ], [ -122.374792994225416, 37.746472776721248 ], [ -122.374785749278871, 37.74645984419638 ], [ -122.374780233298765, 37.746446884164222 ], [ -122.374774699654409, 37.746433237687107 ], [ -122.374770895666941, 37.746419563692001 ], [ -122.374768802977741, 37.746405175745409 ], [ -122.374768439251895, 37.74639076029208 ], [ -122.374769821808755, 37.746377003782186 ], [ -122.374772932981244, 37.74636321977102 ], [ -122.374777773805775, 37.74634940824194 ], [ -122.374790947320705, 37.746323103080407 ], [ -122.374915153489738, 37.745898790876815 ], [ -122.374925284686768, 37.745889015246057 ], [ -122.374935381244654, 37.745877866988621 ], [ -122.374943731527424, 37.745866059789378 ], [ -122.374948606585662, 37.745853621157977 ], [ -122.374953463974592, 37.745840496081698 ], [ -122.374954864154603, 37.745827426013051 ], [ -122.374954517717399, 37.745813697009091 ], [ -122.374952459307565, 37.745800681970202 ], [ -122.37494867264158, 37.745787694429573 ], [ -122.374943174004656, 37.745775420853761 ], [ -122.374925295588895, 37.745752356637837 ], [ -122.374169821595103, 37.745013096467311 ], [ -122.374159170981372, 37.745002278247725 ], [ -122.374148554999209, 37.744992832927991 ], [ -122.374136227057974, 37.744984101560632 ], [ -122.374123917125218, 37.74497605663138 ], [ -122.374109912547326, 37.744969412104211 ], [ -122.374095925285644, 37.7449634540258 ], [ -122.374080226064535, 37.744958209898222 ], [ -122.37406629074772, 37.744954311167561 ], [ -122.374048932546074, 37.744951840322948 ], [ -122.374033320242248, 37.744950028435788 ], [ -122.374017742219408, 37.744949589452929 ], [ -122.373998724342499, 37.744949891898301 ], [ -122.37398319825796, 37.744951512262205 ], [ -122.373967707489385, 37.744954505513952 ], [ -122.373952250998556, 37.744958871670036 ], [ -122.373936811825118, 37.74496392454914 ], [ -122.373923118884619, 37.74496963610779 ], [ -122.373909460559076, 37.744976720291163 ], [ -122.373895819549759, 37.744984491197997 ], [ -122.373883942091524, 37.744993607510423 ], [ -122.373863679651151, 37.745013158045801 ], [ -122.373855311981089, 37.745024278719775 ], [ -122.373848673239934, 37.745035371899974 ], [ -122.373842051808168, 37.745047151530216 ], [ -122.37385341216104, 37.745086114521243 ], [ -122.373444301009826, 37.74532404571449 ], [ -122.373430677195785, 37.74533250301748 ], [ -122.373418781971495, 37.745340932837536 ], [ -122.373405123536585, 37.745348017236601 ], [ -122.373391482406376, 37.745355788084566 ], [ -122.373377806658937, 37.745362186029979 ], [ -122.373364148216169, 37.745369270424256 ], [ -122.373350455156967, 37.745374981916001 ], [ -122.373319611498488, 37.745386459860086 ], [ -122.37330588381964, 37.745390798445655 ], [ -122.373274970231165, 37.745399530587065 ], [ -122.373259496653688, 37.745403210470592 ], [ -122.373244005409106, 37.745406203357881 ], [ -122.373226784891003, 37.745409224281886 ], [ -122.373211276683975, 37.7454115307089 ], [ -122.373195750831584, 37.745413150963429 ], [ -122.373178495692287, 37.7454147987048 ], [ -122.373162952885991, 37.745415732773601 ], [ -122.373130102670643, 37.745416254953994 ], [ -122.373114525240069, 37.745415815566226 ], [ -122.373097201225704, 37.745414717488131 ], [ -122.37308160580649, 37.745413591931054 ], [ -122.373065993781964, 37.745411780184988 ], [ -122.373048652458152, 37.745409995374658 ], [ -122.373033005135582, 37.745406810734146 ], [ -122.373017375795953, 37.745404311981943 ], [ -122.372986047234718, 37.74539656950391 ], [ -122.372970365296936, 37.745392011404839 ], [ -122.372956412653693, 37.745387426092684 ], [ -122.372762203193631, 37.745505195897991 ], [ -122.372470578027816, 37.745199439060684 ], [ -122.369079539125323, 37.741643837671482 ], [ -122.367630267152407, 37.740133359644659 ], [ -122.367867173476, 37.739994319504163 ], [ -122.368285236674282, 37.739975330499902 ], [ -122.368274610769845, 37.73982785299647 ], [ -122.371253871422496, 37.739663833776014 ], [ -122.371264036490402, 37.739792777100682 ], [ -122.373407014055843, 37.739660522763742 ], [ -122.373411889309949, 37.739648084177503 ], [ -122.37342198524702, 37.739636936038039 ], [ -122.373432115793747, 37.739627160799976 ], [ -122.373447518947913, 37.739620735634887 ], [ -122.373462992003653, 37.739617055712138 ], [ -122.373518088785445, 37.739607252232659 ], [ -122.373566287640358, 37.739598245135006 ], [ -122.373590404371257, 37.739594428029896 ], [ -122.373616249911393, 37.739590583704633 ], [ -122.373640366284548, 37.739586766320215 ], [ -122.373666246782193, 37.739584294880729 ], [ -122.373690380805215, 37.739581163931668 ], [ -122.373716260600844, 37.739578692217606 ], [ -122.37374042959101, 37.739576934429572 ], [ -122.373766327038652, 37.739575149150085 ], [ -122.373790512990382, 37.739574077808385 ], [ -122.373816427745723, 37.739572978968987 ], [ -122.373890766330462, 37.739571796757524 ], [ -122.373921919428824, 37.739572674766521 ], [ -122.373937443699504, 37.739571054420232 ], [ -122.373952916727561, 37.739567374707711 ], [ -122.373966608670429, 37.739561663140428 ], [ -122.373980265988422, 37.739554578669413 ], [ -122.373992124908327, 37.7395447758934 ], [ -122.374000509598304, 37.739534341645076 ], [ -122.37400713051376, 37.739522561995074 ], [ -122.374012004966914, 37.739510123394709 ], [ -122.37401135577899, 37.739484381479812 ], [ -122.374005858115922, 37.739472108116395 ], [ -122.373998648611916, 37.739460548430131 ], [ -122.373977383644629, 37.739440284566498 ], [ -122.373964927156109, 37.739426404784517 ], [ -122.373936539281573, 37.739398013754517 ], [ -122.373924065496922, 37.739383447517028 ], [ -122.373886618206512, 37.739338719119822 ], [ -122.373874092510491, 37.73932209352359 ], [ -122.373863330238677, 37.739306813334778 ], [ -122.373841788398252, 37.73927556650299 ], [ -122.373820229273036, 37.739243633490574 ], [ -122.373811178157524, 37.739227639083794 ], [ -122.373793059679699, 37.739194964349537 ], [ -122.37378399162607, 37.739178284033066 ], [ -122.373776661019065, 37.739161919174691 ], [ -122.37376932175367, 37.739145210815664 ], [ -122.373761973843884, 37.739128159505157 ], [ -122.373754634592061, 37.73911145141971 ], [ -122.373747286688968, 37.739094400108158 ], [ -122.373741667582067, 37.739077321304478 ], [ -122.373730515575119, 37.739046595957468 ], [ -122.373715767869712, 37.739010433977029 ], [ -122.373701037487336, 37.738974958445688 ], [ -122.373691943857139, 37.738957248164674 ], [ -122.373664687572003, 37.73890514701592 ], [ -122.373643076699025, 37.738871154340984 ], [ -122.373610686734082, 37.738821194992092 ], [ -122.373585652607346, 37.73878863019344 ], [ -122.373573144731495, 37.738772691284012 ], [ -122.373560645155081, 37.738757095055156 ], [ -122.373546408152151, 37.738741183362713 ], [ -122.373533917247101, 37.738725930631098 ], [ -122.373505477884322, 37.738695480140251 ], [ -122.373491266871952, 37.738680598392399 ], [ -122.373459404583869, 37.738651575494011 ], [ -122.373445210895355, 37.73863738019174 ], [ -122.373429288070284, 37.738623211831154 ], [ -122.3734116544736, 37.738609757670034 ], [ -122.37339574066641, 37.738595932799527 ], [ -122.37337984382502, 37.738582794383632 ], [ -122.373362218906536, 37.738569683715227 ], [ -122.373326985681061, 37.738544148008963 ], [ -122.373309377387599, 37.738531723520261 ], [ -122.373290049663908, 37.73851966972861 ], [ -122.37327245903279, 37.738507931680125 ], [ -122.373253139281985, 37.738496221119 ], [ -122.373235557660152, 37.738484826285116 ], [ -122.37321625557793, 37.738473802438271 ], [ -122.373195233367738, 37.738463149022955 ], [ -122.373175939596308, 37.738452468126042 ], [ -122.37315665516681, 37.738442130166042 ], [ -122.373135650277447, 37.738432163191355 ], [ -122.373116382823142, 37.738422511956102 ], [ -122.373074407684399, 37.738403951165793 ], [ -122.373053428763811, 37.738395013578788 ], [ -122.373032458506373, 37.738386419488315 ], [ -122.373011496911786, 37.738378168894329 ], [ -122.372988815182367, 37.738370288453737 ], [ -122.372967870892026, 37.738362724028732 ], [ -122.372945197483872, 37.738355187085482 ], [ -122.372924270503603, 37.738348309104055 ], [ -122.372901615103871, 37.738341458867346 ], [ -122.372878967999199, 37.738334951308275 ], [ -122.372856329555759, 37.738328787245123 ], [ -122.372833699427503, 37.738322966683377 ], [ -122.372811078630633, 37.738317488782812 ], [ -122.372788466148293, 37.738312354383659 ], [ -122.372765862325963, 37.738307563480433 ], [ -122.372743266796775, 37.738303115254908 ], [ -122.372718943193647, 37.738298694765277 ], [ -122.372673787106677, 37.738291171738332 ], [ -122.372649498109226, 37.738288124137178 ], [ -122.372626937542805, 37.738285049061219 ], [ -122.372602656852706, 37.7382823446816 ], [ -122.372578393462533, 37.738280326748381 ], [ -122.372555858502594, 37.738278281341429 ], [ -122.372531604109625, 37.73827660661879 ], [ -122.372507357674976, 37.738275275127862 ], [ -122.37248484935597, 37.738274259373469 ], [ -122.372460620565761, 37.738273614318871 ], [ -122.372436400424391, 37.738273312484985 ], [ -122.37241391770614, 37.738273326399707 ], [ -122.372389714515705, 37.738273711013171 ], [ -122.372365520664644, 37.738274438836385 ], [ -122.372341334769544, 37.738275509891366 ], [ -122.371417572864843, 37.73819782064686 ], [ -122.371336052232962, 37.738188471129725 ], [ -122.371292703605505, 37.738184009138322 ], [ -122.371247643157346, 37.738180261317709 ], [ -122.371204337055175, 37.738177515159229 ], [ -122.371159311524337, 37.738175139928011 ], [ -122.371116023065696, 37.738173080457798 ], [ -122.37107103176993, 37.738172078376202 ], [ -122.371027777876208, 37.738171391502313 ], [ -122.370982812155077, 37.738171418795432 ], [ -122.370937864408404, 37.738172132512091 ], [ -122.370894662370532, 37.738173505218874 ], [ -122.370849740199262, 37.738175248584916 ], [ -122.370806564080581, 37.738177650936933 ], [ -122.370761676121674, 37.738180767178264 ], [ -122.370718534904626, 37.738184542395913 ], [ -122.370673681844693, 37.738189031501626 ], [ -122.370630565847108, 37.738193836375615 ], [ -122.370585739048508, 37.738199355394492 ], [ -122.37054305620137, 37.738152648632216 ], [ -122.370404226449224, 37.73820257996838 ], [ -122.370322939528947, 37.738202496843449 ], [ -122.370241678523712, 37.738203443340097 ], [ -122.37016044308433, 37.738205419463867 ], [ -122.370080971656222, 37.738208740986281 ], [ -122.369999797012667, 37.738213119575086 ], [ -122.369918647931073, 37.738218528065744 ], [ -122.369839254199036, 37.738224938183691 ], [ -122.369758165884022, 37.738232748865137 ], [ -122.369678823605085, 37.738241218785156 ], [ -122.369597795695725, 37.738251431663087 ], [ -122.369570247557576, 37.738256332765289 ], [ -122.369551300103424, 37.738259380031664 ], [ -122.369532343673868, 37.738262084349124 ], [ -122.369494414578227, 37.738266806506552 ], [ -122.369475441227863, 37.738268824632087 ], [ -122.369456458882269, 37.738270498984953 ], [ -122.369437468599656, 37.738271830372412 ], [ -122.369399470072068, 37.738273806697272 ], [ -122.369380461827461, 37.738274451634652 ], [ -122.369342429106254, 37.738275055031856 ], [ -122.369304361157091, 37.738274285523985 ], [ -122.36926627663955, 37.738272829815514 ], [ -122.369228156883779, 37.738270000652726 ], [ -122.369209088902451, 37.738268243244413 ], [ -122.369170934963606, 37.738264041153812 ], [ -122.369151849020255, 37.738261597020717 ], [ -122.369067113471218, 37.738261911373165 ], [ -122.368994202750471, 37.738251049936494 ], [ -122.368911109321047, 37.73824790450054 ], [ -122.36882805041877, 37.73824613163535 ], [ -122.368745017407647, 37.738245388114983 ], [ -122.368662018929072, 37.738246017714694 ], [ -122.36857731722661, 37.738247704629927 ], [ -122.368494370518377, 37.738250393192978 ], [ -122.368411458330385, 37.738254454876298 ], [ -122.368328572028588, 37.738259546453904 ], [ -122.368245711588798, 37.738265667102112 ], [ -122.36816287702834, 37.738272817644742 ], [ -122.368080076965157, 37.738281341033293 ], [ -122.367798933766665, 37.738311550246465 ], [ -122.367519570533148, 37.738343791024903 ], [ -122.367503864887638, 37.738338202509389 ], [ -122.367488228255993, 37.73833536007497 ], [ -122.367472548152278, 37.738330801513577 ], [ -122.367458562672155, 37.738324842640814 ], [ -122.367444551318144, 37.738317854088145 ], [ -122.367432225963285, 37.738309121998832 ], [ -122.367421611792139, 37.73829967606261 ], [ -122.367412700524838, 37.738289173048365 ], [ -122.367405492161083, 37.738277612956487 ], [ -122.367400003950721, 37.738265682239444 ], [ -122.367396227274725, 37.738253037945974 ], [ -122.367394179016159, 37.738240365710134 ], [ -122.367393859886334, 37.738227666344848 ], [ -122.367395269877491, 37.738214939575492 ], [ -122.367400145351439, 37.738202501245944 ], [ -122.367413544289079, 37.738185120751645 ], [ -122.367428767218343, 37.73817148833826 ], [ -122.367445744452965, 37.738158858481917 ], [ -122.367462730293482, 37.738146571300049 ], [ -122.367481470439287, 37.738135286674201 ], [ -122.36750022852209, 37.738124688486586 ], [ -122.367520732277939, 37.73811474935323 ], [ -122.367541261905686, 37.738105839894565 ], [ -122.367561808780295, 37.738097616884474 ], [ -122.367582381528294, 37.738090423549032 ], [ -122.367604708583698, 37.738084232766695 ], [ -122.367627053565442, 37.738078727872157 ], [ -122.367649424083893, 37.738074252931682 ], [ -122.367766437068838, 37.738050766275428 ], [ -122.367843903943097, 37.738036490753885 ], [ -122.367921396310663, 37.738023244315926 ], [ -122.367998923860597, 37.738011370994791 ], [ -122.368076468296522, 37.738000184080214 ], [ -122.368154047223541, 37.737990370018814 ], [ -122.368231651678144, 37.737981585864489 ], [ -122.368311011449208, 37.737973803365058 ], [ -122.368388676621564, 37.737967421684075 ], [ -122.368447213120319, 37.737956879019784 ], [ -122.368493984461352, 37.737959914324698 ], [ -122.368511237973692, 37.737958267267153 ], [ -122.368526753740483, 37.737956304401699 ], [ -122.368543998275101, 37.737954314118795 ], [ -122.368559514040228, 37.737952351249042 ], [ -122.368575012543431, 37.737949701925182 ], [ -122.36859223981395, 37.737947025183189 ], [ -122.368607738314864, 37.737944375855051 ], [ -122.368624947975661, 37.737941012661715 ], [ -122.368655910793635, 37.737934341085214 ], [ -122.368671383403552, 37.737930662345228 ], [ -122.368688576135014, 37.737926612410497 ], [ -122.368719486808203, 37.737917881466693 ], [ -122.368750380211424, 37.737908464062734 ], [ -122.368765818278675, 37.737903412131701 ], [ -122.368781247712349, 37.737898016972643 ], [ -122.368794948383581, 37.737892649505248 ], [ -122.368810368835511, 37.737886911121841 ], [ -122.368825781337947, 37.737880829224856 ], [ -122.368839464732346, 37.737874775025681 ], [ -122.368854868259206, 37.737868350178935 ], [ -122.368868543017058, 37.737861952750357 ], [ -122.368883937913694, 37.737855184948373 ], [ -122.368897604027694, 37.737848444015853 ], [ -122.368911261520921, 37.737841360404865 ], [ -122.368938559214428, 37.737826505902383 ], [ -122.368952199435157, 37.737818735834644 ], [ -122.368960558042616, 37.737807272000303 ], [ -122.368970654743052, 37.73779612423332 ], [ -122.368982505756449, 37.737785978727096 ], [ -122.368996120067735, 37.737777178976209 ], [ -122.369011506288842, 37.737770067382321 ], [ -122.369028672734785, 37.73776498827452 ], [ -122.369045883019595, 37.737761624734098 ], [ -122.369078712268717, 37.737760417244921 ], [ -122.369096068971245, 37.73776288881907 ], [ -122.369113468840041, 37.737767076520647 ], [ -122.369161848333334, 37.73776527896748 ], [ -122.369191211420912, 37.737763783069852 ], [ -122.369249902712198, 37.73775941835428 ], [ -122.369279231606328, 37.737756549525336 ], [ -122.369306822754865, 37.737753364895219 ], [ -122.369336134037468, 37.737749809880221 ], [ -122.369365436669298, 37.73774591108279 ], [ -122.369394721690568, 37.73774132610621 ], [ -122.369422278297634, 37.737736768819744 ], [ -122.369451546734155, 37.737731497366127 ], [ -122.369479077416202, 37.737725909839305 ], [ -122.369508328229003, 37.737719951925108 ], [ -122.369535841646382, 37.737713678482258 ], [ -122.369565066537618, 37.737706690601534 ], [ -122.369592562667947, 37.737699730418903 ], [ -122.36964752037818, 37.737684437405164 ], [ -122.369674981943263, 37.737676104024878 ], [ -122.369702434873361, 37.737667427686809 ], [ -122.369729879161198, 37.737658408116381 ], [ -122.369755577409364, 37.737648729520856 ], [ -122.369783004411687, 37.737639023486132 ], [ -122.369808694010004, 37.737629001653048 ], [ -122.36983436598301, 37.737618293367909 ], [ -122.369861767054431, 37.73760755763697 ], [ -122.369877075781517, 37.737597357165455 ], [ -122.369888995386347, 37.737589957380784 ], [ -122.369902652730687, 37.737582873380028 ], [ -122.369916335982509, 37.737576819055491 ], [ -122.369931756973841, 37.737571080514087 ], [ -122.369945457494808, 37.737565712638037 ], [ -122.369960912683439, 37.737561347002035 ], [ -122.369976376507211, 37.737557324589964 ], [ -122.369991865894718, 37.737554331859151 ], [ -122.370007364616541, 37.737551682615816 ], [ -122.370022880252051, 37.737549719278675 ], [ -122.370060808948153, 37.737544996950575 ], [ -122.370098721055868, 37.737539588147442 ], [ -122.370119388417834, 37.737536169853662 ], [ -122.370138327019674, 37.737532778995096 ], [ -122.370157256636233, 37.737529044913018 ], [ -122.37017617830449, 37.737524967591014 ], [ -122.37021400367405, 37.737516126771574 ], [ -122.370232907361171, 37.737511362724987 ], [ -122.370251803106058, 37.737506255713058 ], [ -122.370270689864256, 37.737500805477644 ], [ -122.370287847523556, 37.73749538296029 ], [ -122.370306725983596, 37.737489589487708 ], [ -122.370325595449458, 37.737483452517054 ], [ -122.370342727177842, 37.737477000039355 ], [ -122.370361588351471, 37.737470520106122 ], [ -122.370378711780674, 37.737463724391766 ], [ -122.370412941358637, 37.737449446778328 ], [ -122.370464233848367, 37.737425970297551 ], [ -122.370498394270641, 37.737408946577332 ], [ -122.370513745375163, 37.737400462163315 ], [ -122.37052385906631, 37.737390000714299 ], [ -122.370534015260773, 37.737381255404934 ], [ -122.370547663865693, 37.737373828103252 ], [ -122.370561364305786, 37.737368460155437 ], [ -122.370576845682166, 37.737365124110752 ], [ -122.370606243142632, 37.737365000764086 ], [ -122.370621879689367, 37.737367842785233 ], [ -122.370637533178453, 37.737371371536177 ], [ -122.370653178706647, 37.737374556499006 ], [ -122.370670526731246, 37.737376684615533 ], [ -122.370687848836141, 37.737377783051812 ], [ -122.370705153660893, 37.737378195033756 ], [ -122.370720694824087, 37.737377261562422 ], [ -122.370737948151799, 37.737375614178688 ], [ -122.370755183506148, 37.737373280351626 ], [ -122.370770656234214, 37.73736960105559 ], [ -122.370787840087672, 37.737365207862915 ], [ -122.370803277557826, 37.737360155669997 ], [ -122.370818689794845, 37.737354073786427 ], [ -122.370832347014144, 37.737346989952236 ], [ -122.370845986935052, 37.737339219115491 ], [ -122.370859609577963, 37.737330762099973 ], [ -122.37087148583683, 37.737321646086173 ], [ -122.370883345501966, 37.737311843608374 ], [ -122.370893458790221, 37.73730138240758 ], [ -122.370905214055995, 37.73728746095329 ], [ -122.370915232622579, 37.737273223985788 ], [ -122.370938760775033, 37.737246068067016 ], [ -122.370952262410057, 37.737232805878257 ], [ -122.370964052918382, 37.737220257585115 ], [ -122.370979300231937, 37.737207654399519 ], [ -122.370992836419262, 37.737195765109583 ], [ -122.371008110346423, 37.737184191861481 ], [ -122.371021663808406, 37.737172989019946 ], [ -122.371038683399732, 37.737162074224159 ], [ -122.371053991182038, 37.737151873609982 ], [ -122.371071037042427, 37.737141988756214 ], [ -122.371088090848829, 37.737132447136844 ], [ -122.371105162626606, 37.737123591955786 ], [ -122.371122242351063, 37.73711508000909 ], [ -122.371141068795652, 37.737107227047161 ], [ -122.371159903532885, 37.737099717313619 ], [ -122.37117875555127, 37.737092894028791 ], [ -122.371197615863039, 37.737086413972314 ], [ -122.371216494148271, 37.737080620353588 ], [ -122.371237109474734, 37.737075142508274 ], [ -122.371256013343697, 37.737070378840897 ], [ -122.371276663229182, 37.737066273617579 ], [ -122.371297321762341, 37.737062511891089 ], [ -122.371316268832857, 37.737059464068786 ], [ -122.371347308485454, 37.737055880822481 ], [ -122.371363160732827, 37.737067303397573 ], [ -122.371385487850503, 37.737061111612277 ], [ -122.371409819958558, 37.737065875598411 ], [ -122.371432414333356, 37.737070323816937 ], [ -122.371456712218176, 37.737073714884438 ], [ -122.371480992125981, 37.737076419506209 ], [ -122.371505255439089, 37.737078437660294 ], [ -122.371529509424818, 37.737080112869066 ], [ -122.371555466903885, 37.73708073037561 ], [ -122.371579678008715, 37.737080689164763 ], [ -122.371603880469053, 37.737080304723065 ], [ -122.371628056995533, 37.737078890598873 ], [ -122.371652224876399, 37.737077133243893 ], [ -122.371676366821816, 37.737074346206427 ], [ -122.371700500120539, 37.737071215938158 ], [ -122.37172460748225, 37.737067055987431 ], [ -122.371748706203064, 37.737062553080534 ], [ -122.371772778971504, 37.737057019942043 ], [ -122.371791673803557, 37.737051912693794 ], [ -122.371807120477257, 37.737047203583948 ], [ -122.371822584094161, 37.737043180929248 ], [ -122.371838065007339, 37.737039844998783 ], [ -122.371853562850688, 37.737037194974249 ], [ -122.371869078682678, 37.737035231662922 ], [ -122.371884611459564, 37.737033954806734 ], [ -122.371907076518241, 37.737033254815913 ], [ -122.371922652170909, 37.737033693814745 ], [ -122.371938237168152, 37.737034476300948 ], [ -122.371953839112081, 37.737035945242191 ], [ -122.371969466994983, 37.737038443858872 ], [ -122.371985103179384, 37.737041285704763 ], [ -122.372000757348985, 37.737044813989243 ], [ -122.372020067187322, 37.7370561815437 ], [ -122.372035876997472, 37.737065887888214 ], [ -122.372049966365637, 37.737075964928742 ], [ -122.372064081677323, 37.737087071645014 ], [ -122.372076467900058, 37.737098205832325 ], [ -122.372088880758042, 37.737110369684729 ], [ -122.372099573180051, 37.737122904509278 ], [ -122.37211027423858, 37.737135782009496 ], [ -122.372119254860294, 37.737149030482428 ], [ -122.372128244823543, 37.737162622169478 ], [ -122.372145506378345, 37.737161318085484 ], [ -122.372167936525273, 37.737159244598097 ], [ -122.372188603686311, 37.73715582594123 ], [ -122.372209253557884, 37.737151721103693 ], [ -122.372228157715924, 37.737146956725766 ], [ -122.372248764338792, 37.737141135477749 ], [ -122.372267624915224, 37.737134655244574 ], [ -122.372283045287503, 37.737128916400529 ], [ -122.372293192944326, 37.737119827982468 ], [ -122.372299822556045, 37.737108391374868 ], [ -122.372301239987792, 37.73709600777574 ], [ -122.372373414633373, 37.737077692981821 ], [ -122.372418232665979, 37.737071830045089 ], [ -122.372464787747589, 37.737066283124271 ], [ -122.372509631380041, 37.737061450384822 ], [ -122.37255449229049, 37.737057303530676 ], [ -122.372599370500893, 37.737053843385567 ], [ -122.372645994751693, 37.737051042199361 ], [ -122.372690898556655, 37.737048611702214 ], [ -122.372735828999197, 37.737047210854271 ], [ -122.372782496496995, 37.737046126017439 ], [ -122.372808401383125, 37.737044683904415 ], [ -122.372830858125084, 37.737043640231676 ], [ -122.372853323170872, 37.737042939785901 ], [ -122.372899999307762, 37.737042197853711 ], [ -122.37292249030402, 37.737042527072028 ], [ -122.372944989951108, 37.737043199511795 ], [ -122.372969218351344, 37.737043844741514 ], [ -122.373014252244417, 37.737046562227299 ], [ -122.373036786152014, 37.737048607558009 ], [ -122.373061049498276, 37.737050625391774 ], [ -122.373083592412328, 37.73705301420835 ], [ -122.37312871282991, 37.73705916390778 ], [ -122.37317385056528, 37.737066000315984 ], [ -122.373196436400818, 37.737070105245131 ], [ -122.373219031568397, 37.737074552835523 ], [ -122.373239897653349, 37.737079028185967 ], [ -122.373285121933037, 37.737089296808776 ], [ -122.373306013982969, 37.737094801824675 ], [ -122.373328651749006, 37.737100966082771 ], [ -122.373370470468529, 37.737113348723689 ], [ -122.373393126235527, 37.737120199135234 ], [ -122.373434996907847, 37.737134641656631 ], [ -122.373455940892711, 37.737142205725576 ], [ -122.373476893541877, 37.737150113291072 ], [ -122.373496125754656, 37.737158391572102 ], [ -122.373538065688621, 37.73717557958782 ], [ -122.373776518618286, 37.737372998626824 ], [ -122.373949450475536, 37.737509653888004 ], [ -122.374125779894442, 37.737643851318353 ], [ -122.374316078561918, 37.737783320091772 ], [ -122.374328378667045, 37.737791021785021 ], [ -122.374342390568998, 37.737798009519793 ], [ -122.374356385166024, 37.737804311076282 ], [ -122.374372082895462, 37.737809555173321 ], [ -122.374387762959685, 37.737814112547987 ], [ -122.374403417067299, 37.737817640792912 ], [ -122.374419053501768, 37.737820482040924 ], [ -122.374434673327585, 37.73782263737381 ], [ -122.374450266821725, 37.73782376248419 ], [ -122.374467562767649, 37.7378238306935 ], [ -122.374483104668272, 37.737822896715045 ], [ -122.3745003576703, 37.737821248786098 ], [ -122.374522744667573, 37.737817458997327 ], [ -122.374650468637824, 37.737875858898875 ], [ -122.374739734976373, 37.737918045764403 ], [ -122.374827316638459, 37.737961976186384 ], [ -122.374913186617448, 37.738006620783011 ], [ -122.374999090980893, 37.738052637675224 ], [ -122.375048414507546, 37.73808824928939 ], [ -122.375108232298459, 37.738128500964891 ], [ -122.375139852148493, 37.738147912836176 ], [ -122.375171464045508, 37.73816698146242 ], [ -122.375203066606062, 37.738185706865586 ], [ -122.375234661212687, 37.738204089023711 ], [ -122.375266237820483, 37.738221784733298 ], [ -122.375299535245929, 37.738239109683342 ], [ -122.375332823679372, 37.738256091403926 ], [ -122.375366094804107, 37.738272386664057 ], [ -122.375399356935574, 37.738288338694765 ], [ -122.375432611110568, 37.738303947479515 ], [ -122.37546757640348, 37.738318842292436 ], [ -122.375502533047822, 37.738333393869439 ], [ -122.375537481043125, 37.738347602210531 ], [ -122.375572411725926, 37.738361124090282 ], [ -122.375609062188403, 37.738374275220636 ], [ -122.375643966907035, 37.738386767402702 ], [ -122.37568059209606, 37.738398888823312 ], [ -122.375717199624106, 37.7384103237871 ], [ -122.375753798499645, 37.738421415514019 ], [ -122.375790388383365, 37.73843216428417 ], [ -122.375828690404418, 37.738442198509603 ], [ -122.375865245990923, 37.738451574074567 ], [ -122.375903521699868, 37.738460578879355 ], [ -122.375941788753465, 37.738469240446264 ], [ -122.375992156916524, 37.738477709334177 ], [ -122.376007733601398, 37.738478148331104 ], [ -122.376025030039884, 37.738478216031723 ], [ -122.376042317820222, 37.738477940778964 ], [ -122.376057859492079, 37.73847700659843 ], [ -122.376075120930508, 37.738475701670041 ], [ -122.376092365729193, 37.738473710277233 ], [ -122.376107872737933, 37.738471403188342 ], [ -122.376125099858029, 37.738468725345385 ], [ -122.376140580868082, 37.738465388575889 ], [ -122.376157790308596, 37.738462024282761 ], [ -122.376188700679592, 37.738453291649634 ], [ -122.376205866785881, 37.738448211222327 ], [ -122.376221296131305, 37.738442814809545 ], [ -122.376265793698082, 37.738424251349997 ], [ -122.376279450587873, 37.738417166611207 ], [ -122.37629309880883, 37.738409738645394 ], [ -122.37632036057704, 37.738393509807281 ], [ -122.376333982797163, 37.738385052434992 ], [ -122.376357734990449, 37.738366819020342 ], [ -122.376369602073851, 37.738357359228573 ], [ -122.376381452512433, 37.738347212973743 ], [ -122.376391573827405, 37.738337094253737 ], [ -122.376401686479809, 37.738326632582023 ], [ -122.376411790448728, 37.738315827134819 ], [ -122.376421885754795, 37.738304678735901 ], [ -122.376430251938501, 37.738293557872694 ], [ -122.376446950667884, 37.738269943226257 ], [ -122.376453571082962, 37.738258163436321 ], [ -122.376017920759935, 37.737991096533946 ], [ -122.37598688059623, 37.737994681015465 ], [ -122.375962730194601, 37.737997125704617 ], [ -122.375940290890341, 37.737998856694041 ], [ -122.375916122804242, 37.738000614653615 ], [ -122.375891946066474, 37.73800202993192 ], [ -122.375869489077928, 37.738003074187837 ], [ -122.375845295342131, 37.738003802450933 ], [ -122.37582109225724, 37.738004187769143 ], [ -122.375798609973742, 37.738004202598695 ], [ -122.375774389906638, 37.738003901450845 ], [ -122.375750161169094, 37.738003256797974 ], [ -122.375727661205985, 37.738002584893898 ], [ -122.37570341480351, 37.738001254060514 ], [ -122.375679160430039, 37.737999579985654 ], [ -122.375656634485836, 37.737997878666114 ], [ -122.375632362435553, 37.737995517861528 ], [ -122.375609819167565, 37.737993130082067 ], [ -122.375585529448685, 37.737990082822328 ], [ -122.37556296919702, 37.737987008302788 ], [ -122.375540391282939, 37.737983247608021 ], [ -122.37551432983625, 37.737978511718602 ], [ -122.375486496320931, 37.737972087487712 ], [ -122.375460382568676, 37.737965292513373 ], [ -122.375432514421007, 37.737957495642242 ], [ -122.375406358052871, 37.737948984242749 ], [ -122.375380184027932, 37.737939786666473 ], [ -122.375353992685788, 37.737929902633333 ], [ -122.375329512792433, 37.737919304628377 ], [ -122.375305015582782, 37.737908020167239 ], [ -122.37528050105756, 37.737896049249933 ], [ -122.375255969224384, 37.737883392151048 ], [ -122.375233148827334, 37.737870020533251 ], [ -122.375210319784216, 37.737856305960051 ], [ -122.375189193529863, 37.73784153419291 ], [ -122.37516805862289, 37.737826419196367 ], [ -122.375146906409697, 37.737810618019523 ], [ -122.375127474300257, 37.737794445826715 ], [ -122.375108024870912, 37.737777586905018 ], [ -122.375090295558422, 37.737760357517622 ], [ -122.375072548933076, 37.737742441676424 ], [ -122.37505479366277, 37.737724182881529 ], [ -122.375038749481291, 37.737705209578436 ], [ -122.375024434427573, 37.737686209306304 ], [ -122.375010102046858, 37.737666522032093 ], [ -122.374995761020472, 37.737646491805087 ], [ -122.374983140446119, 37.737626090835334 ], [ -122.374961338821961, 37.737584547432398 ], [ -122.374950420699136, 37.737563089278161 ], [ -122.374942960095922, 37.737541576104334 ], [ -122.374933762081014, 37.737519747213518 ], [ -122.374928021582775, 37.737497863303837 ], [ -122.374916523276909, 37.737453409032263 ], [ -122.374908906819144, 37.737425717795361 ], [ -122.374901394283526, 37.737402145264888 ], [ -122.374889826731234, 37.737354945185302 ], [ -122.374887491804515, 37.737330946902453 ], [ -122.3748834277893, 37.737306976407964 ], [ -122.374882821609901, 37.737282950341836 ], [ -122.374880487033479, 37.737258952053075 ], [ -122.374882732189576, 37.737210845452722 ], [ -122.374885583514967, 37.737186764643965 ], [ -122.374888443498122, 37.737163027060632 ], [ -122.374893031881015, 37.737139261974114 ], [ -122.37489934935347, 37.73711546937318 ], [ -122.3749056754816, 37.737092019997398 ], [ -122.374921802888267, 37.737045752947004 ], [ -122.374931603466351, 37.737022935008291 ], [ -122.374941413382857, 37.737000460008709 ], [ -122.37495296035803, 37.736978301004505 ], [ -122.374966236069355, 37.736956114489473 ], [ -122.374979529092755, 37.736934614424079 ], [ -122.375009607247023, 37.736892932445095 ], [ -122.375026392362614, 37.736872749981458 ], [ -122.375043186136296, 37.736852911015554 ], [ -122.37504977201327, 37.736839758673845 ], [ -122.375040807874441, 37.736827196605702 ], [ -122.375029742270328, 37.736799903626249 ], [ -122.375025921408564, 37.736785543166128 ], [ -122.37502556634017, 37.73677147091604 ], [ -122.375026931350064, 37.736757027929769 ], [ -122.375028304673904, 37.736742928174571 ], [ -122.375033136164149, 37.736728773387163 ], [ -122.3750397133647, 37.736715277545557 ], [ -122.37504803628174, 37.736702440924056 ], [ -122.375058114591354, 37.736690605907675 ], [ -122.375071641371591, 37.736678372922562 ], [ -122.375085194128815, 37.73666716961273 ], [ -122.375098729567796, 37.736655280124666 ], [ -122.375110518931734, 37.736642731146382 ], [ -122.375122290631623, 37.736629495995757 ], [ -122.375132325623056, 37.736615945119389 ], [ -122.375140614208931, 37.736601735308589 ], [ -122.375147156735764, 37.736586866558262 ], [ -122.375155332379663, 37.736568194818872 ], [ -122.375160085887146, 37.736550950995301 ], [ -122.375166117416924, 37.736515831932394 ], [ -122.375169124525783, 37.736497929449705 ], [ -122.375168232453305, 37.736462576936368 ], [ -122.375163874266519, 37.736426936496883 ], [ -122.375219437861915, 37.736298664625259 ], [ -122.375236617355156, 37.736225597875112 ], [ -122.375493436762397, 37.736054292153611 ], [ -122.375564665724326, 37.73599856352913 ], [ -122.375665547467477, 37.735884334377992 ], [ -122.375736776137472, 37.735828605647917 ], [ -122.375805543594495, 37.735812402863488 ], [ -122.37590130745248, 37.735838004215466 ], [ -122.375948138753657, 37.735843438862048 ], [ -122.375966461137224, 37.735815678053854 ], [ -122.375965386747623, 37.735773118079564 ], [ -122.375936427668094, 37.735722074898895 ], [ -122.375905272384003, 37.735652524496416 ], [ -122.375880455265374, 37.735628540802992 ], [ -122.375898405065016, 37.735586021302886 ], [ -122.375909891231828, 37.735561459614892 ], [ -122.375897018810662, 37.735531105204046 ], [ -122.375855226545227, 37.735519752858821 ], [ -122.375828603150225, 37.735492707640475 ], [ -122.37586986690205, 37.735483123506768 ], [ -122.375876469825457, 37.735470657017984 ], [ -122.375850080018679, 37.735452878901683 ], [ -122.375875629426574, 37.73543736440692 ], [ -122.375902751563189, 37.735415643772811 ], [ -122.37592791070513, 37.735384683844323 ], [ -122.375963949778878, 37.735305136416706 ], [ -122.375989997452365, 37.735240856058539 ], [ -122.376000720711573, 37.735186090510247 ], [ -122.375916941813387, 37.735087162261337 ], [ -122.375874456680464, 37.735048351870503 ], [ -122.37583223555086, 37.735088510886278 ], [ -122.375790902711827, 37.735095349476808 ], [ -122.375731004666164, 37.735120338792314 ], [ -122.375697972699726, 37.73518198337095 ], [ -122.375629431028628, 37.735207109686826 ], [ -122.375573154825574, 37.735238564895731 ], [ -122.37553454675556, 37.735284846828293 ], [ -122.375502844795335, 37.735330675452381 ], [ -122.375460320132888, 37.735358821434986 ], [ -122.375407345243758, 37.735384043468251 ], [ -122.375373074275174, 37.73539660668353 ], [ -122.375319406071526, 37.735394370629407 ], [ -122.375255063184753, 37.735380286724919 ], [ -122.375204090598487, 37.735347791725545 ], [ -122.375165443829161, 37.735324028264564 ], [ -122.37512657258921, 37.735291340362735 ], [ -122.375075747344539, 37.735264680144091 ], [ -122.375062572554327, 37.735222312735722 ], [ -122.375055042872361, 37.735198053755049 ], [ -122.375042101935179, 37.735164953712463 ], [ -122.375037873785985, 37.735134461646254 ], [ -122.375036955812135, 37.735098079446828 ], [ -122.375058051950944, 37.735043149193146 ], [ -122.375007538650593, 37.735028844794947 ], [ -122.3749660498938, 37.735029505033381 ], [ -122.374934543651534, 37.735014555319857 ], [ -122.374908309749543, 37.735002954785188 ], [ -122.374876500793206, 37.734975991875665 ], [ -122.374871744160856, 37.734924563038625 ], [ -122.374892528974101, 37.73485727640653 ], [ -122.374913772355171, 37.7348081807394 ], [ -122.374946666252242, 37.734741044765023 ], [ -122.374988965601105, 37.734703975095854 ], [ -122.375029917257038, 37.734682034854018 ], [ -122.375070713005826, 37.734653916534754 ], [ -122.375104671911529, 37.734628997279636 ], [ -122.375115698854458, 37.734586244981536 ], [ -122.375146199993921, 37.734561380743287 ], [ -122.375129646198275, 37.734522157113517 ], [ -122.375090930945873, 37.734495647813482 ], [ -122.375036267841509, 37.734453940390075 ], [ -122.374981985833443, 37.734427335148574 ], [ -122.374938543580228, 37.734419099017749 ], [ -122.374912994333698, 37.734434613586529 ], [ -122.374893666730827, 37.734422560335261 ], [ -122.374893060571651, 37.734398534257735 ], [ -122.374907614581076, 37.734358472486285 ], [ -122.374894292846008, 37.734310270489409 ], [ -122.374881421402023, 37.734279915955867 ], [ -122.37487704615539, 37.734243588766795 ], [ -122.374869213561681, 37.734207316868407 ], [ -122.374868295688771, 37.734170934936692 ], [ -122.374926339800538, 37.734072496020858 ], [ -122.374952543818168, 37.734014394217503 ], [ -122.374954780508872, 37.73396594408409 ], [ -122.374957241667502, 37.733926418380705 ], [ -122.374963229775304, 37.733889582909434 ], [ -122.374983289721541, 37.733862137955839 ], [ -122.375012218505518, 37.733843479312256 ], [ -122.375069108753891, 37.733836393394171 ], [ -122.375122463708166, 37.733826273440556 ], [ -122.375153432543385, 37.73381994338358 ], [ -122.375171833015472, 37.733795271716147 ], [ -122.375171062228418, 37.733764724622461 ], [ -122.375229769357603, 37.733624041261521 ], [ -122.375288514453459, 37.733553403441164 ], [ -122.375324856119903, 37.733485869092775 ], [ -122.375361353624825, 37.733424512796418 ], [ -122.375375681648336, 37.73337552709593 ], [ -122.375382713915272, 37.733311549522142 ], [ -122.375463619327064, 37.733228197775681 ], [ -122.375509608742206, 37.733200339972562 ], [ -122.375523633451934, 37.73313934134989 ], [ -122.37550722668901, 37.733105952882383 ], [ -122.375651602500071, 37.732933689521552 ], [ -122.375685404494646, 37.732902592027898 ], [ -122.375688325042901, 37.732881256983333 ], [ -122.375650684266844, 37.732897307862871 ], [ -122.375550384562601, 37.732828858101236 ], [ -122.375617693995721, 37.732754993758505 ], [ -122.375573481700997, 37.732716210488881 ], [ -122.375197427066922, 37.732959117287578 ], [ -122.375009435995196, 37.732773602543226 ], [ -122.374988848118562, 37.732780110729863 ], [ -122.374969139909751, 37.732752955276041 ], [ -122.374890774233947, 37.732799869727202 ], [ -122.374867609109913, 37.732772769268017 ], [ -122.374833347919932, 37.732785675832154 ], [ -122.374804918949508, 37.732755568576273 ], [ -122.374609189594366, 37.732880233977106 ], [ -122.374557526391285, 37.732820280340718 ], [ -122.37490487958712, 37.732604958073601 ], [ -122.374821719829242, 37.732530398040169 ], [ -122.37467574043562, 37.732639163620497 ], [ -122.37439309494539, 37.732540308159429 ], [ -122.374310276013688, 37.732547806255845 ], [ -122.374229713731395, 37.732576213850287 ], [ -122.374176359200263, 37.732586333132673 ], [ -122.374120153956625, 37.732620533463049 ], [ -122.374114165533243, 37.73265736889919 ], [ -122.374052159400549, 37.732667282379175 ], [ -122.374002184525267, 37.73267425782587 ], [ -122.373911483788106, 37.732712096999926 ], [ -122.373893083165825, 37.732736768474979 ], [ -122.373883628328045, 37.732773315665987 ], [ -122.373790281780344, 37.732774800286634 ], [ -122.373761509214617, 37.732799636420175 ], [ -122.373753549290342, 37.732826888733754 ], [ -122.373747327007891, 37.732854456775314 ], [ -122.373725625111732, 37.732885361268295 ], [ -122.373694734433712, 37.732894780258938 ], [ -122.373637610789032, 37.732892598419873 ], [ -122.373568854206965, 37.732909142898315 ], [ -122.37354165442683, 37.732927773970779 ], [ -122.373512804196523, 37.732949521278634 ], [ -122.37350146473058, 37.732979917309954 ], [ -122.373503074145475, 37.733043757608968 ], [ -122.373500309404122, 37.733071270654619 ], [ -122.373481674928072, 37.73308667468919 ], [ -122.373435459514155, 37.733105607832456 ], [ -122.373412831615411, 37.733099787091327 ], [ -122.373389322638175, 37.733127629980004 ], [ -122.373370999608952, 37.73315539040528 ], [ -122.373326815604614, 37.733186309201884 ], [ -122.373292553942591, 37.733199214767993 ], [ -122.373255060257023, 37.73322109971145 ], [ -122.373217868644616, 37.733254997012843 ], [ -122.373184748909821, 37.733313208646514 ], [ -122.373147255135009, 37.733335093555283 ], [ -122.373108032325476, 37.733357005665319 ], [ -122.373055135575555, 37.733385315688466 ], [ -122.373026509933439, 37.733415986475677 ], [ -122.372989171414929, 37.733444049131762 ], [ -122.372947104996001, 37.733490385196987 ], [ -122.372903457602277, 37.733542583556414 ], [ -122.372843059429968, 37.73361633669991 ], [ -122.372787475219468, 37.733675248937253 ], [ -122.372660653342237, 37.733789544305665 ], [ -122.372615406285462, 37.73384691842643 ], [ -122.372571792697812, 37.733900489569244 ], [ -122.372542285196062, 37.733964824408801 ], [ -122.372515465283058, 37.733998556633921 ], [ -122.372467598558771, 37.73402060589649 ], [ -122.372390422139858, 37.734046211198297 ], [ -122.372337516324379, 37.734074177664638 ], [ -122.372263676850309, 37.734163595440648 ], [ -122.372229942026564, 37.734197437754013 ], [ -122.37219905926051, 37.734207199576488 ], [ -122.372135400372358, 37.734220228553554 ], [ -122.372066183983833, 37.734218581449781 ], [ -122.37202454003129, 37.734213062859681 ], [ -122.371977485584694, 37.734198702222137 ], [ -122.371931036017173, 37.73420836793948 ], [ -122.371912020534467, 37.734208670054151 ], [ -122.371892468688813, 37.734187692159942 ], [ -122.371850522169254, 37.73417016004948 ], [ -122.371815256975381, 37.734143251243232 ], [ -122.37178360511767, 37.734122465563011 ], [ -122.371757069813924, 37.734098851958706 ], [ -122.371718425134958, 37.734075087082275 ], [ -122.371658811600753, 37.734042727577382 ], [ -122.37159046796063, 37.734007073362946 ], [ -122.371530163390418, 37.733947255979729 ], [ -122.371503472637912, 37.733917463974464 ], [ -122.371452035953411, 37.733866433138324 ], [ -122.371412863920071, 37.733821731652299 ], [ -122.371365343126712, 37.733788836837448 ], [ -122.371306006337434, 37.733698787998705 ], [ -122.37124803587426, 37.73366296856193 ], [ -122.371181508213965, 37.733630718908138 ], [ -122.371142786185317, 37.733603864806447 ], [ -122.371119319714566, 37.733564750701184 ], [ -122.371068652635969, 37.733544266816153 ], [ -122.37104196222009, 37.733514474978968 ], [ -122.371009541074471, 37.733463141702856 ], [ -122.370970292434578, 37.733415350746299 ], [ -122.370945321772282, 37.733385187940364 ], [ -122.370906375642221, 37.733349409875622 ], [ -122.370882676078168, 37.733301028616602 ], [ -122.370853876981954, 37.733256162236223 ], [ -122.370812000355784, 37.733241375562343 ], [ -122.370762102212552, 37.733251438949395 ], [ -122.3707392498319, 37.733236693541137 ], [ -122.370742015947201, 37.733209180555527 ], [ -122.370734029961071, 37.733166730305776 ], [ -122.370713641007328, 37.733112459546398 ], [ -122.370604476976737, 37.73303521894465 ], [ -122.370512089823777, 37.733006126395267 ], [ -122.370444949736466, 37.73294950753936 ], [ -122.370336702208434, 37.732908648655865 ], [ -122.370231912105666, 37.732867735066925 ], [ -122.37017410658585, 37.732838436949166 ], [ -122.370077726716076, 37.732788118918357 ], [ -122.369991114296425, 37.732713610079365 ], [ -122.369927812152071, 37.732672038006164 ], [ -122.369888943911135, 37.73263934837334 ], [ -122.369823835861169, 37.732594714362811 ], [ -122.369764448866945, 37.732571278048333 ], [ -122.369664767427579, 37.732527192896548 ], [ -122.369608556728025, 37.732490658570462 ], [ -122.369587411983062, 37.732476915661685 ], [ -122.369536133374979, 37.732432062044303 ], [ -122.369522426580374, 37.732368414248455 ], [ -122.369524131442745, 37.732298684450967 ], [ -122.369528168991479, 37.732252953067388 ], [ -122.369514764766407, 37.732201317633788 ], [ -122.369460037420595, 37.732156862346898 ], [ -122.369435499832107, 37.732143860523472 ], [ -122.369412699166176, 37.732131174223944 ], [ -122.369391627493243, 37.732118460761214 ], [ -122.369368818907404, 37.732105431490474 ], [ -122.369347729982366, 37.732092031567248 ], [ -122.369305534888653, 37.732064545256826 ], [ -122.36928614837251, 37.732050088222451 ], [ -122.369265033578955, 37.732035658605412 ], [ -122.369208612399049, 37.731992603257169 ], [ -122.36919310687361, 37.731994909435159 ], [ -122.369177583743095, 37.731996529438547 ], [ -122.369162034700395, 37.731997119211783 ], [ -122.369144739776431, 37.731997050503772 ], [ -122.369129147571257, 37.731995924141103 ], [ -122.369113529476451, 37.731993768371993 ], [ -122.369097893772235, 37.731990926153657 ], [ -122.369082241496287, 37.731987397469659 ], [ -122.369068291609253, 37.731982811686983 ], [ -122.369052587205204, 37.731977223921163 ], [ -122.369038602793921, 37.731971265229653 ], [ -122.369026321118199, 37.73196424943503 ], [ -122.36900353818659, 37.731952249503117 ], [ -122.368984376529525, 37.731946716297898 ], [ -122.368965231792913, 37.731941869547697 ], [ -122.368946113651845, 37.731938052736979 ], [ -122.368927003791569, 37.731934578880427 ], [ -122.368907928458668, 37.731932477926101 ], [ -122.368887133122826, 37.731930747340918 ], [ -122.368868091978015, 37.73193001956556 ], [ -122.368847348437356, 37.731930348605978 ], [ -122.368826613520639, 37.731931020594487 ], [ -122.368807642108294, 37.731933038334546 ], [ -122.368788678980067, 37.731935399303374 ], [ -122.368768013114249, 37.731938817366917 ], [ -122.368749101767222, 37.731943237687446 ], [ -122.368730207333343, 37.731948344463113 ], [ -122.368711330849322, 37.731954137677484 ], [ -122.368694217167373, 37.731961276382087 ], [ -122.368680664304932, 37.731972478965581 ], [ -122.368668865613287, 37.731984683814787 ], [ -122.368657084876617, 37.73199757537909 ], [ -122.368648777958526, 37.732011098297363 ], [ -122.368640488989229, 37.732025307656784 ], [ -122.368633936925264, 37.73203983255609 ], [ -122.368629130411534, 37.732055016771099 ], [ -122.368626053219003, 37.732070173558292 ], [ -122.368624712941653, 37.732085646160606 ], [ -122.368625101296246, 37.732101091346223 ], [ -122.368627218283763, 37.732116509115187 ], [ -122.368631063559619, 37.732131899472847 ], [ -122.368636620901697, 37.732146575949926 ], [ -122.368642134756229, 37.73215953657504 ], [ -122.36864418270045, 37.732172208258227 ], [ -122.368644510648082, 37.732185250859203 ], [ -122.368643101337838, 37.732197977925267 ], [ -122.368638226113163, 37.732210416049476 ], [ -122.368633341924749, 37.732222511501767 ], [ -122.368624983881077, 37.732233974774296 ], [ -122.368616599605744, 37.732244408647276 ], [ -122.368606469086217, 37.732254183488791 ], [ -122.368594576099341, 37.732262612829288 ], [ -122.368580928237833, 37.732270039911 ], [ -122.368565516878832, 37.732276121781609 ], [ -122.368551791336984, 37.732280459548285 ], [ -122.368534574353816, 37.732283479507736 ], [ -122.368503527583357, 37.732286718795137 ], [ -122.368474192879688, 37.732289244196302 ], [ -122.368444831940408, 37.732290739916586 ], [ -122.368417182378593, 37.732291521763315 ], [ -122.368387786921161, 37.732291644563965 ], [ -122.368358365231217, 37.732290737683726 ], [ -122.368330655267144, 37.732289116925642 ], [ -122.368301199755848, 37.732286837114728 ], [ -122.368273446651969, 37.732283500211402 ], [ -122.368243956285454, 37.732279847486197 ], [ -122.368216168673811, 37.732275137663905 ], [ -122.368188355181374, 37.73226939815595 ], [ -122.368160533065264, 37.732263315415068 ], [ -122.368141380018642, 37.732258125299396 ], [ -122.368113230055812, 37.732238999945096 ], [ -122.36808681703171, 37.732220190681751 ], [ -122.368058684352292, 37.732201751767072 ], [ -122.36803056030729, 37.7321836557974 ], [ -122.368002444910147, 37.732165903321956 ], [ -122.367974346780599, 37.732148837292527 ], [ -122.367944520376312, 37.73213179865752 ], [ -122.367916439533545, 37.732115419341561 ], [ -122.367886638690265, 37.732099410376478 ], [ -122.367832352327795, 37.732072458330258 ], [ -122.367819906502248, 37.73205892111374 ], [ -122.367804021362375, 37.732046125146958 ], [ -122.367788153134725, 37.73203401563628 ], [ -122.367772302171431, 37.732022592850853 ], [ -122.36775646811256, 37.732011856247048 ], [ -122.36773719473392, 37.732001860615576 ], [ -122.367719666903668, 37.731992524310549 ], [ -122.367700427353682, 37.731983901864261 ], [ -122.367681205751111, 37.731975965856719 ], [ -122.367660281054071, 37.731969086933262 ], [ -122.367641110867112, 37.73196321028319 ], [ -122.367620229304634, 37.731958047484753 ], [ -122.367599364995712, 37.731953571135463 ], [ -122.367576797935783, 37.73195015186301 ], [ -122.367555976757444, 37.731947391638229 ], [ -122.367533461105907, 37.731946031721549 ], [ -122.367512683055082, 37.731944987621269 ], [ -122.367483296703725, 37.731945453417282 ], [ -122.367460850404399, 37.731946839567364 ], [ -122.367440158593624, 37.731949227444112 ], [ -122.367417755407999, 37.731952329443608 ], [ -122.367397106730152, 37.731956433994185 ], [ -122.367376475284885, 37.731961224444852 ], [ -122.367355869716533, 37.731967044845845 ], [ -122.367335281393224, 37.731973551696129 ], [ -122.367316447568555, 37.731981060824729 ], [ -122.367295902357668, 37.73198928380036 ], [ -122.367278831305327, 37.731998138437078 ], [ -122.367261967911546, 37.732015230495207 ], [ -122.367245095194775, 37.732031979335368 ], [ -122.3672282059146, 37.732048041709206 ], [ -122.367209570402153, 37.732063445029034 ], [ -122.36719092591278, 37.732078505124896 ], [ -122.367170544505385, 37.732093249381123 ], [ -122.367151866198881, 37.732106936553961 ], [ -122.367109296757391, 37.732133363410995 ], [ -122.367093954975161, 37.732142190615349 ], [ -122.367075008646182, 37.732145238041312 ], [ -122.367056088868793, 37.732149314858027 ], [ -122.367037194611967, 37.732154421356583 ], [ -122.367020054502376, 37.732160529869304 ], [ -122.367002940956212, 37.732167668322553 ], [ -122.366985852582928, 37.732175836463647 ], [ -122.366968782142251, 37.732184691044218 ], [ -122.366955194489435, 37.732194520522967 ], [ -122.366939895442201, 37.732205063845008 ], [ -122.366921113252403, 37.732214632268928 ], [ -122.366907922208441, 37.732240250159542 ], [ -122.366903055326574, 37.732253031987497 ], [ -122.36689644254804, 37.732265154204406 ], [ -122.366886346633592, 37.732276301798386 ], [ -122.366876207612776, 37.732285733533743 ], [ -122.366862576812395, 37.732293846594757 ], [ -122.366847157024765, 37.732299584734065 ], [ -122.366829956520121, 37.73230329090832 ], [ -122.366814424990764, 37.732304567093777 ], [ -122.366797104132374, 37.732303468361799 ], [ -122.366781459823102, 37.732300282335181 ], [ -122.366765755862758, 37.732294693984812 ], [ -122.366677289399263, 37.732215062245395 ], [ -122.365834112470068, 37.733139703386506 ], [ -122.365856312715465, 37.733197380427903 ], [ -122.365316308712423, 37.733799605173139 ], [ -122.365299125359911, 37.733803997570533 ], [ -122.365281864478533, 37.733805301201542 ], [ -122.365264543279295, 37.733804201695385 ], [ -122.365248890111999, 37.733800672514192 ], [ -122.365233177335227, 37.733794740734439 ], [ -122.365220860913354, 37.733786351644746 ], [ -122.36520850211312, 37.733776246410308 ], [ -122.365199556897281, 37.733764370320301 ], [ -122.365194052497998, 37.733751753307722 ], [ -122.365191987516951, 37.733738394845759 ], [ -122.366541619606664, 37.732183905191341 ], [ -122.366457610712786, 37.732144032787161 ], [ -122.366314210759612, 37.732287082999953 ], [ -122.3662299863946, 37.73223862977143 ], [ -122.365558974179407, 37.732995040740846 ], [ -122.365446339012479, 37.733054852496743 ], [ -122.365330791791507, 37.732998653575926 ], [ -122.365348830518258, 37.732890552295949 ], [ -122.366182259071422, 37.731990790641241 ], [ -122.366150729675482, 37.731974808623058 ], [ -122.366190760220135, 37.731916146203794 ], [ -122.366000047621938, 37.731827832578617 ], [ -122.365157289100338, 37.732769287028631 ], [ -122.365013538239467, 37.732829590952356 ], [ -122.364937337201866, 37.732756287397883 ], [ -122.364966161751269, 37.732664496598098 ], [ -122.365779063978152, 37.731773647061175 ], [ -122.365808723306458, 37.731715149013056 ], [ -122.36565085480737, 37.73162631442078 ], [ -122.364828209515139, 37.732542382802549 ], [ -122.364733415884473, 37.732486198184951 ], [ -122.36510850587311, 37.732065821885968 ], [ -122.363700263748257, 37.731284294325405 ], [ -122.362990310438022, 37.732074612690823 ], [ -122.362876152103269, 37.73214268678057 ], [ -122.362621964702214, 37.732005583479989 ], [ -122.363403772813015, 37.731115242143439 ], [ -122.362852893371198, 37.730800849481362 ], [ -122.362060297076368, 37.731674875973241 ], [ -122.361775005493385, 37.731538605834466 ], [ -122.362457618945527, 37.730761087830871 ], [ -122.36256707070703, 37.730643300895977 ], [ -122.361976423103286, 37.73032884619532 ], [ -122.362085849184908, 37.730210029743688 ], [ -122.362069397962841, 37.730199017017426 ], [ -122.361906454524132, 37.730089941350215 ], [ -122.361876896198638, 37.7300835409455 ], [ -122.361847355773691, 37.730077827250902 ], [ -122.361816112221945, 37.7300731708266 ], [ -122.361786605500626, 37.73006882976096 ], [ -122.361755405286033, 37.7300658891753 ], [ -122.361724221585348, 37.730063635320825 ], [ -122.361693055759957, 37.73006206735193 ], [ -122.361661915051329, 37.730061529615817 ], [ -122.361630792215976, 37.730061677765306 ], [ -122.36159969448822, 37.730062855873037 ], [ -122.361570343233169, 37.730064693102427 ], [ -122.361539288834621, 37.730067587323632 ], [ -122.361508260224696, 37.730071511217581 ], [ -122.361487577348555, 37.730074241551335 ], [ -122.361465200270104, 37.730078372100991 ], [ -122.36144452599406, 37.730081445928768 ], [ -122.361422114524615, 37.730084203562313 ], [ -122.361399676911404, 37.730085931241504 ], [ -122.361377231405925, 37.730087316227653 ], [ -122.361354776950733, 37.730088357713434 ], [ -122.361334025287775, 37.730088341929708 ], [ -122.361311536447275, 37.730088010499266 ], [ -122.361266507191544, 37.730085288263524 ], [ -122.36124396677755, 37.73008289745821 ], [ -122.361223137761826, 37.730079792886535 ], [ -122.361200571564154, 37.73007637239192 ], [ -122.361179716772469, 37.730072238406137 ], [ -122.361157115844946, 37.730067444726025 ], [ -122.361136235265462, 37.730062280776941 ], [ -122.361115337498504, 37.730056430370134 ], [ -122.361094422544639, 37.73004989350558 ], [ -122.361073490411371, 37.73004267045787 ], [ -122.361054278613267, 37.730035076593815 ], [ -122.361035057871703, 37.730027139230472 ], [ -122.361015811356936, 37.73001817245752 ], [ -122.360991310330121, 37.730006541779254 ], [ -122.360878119757459, 37.729906007842899 ], [ -122.360753350678607, 37.729964633086148 ], [ -122.360767411397134, 37.729973682080846 ], [ -122.360779769645887, 37.729983787501872 ], [ -122.360792153340185, 37.729994922882732 ], [ -122.360802816699632, 37.730006428796685 ], [ -122.360811777948271, 37.730018991681831 ], [ -122.360819018860866, 37.730031925100903 ], [ -122.360824539436592, 37.730045229054205 ], [ -122.360830077893482, 37.730059219450361 ], [ -122.360833887418579, 37.730073237154031 ], [ -122.360834600711755, 37.730101724997503 ], [ -122.360833232727501, 37.73011616811506 ], [ -122.360830128237026, 37.730130294747774 ], [ -122.360825286222877, 37.73014410573559 ], [ -122.360820435267328, 37.730157573501607 ], [ -122.360812119233699, 37.73017075290813 ], [ -122.360803785650091, 37.730183245316248 ], [ -122.36079369735269, 37.730194735624472 ], [ -122.360781872558661, 37.730205909995462 ], [ -122.360768293049901, 37.730216082265592 ], [ -122.360754687743039, 37.730225224303872 ], [ -122.360741056659265, 37.73023333693407 ], [ -122.360665462649848, 37.730253072686551 ], [ -122.360627639840885, 37.730261910451617 ], [ -122.360550239838858, 37.730278584111481 ], [ -122.360510654054025, 37.730286076778114 ], [ -122.360471050717251, 37.730292882433631 ], [ -122.360433168073058, 37.730299317816012 ], [ -122.360393539299068, 37.730305094033461 ], [ -122.360353901588383, 37.730310527290548 ], [ -122.36031424736656, 37.730315273520141 ], [ -122.360274575618163, 37.730319333562264 ], [ -122.36023489527426, 37.730323050363999 ], [ -122.360195197398738, 37.730326080703698 ], [ -122.360155491620617, 37.730328767792003 ], [ -122.36011403972519, 37.730330795984656 ], [ -122.360074299227378, 37.730332109868229 ], [ -122.360034550144817, 37.730333080785911 ], [ -122.359994783535413, 37.730333365241471 ], [ -122.359955000437409, 37.730332963218565 ], [ -122.359915208404431, 37.73033221796058 ], [ -122.359854003265156, 37.730305028433676 ], [ -122.359236184689337, 37.730009873800213 ], [ -122.358789557472875, 37.729783434605018 ], [ -122.358957232902597, 37.729711773403928 ], [ -122.358843527027545, 37.729659659273459 ], [ -122.358967948048644, 37.72951794751873 ], [ -122.361421463309, 37.72895351973942 ], [ -122.361888691367042, 37.728828706580281 ], [ -122.361912779413899, 37.728823862451726 ], [ -122.361935121341887, 37.72881835863901 ], [ -122.361959166726493, 37.728811798085822 ], [ -122.361981474603837, 37.72880492162534 ], [ -122.362003764939914, 37.728797358986661 ], [ -122.3620260473499, 37.728789452556619 ], [ -122.362046575060617, 37.728780544041506 ], [ -122.36206882272441, 37.728771264975364 ], [ -122.362089324633246, 37.728761327046321 ], [ -122.362109817923212, 37.728751045337532 ], [ -122.362128556858551, 37.728739761540034 ], [ -122.362149024344589, 37.728728450417933 ], [ -122.362167737129766, 37.728716137213183 ], [ -122.362184713430636, 37.728703507540494 ], [ -122.36220340934922, 37.728690507870553 ], [ -122.362220359498949, 37.7286768487917 ], [ -122.362237301035364, 37.728662846208799 ], [ -122.362250811264033, 37.72864992822533 ], [ -122.362262661390673, 37.728639783385113 ], [ -122.36227275785032, 37.728628636175188 ], [ -122.362281099606278, 37.728616486612424 ], [ -122.362287695612011, 37.728603678193288 ], [ -122.362292545854572, 37.728590210368907 ], [ -122.362295667196847, 37.728576769873541 ], [ -122.36229531457775, 37.728562697566197 ], [ -122.362293242345899, 37.72854899552955 ], [ -122.362289449824587, 37.728535664323587 ], [ -122.362282165799911, 37.728521014856675 ], [ -122.36224367326102, 37.72850308198516 ], [ -122.36222272423764, 37.72849517213659 ], [ -122.362203512030703, 37.728487578468915 ], [ -122.362182580222708, 37.728480355341809 ], [ -122.362161665625351, 37.728473818939591 ], [ -122.36213904001275, 37.728467995754578 ], [ -122.362118159814372, 37.728462831978135 ], [ -122.362095568274697, 37.728458382247503 ], [ -122.36207471387344, 37.728454247869884 ], [ -122.362052148130076, 37.728450827537444 ], [ -122.362029590642308, 37.728447750433155 ], [ -122.362007059652058, 37.728445703269323 ], [ -122.361984536902597, 37.72844399878452 ], [ -122.361962039957774, 37.728443324251103 ], [ -122.361939551266488, 37.728442992945915 ], [ -122.361917071865491, 37.728443004852515 ], [ -122.361894617914601, 37.72844404644146 ], [ -122.361872181160052, 37.728445774480214 ], [ -122.361849752657179, 37.728447845747191 ], [ -122.361830790542825, 37.728450205592154 ], [ -122.36144874592047, 37.728523885066956 ], [ -122.359253585410741, 37.729046466872113 ], [ -122.358871094316868, 37.729171649615353 ], [ -122.35773138480485, 37.729443027877707 ], [ -122.357479163493281, 37.729245451178592 ], [ -122.357874687244575, 37.728949759623752 ], [ -122.360022133800982, 37.7284550828631 ], [ -122.360041044772572, 37.728450663666095 ], [ -122.360061675709247, 37.728445874222452 ], [ -122.360082280872575, 37.728440055093671 ], [ -122.360102877442358, 37.728433892734103 ], [ -122.360121736868166, 37.728427414435657 ], [ -122.360140578770867, 37.728420249959875 ], [ -122.360159404166396, 37.728412398466652 ], [ -122.36017822062847, 37.728404204023278 ], [ -122.360197019904888, 37.728395323122534 ], [ -122.360214082043697, 37.728386126559464 ], [ -122.360231126982725, 37.728376242990407 ], [ -122.360248163333068, 37.728366016466275 ], [ -122.36026519109457, 37.728355446987074 ], [ -122.360282201662045, 37.728344190776504 ], [ -122.36029747473269, 37.728332618361613 ], [ -122.360312739905595, 37.728320702981229 ], [ -122.36033977808566, 37.728295553906939 ], [ -122.360351645599536, 37.728286095712676 ], [ -122.360365302143265, 37.728279012806425 ], [ -122.360378915726486, 37.728270213762769 ], [ -122.360389029601677, 37.728259753167933 ], [ -122.360397388807456, 37.728248290192134 ], [ -122.360404002281641, 37.728236168057407 ], [ -122.360407132887943, 37.728223070833039 ], [ -122.360408534948149, 37.728210000904646 ], [ -122.360406479925388, 37.728196985842978 ], [ -122.360402696345233, 37.728183997528113 ], [ -122.360395481466924, 37.728172094035642 ], [ -122.360384800897904, 37.728159901357934 ], [ -122.360355252076161, 37.728153844345819 ], [ -122.360324001174106, 37.728148844017177 ], [ -122.360292766760338, 37.728144529870931 ], [ -122.360263287371851, 37.728141218642236 ], [ -122.360232104855839, 37.72813896383753 ], [ -122.360200939536938, 37.728137396028139 ], [ -122.360168062497735, 37.728136541413733 ], [ -122.360136940472302, 37.728136689443289 ], [ -122.360105834935908, 37.728137523929909 ], [ -122.360074755867601, 37.72813938835359 ], [ -122.3600437018695, 37.728142282186987 ], [ -122.360012665740157, 37.728145862455676 ], [ -122.359981646088997, 37.728150128906918 ], [ -122.359962709760239, 37.728153518132949 ], [ -122.357157402740128, 37.728825440588068 ], [ -122.357120443323197, 37.728661209162873 ], [ -122.356966039195882, 37.728710340572775 ], [ -122.357700794819991, 37.726282170189641 ], [ -122.358012892774155, 37.726039297958998 ], [ -122.361640904109578, 37.725218727031361 ], [ -122.361254856267323, 37.72416520811381 ], [ -122.357961297733482, 37.724943754212269 ], [ -122.357837451289754, 37.724623976380613 ], [ -122.361242175061918, 37.723839816434847 ], [ -122.361523474456462, 37.723775023602428 ], [ -122.362006156184762, 37.724061314272362 ], [ -122.362085553062059, 37.723986579862476 ], [ -122.364138473489092, 37.725245158496556 ], [ -122.364903800810126, 37.725700019832075 ], [ -122.364922994995325, 37.725706926339846 ], [ -122.364942154395848, 37.72571246021662 ], [ -122.364961297265722, 37.725717307625388 ], [ -122.364980405349158, 37.725720782403215 ], [ -122.364999487582764, 37.725723226947871 ], [ -122.365020272471824, 37.725724614719347 ], [ -122.365041031523262, 37.725724972806269 ], [ -122.365060035904975, 37.725724328578444 ], [ -122.365080734672432, 37.725722284344187 ], [ -122.365099679446047, 37.725719237235722 ], [ -122.365120326525016, 37.725715133358143 ], [ -122.365139219276756, 37.72571002716159 ], [ -122.365158077572545, 37.72570354805417 ], [ -122.365175190160244, 37.725696410130439 ], [ -122.365192276890355, 37.725688241974169 ], [ -122.365209337782844, 37.725679044409119 ], [ -122.365224644000321, 37.725668844532997 ], [ -122.365239933677543, 37.725657958189977 ], [ -122.365253477293393, 37.725646412763744 ], [ -122.365266995070428, 37.725633837929628 ], [ -122.365277047249194, 37.725620974052937 ], [ -122.365288802072243, 37.725607053401404 ], [ -122.365297091312215, 37.725592844257413 ], [ -122.365305371596236, 37.725578292165878 ], [ -122.365311906499173, 37.725563080433261 ], [ -122.365316704663556, 37.725547553385105 ], [ -122.365321493859298, 37.725531682840639 ], [ -122.365324157971415, 37.725500050955006 ], [ -122.365323753109038, 37.725483919287925 ], [ -122.365321628734094, 37.725468158485079 ], [ -122.365319495386515, 37.725452053911503 ], [ -122.365308348911952, 37.725421327973351 ], [ -122.36530105597663, 37.725406335184097 ], [ -122.365293771671986, 37.725391686170454 ], [ -122.365052724436055, 37.725226224132847 ], [ -122.362366609167395, 37.723678947002448 ], [ -122.362750319199407, 37.723258784478411 ], [ -122.359975808223695, 37.721629071078588 ], [ -122.360235314638061, 37.721358523571041 ], [ -122.362997490302945, 37.722979154853967 ], [ -122.363810654823226, 37.722102046578357 ], [ -122.359221672042082, 37.719406711581087 ], [ -122.359190415962686, 37.719401367722426 ], [ -122.359178102953109, 37.719392977976057 ], [ -122.359165764191417, 37.719383558545161 ], [ -122.359156864943031, 37.719373398101943 ], [ -122.359147948527337, 37.719362551202536 ], [ -122.359140734699196, 37.719350647341678 ], [ -122.359135249212571, 37.719338716202891 ], [ -122.359131474551347, 37.719326071336383 ], [ -122.359129420336572, 37.719313055953705 ], [ -122.359129102699868, 37.719300356526816 ], [ -122.359130504470841, 37.719287286600235 ], [ -122.359133643855102, 37.719274532613021 ], [ -122.359136791138639, 37.719262122138936 ], [ -122.359143412603785, 37.719250343285097 ], [ -122.359151771327333, 37.719238880100924 ], [ -122.359815079156419, 37.718522454511614 ], [ -122.359825208614936, 37.718512680409624 ], [ -122.359837083220526, 37.718503565479963 ], [ -122.359848984278528, 37.718495480221421 ], [ -122.359862639071579, 37.718488397362229 ], [ -122.359878056187881, 37.718482660129546 ], [ -122.359891771100081, 37.718477980135759 ], [ -122.359908985921422, 37.718474961146882 ], [ -122.359924497848894, 37.718472999407822 ], [ -122.359940043783581, 37.718472410583125 ], [ -122.359957353082052, 37.718473167366923 ], [ -122.359972959482164, 37.71847498112659 ], [ -122.359988608480634, 37.718478511028351 ], [ -122.360004292526796, 37.718483413828061 ], [ -122.360018273683508, 37.718489373879351 ], [ -122.360032280595263, 37.718496363062989 ], [ -122.360394084962891, 37.718708825628347 ], [ -122.36271365411622, 37.720070891670908 ], [ -122.36303235937622, 37.719710951141145 ], [ -122.363036490990609, 37.719706284726648 ], [ -122.363048348187263, 37.719696483020158 ], [ -122.363061977094034, 37.719688370383778 ], [ -122.363077377690658, 37.719681945993095 ], [ -122.363092812365167, 37.719676895064836 ], [ -122.363110026642786, 37.719673875619748 ], [ -122.363137662964078, 37.719672751789325 ], [ -122.363153270039291, 37.719674565121885 ], [ -122.363173373533897, 37.719648838527299 ], [ -122.363166176233463, 37.71963762109376 ], [ -122.363158953131787, 37.71962537425204 ], [ -122.363155178117267, 37.719612729509564 ], [ -122.363154851195048, 37.719599687141276 ], [ -122.363156260860393, 37.719586960120296 ], [ -122.363161127909819, 37.719574178689925 ], [ -122.363167748765107, 37.719562399610538 ], [ -122.363176106218731, 37.71955093642692 ], [ -122.363656438242259, 37.719054731797513 ], [ -122.362565556645677, 37.718438823432876 ], [ -122.362551540892355, 37.718431490773646 ], [ -122.362539227318422, 37.718423101382719 ], [ -122.362526897237885, 37.718414025524474 ], [ -122.362514558214372, 37.718404606442824 ], [ -122.36250392996385, 37.718394473583345 ], [ -122.36249501352286, 37.718383626930098 ], [ -122.362486088138667, 37.718372437054043 ], [ -122.362478882472217, 37.718360876623265 ], [ -122.362471659607849, 37.718348629736866 ], [ -122.362466165060482, 37.718336355523718 ], [ -122.362462381629214, 37.718323367528868 ], [ -122.362458606799294, 37.718310722761444 ], [ -122.362456543084349, 37.718297364212575 ], [ -122.362455889483016, 37.71827127891747 ], [ -122.362457290995351, 37.718258208943666 ], [ -122.362463550642957, 37.718232014343421 ], [ -122.362473301309748, 37.71820713800021 ], [ -122.362481650470514, 37.718195331904944 ], [ -122.362488271303789, 37.718183552586531 ], [ -122.362498365618194, 37.718172405349378 ], [ -122.362508477828271, 37.718161944830108 ], [ -122.358583730913253, 37.71588288357988 ], [ -122.358723442672868, 37.715731315969869 ], [ -122.362644996220368, 37.718021067053435 ], [ -122.362786346352422, 37.717866035066777 ], [ -122.363866062384275, 37.716726843144961 ], [ -122.359920053051226, 37.714425844522381 ], [ -122.3600361482696, 37.714297997140655 ], [ -122.36397478584415, 37.716580910244524 ], [ -122.364251293111423, 37.716300126312575 ], [ -122.364263175435909, 37.716291354435697 ], [ -122.364276820788504, 37.716283927560291 ], [ -122.364290517794743, 37.716278560323119 ], [ -122.364305977843998, 37.71627453863573 ], [ -122.364321497804667, 37.716272919544586 ], [ -122.364340525947497, 37.716273305108999 ], [ -122.364356149216732, 37.716275805018348 ], [ -122.364370087250265, 37.716280047868423 ], [ -122.364395976814166, 37.716278264915964 ], [ -122.365216452571488, 37.715351584174513 ], [ -122.365237670931208, 37.715301460414111 ], [ -122.365239473467412, 37.715235505999942 ], [ -122.365193066829221, 37.715177525619964 ], [ -122.364773705990487, 37.714932479640773 ], [ -122.364736623334764, 37.714970493365534 ], [ -122.364580089435904, 37.714864468359181 ], [ -122.364552651047106, 37.714804470653064 ], [ -122.364268407924328, 37.714638661242532 ], [ -122.364188831965635, 37.714636830395087 ], [ -122.364013771393857, 37.714550326239625 ], [ -122.364049082949748, 37.714510623951149 ], [ -122.363306902062419, 37.714077710648965 ], [ -122.363268090521188, 37.714115751260778 ], [ -122.363113289075798, 37.714009696947421 ], [ -122.363085852186202, 37.713949698891518 ], [ -122.362801615602848, 37.713783885919405 ], [ -122.362722040595187, 37.71378205408088 ], [ -122.362546983742845, 37.713695547734027 ], [ -122.362582295682941, 37.71365584615441 ], [ -122.361848935833351, 37.713229308027309 ], [ -122.361811844287786, 37.713266977882924 ], [ -122.361655318485532, 37.713160948681605 ], [ -122.361629610933349, 37.71310092296946 ], [ -122.361345380842891, 37.712935106461451 ], [ -122.361265806779613, 37.712933273639017 ], [ -122.361094407643563, 37.712854605021889 ], [ -122.361124337741387, 37.712807091000208 ], [ -122.361139435636801, 37.712788654437141 ], [ -122.361171360606775, 37.712751753157583 ], [ -122.36134313774096, 37.71284552396822 ], [ -122.361365062017143, 37.71289256197857 ], [ -122.361673856292811, 37.713072754562113 ], [ -122.361737876782101, 37.71307483295093 ], [ -122.361918064233436, 37.713159199186485 ], [ -122.361884368625439, 37.713194411838948 ], [ -122.362612508613324, 37.713619658283974 ], [ -122.362644433215863, 37.713582756884641 ], [ -122.362801089987357, 37.713693933186988 ], [ -122.362823024023626, 37.713741313598298 ], [ -122.363131825365173, 37.713921502610397 ], [ -122.363194118414285, 37.713923607543634 ], [ -122.3633743099209, 37.714007971534919 ], [ -122.36334061461109, 37.714043184324609 ], [ -122.364079295520412, 37.714474435984016 ], [ -122.364111219761938, 37.714437534192207 ], [ -122.364267880521169, 37.714548708254327 ], [ -122.36428981575132, 37.714596088660656 ], [ -122.364598624198337, 37.714776273803345 ], [ -122.3646609180052, 37.714778377960677 ], [ -122.364841113248019, 37.714862739696905 ], [ -122.364807418245547, 37.714897952901332 ], [ -122.365388188712686, 37.715236584611482 ], [ -122.364417662979704, 37.716315691686994 ], [ -122.364424868749381, 37.716327252003005 ], [ -122.364428635197243, 37.716339553209288 ], [ -122.36443069025762, 37.716352568505734 ], [ -122.364429280864911, 37.716365295273981 ], [ -122.364446761552514, 37.716372915954452 ], [ -122.364465978782491, 37.716380852784248 ], [ -122.364483468425433, 37.716388816406734 ], [ -122.364500965996967, 37.716397123539672 ], [ -122.364516744604018, 37.716405801242992 ], [ -122.364534251138338, 37.716414451592989 ], [ -122.364551766293047, 37.716423445442487 ], [ -122.364583357274199, 37.716442173479727 ], [ -122.364621964676815, 37.71646491108153 ], [ -122.364637708534104, 37.71647221613857 ], [ -122.364653409330941, 37.716477804506788 ], [ -122.364670803974548, 37.716481993153423 ], [ -122.36468815555574, 37.716484465110796 ], [ -122.364705455483815, 37.716484877975191 ], [ -122.364722720971017, 37.716483917927022 ], [ -122.364739943405979, 37.716481241738855 ], [ -122.364757122787552, 37.716476849410668 ], [ -122.364774250504041, 37.716470397714986 ], [ -122.364791343775195, 37.716462573106803 ], [ -122.364806691205743, 37.716454089407321 ], [ -122.364822022102643, 37.716444919239876 ], [ -122.364837335428504, 37.716435062620917 ], [ -122.364850911876999, 37.716424890408376 ], [ -122.364864471086165, 37.716414031190091 ], [ -122.364878013083185, 37.716402486064425 ], [ -122.364901605717435, 37.716378076804247 ], [ -122.364911648449322, 37.716364869981213 ], [ -122.364916549084953, 37.716353461387165 ], [ -122.364917950128515, 37.716340391380108 ], [ -122.364921087704161, 37.716327637243623 ], [ -122.364924234581224, 37.716315226323587 ], [ -122.364933983827555, 37.716290349774575 ], [ -122.36494722438934, 37.71626679140374 ], [ -122.364953853285272, 37.716255355719817 ], [ -122.364962219394371, 37.716244235619989 ], [ -122.364972322024684, 37.716233431114844 ], [ -122.364982433270342, 37.716222970110884 ], [ -122.364992553124679, 37.716212852333562 ], [ -122.365002690199319, 37.716203421010327 ], [ -122.365014563801225, 37.716194305555454 ], [ -122.365026455321683, 37.716185876818017 ], [ -122.36504008335524, 37.716177763399081 ], [ -122.365052000352904, 37.716170364072397 ], [ -122.365065654230065, 37.716163280882121 ], [ -122.365094741897337, 37.716151145947677 ], [ -122.365110106446139, 37.716143348388663 ], [ -122.365113201618499, 37.716128878372835 ], [ -122.365116304696627, 37.716114751046177 ], [ -122.365122873261583, 37.716100912485444 ], [ -122.365129459055197, 37.716087760653849 ], [ -122.365139510312659, 37.716074896763658 ], [ -122.365149578106625, 37.716062719613106 ], [ -122.365161392080509, 37.716051201814444 ], [ -122.365176644641494, 37.716038942289195 ], [ -122.365188518887109, 37.71602982680561 ], [ -122.365202138268813, 37.716021370414808 ], [ -122.365217494173905, 37.716013229888688 ], [ -122.365231148006444, 37.716006146679064 ], [ -122.365246539040172, 37.715999378773581 ], [ -122.365263666604179, 37.715992927006241 ], [ -122.365279091398932, 37.715987532291955 ], [ -122.365294534108472, 37.71598282401969 ], [ -122.365311721955024, 37.715978774837772 ], [ -122.365328927025729, 37.715975412108293 ], [ -122.365346149321098, 37.715972735831272 ], [ -122.365363388841544, 37.715970746006697 ], [ -122.365380645587578, 37.715969442634552 ], [ -122.365410025637061, 37.715968977361726 ], [ -122.365427334408309, 37.715969733342163 ], [ -122.365444651102152, 37.715970832558476 ], [ -122.365461994328726, 37.715972961443697 ], [ -122.365479354092372, 37.715975776792263 ], [ -122.365495012131262, 37.715979649180539 ], [ -122.365512406698826, 37.715983837428631 ], [ -122.365528089891654, 37.715988739505875 ], [ -122.365543791005862, 37.715994328024976 ], [ -122.36555950900491, 37.716000603002399 ], [ -122.36557523562081, 37.716007221205196 ], [ -122.365589259822642, 37.716014896460429 ], [ -122.365603292648544, 37.71602291521603 ], [ -122.365617342692417, 37.7160316198757 ], [ -122.365631409975279, 37.716041011263187 ], [ -122.365643757615857, 37.716050773249407 ], [ -122.365654385267973, 37.716060905840358 ], [ -122.365666759104258, 37.716071697501043 ], [ -122.365675684345334, 37.716082887145667 ], [ -122.365686355771075, 37.716094735860018 ], [ -122.36572383810848, 37.716141526396989 ], [ -122.365761311532381, 37.716187973699725 ], [ -122.365800496728525, 37.716233707149122 ], [ -122.365839664050739, 37.716278754141264 ], [ -122.365880551762743, 37.716323430505255 ], [ -122.365923158830057, 37.716367736255741 ], [ -122.365965740100123, 37.716411012308278 ], [ -122.366010040727502, 37.716453917744857 ], [ -122.366059638577141, 37.716501202978222 ], [ -122.366081205013529, 37.716533824258086 ], [ -122.366090251696093, 37.716549819043124 ], [ -122.366102754235541, 37.716565759079053 ], [ -122.366113529199154, 37.716581726482502 ], [ -122.366126023477833, 37.716597323283004 ], [ -122.366136789488536, 37.716612947462366 ], [ -122.366161760837542, 37.716643454602135 ], [ -122.366175966176996, 37.71665833756186 ], [ -122.366188442901887, 37.716673247906257 ], [ -122.366216836381071, 37.716702327637208 ], [ -122.36623102450136, 37.716716523860804 ], [ -122.366245204016678, 37.716730377129863 ], [ -122.366261112159151, 37.716744203009718 ], [ -122.366275291685326, 37.716758056275097 ], [ -122.366322963076229, 37.716797474553488 ], [ -122.366340573678841, 37.716810243632011 ], [ -122.36635644703216, 37.716822696320264 ], [ -122.366374040064969, 37.716834778944495 ], [ -122.366389904811129, 37.716846888400809 ], [ -122.366425073654625, 37.716870366632683 ], [ -122.366444377745808, 37.716881735132603 ], [ -122.36646194494493, 37.716892787786946 ], [ -122.366493510758119, 37.716910485903114 ], [ -122.366623549631328, 37.71699392291945 ], [ -122.366755273981596, 37.717075616265298 ], [ -122.367009737276547, 37.717225410385531 ], [ -122.367367636576219, 37.717431936135505 ], [ -122.367722202011066, 37.717643320779338 ], [ -122.367734498100774, 37.717651023186086 ], [ -122.367746786266892, 37.717658382627967 ], [ -122.36776079374863, 37.717665370893641 ], [ -122.367773072942654, 37.717672386836448 ], [ -122.367787080436401, 37.717679375373592 ], [ -122.367799351010589, 37.717686048086428 ], [ -122.367813349884699, 37.717692693393225 ], [ -122.367827331518725, 37.717698652518493 ], [ -122.367841321766008, 37.717704954320148 ], [ -122.367855303397675, 37.717710913167537 ], [ -122.367883249424608, 37.717722144677452 ], [ -122.367898942111211, 37.717727389659409 ], [ -122.367916388621566, 37.717733636645491 ], [ -122.367933775456365, 37.71773748130223 ], [ -122.367951144357875, 37.717740639787564 ], [ -122.367968522563814, 37.717744140937377 ], [ -122.368003243800771, 37.717749770880694 ], [ -122.368020595449934, 37.717752242626815 ], [ -122.368037939165831, 37.717754371132209 ], [ -122.368062204013668, 37.717756733239703 ], [ -122.368254623550371, 37.717776687237738 ], [ -122.368448797013713, 37.717797642645102 ], [ -122.368467860079036, 37.717799400451433 ], [ -122.368488660073098, 37.717801474067137 ], [ -122.368509442812467, 37.717802861224882 ], [ -122.368528488624563, 37.717803932567065 ], [ -122.368549262744196, 37.717804976765201 ], [ -122.368570028222393, 37.717805677183392 ], [ -122.368590785079604, 37.717806034645328 ], [ -122.368609804662938, 37.717806076298423 ], [ -122.368630552892, 37.717806090526203 ], [ -122.368672014835468, 37.717804746062299 ], [ -122.368691009223568, 37.717803758009893 ], [ -122.36871172294353, 37.717802399589416 ], [ -122.368753133102373, 37.717798995459539 ], [ -122.368773820932461, 37.717796607346749 ], [ -122.368818653167253, 37.717791775447523 ], [ -122.368861774362671, 37.71778765768024 ], [ -122.368906640766554, 37.717784198936094 ], [ -122.368949796818114, 37.717781454039603 ], [ -122.368994689457168, 37.717779025212373 ], [ -122.369037870695294, 37.717777309701347 ], [ -122.369082798189922, 37.717776253468948 ], [ -122.369126014299994, 37.717775911103146 ], [ -122.369170967339741, 37.717775884523917 ], [ -122.369202706794994, 37.71780044645373 ], [ -122.369235000726789, 37.717778302338516 ], [ -122.369269687549945, 37.717782559000163 ], [ -122.36928530265682, 37.717784714478952 ], [ -122.369302663340889, 37.717787529532423 ], [ -122.369353034337394, 37.717796687460655 ], [ -122.369368683984078, 37.717800216111328 ], [ -122.369384341918476, 37.717804087992491 ], [ -122.369401728852594, 37.717807932707132 ], [ -122.369417395761204, 37.717812147530914 ], [ -122.36943307096503, 37.717816705859768 ], [ -122.369450475169117, 37.717821237021361 ], [ -122.36948184319013, 37.717831039842252 ], [ -122.369497544990651, 37.717836627832767 ], [ -122.369513237815312, 37.717841872599593 ], [ -122.369527219606752, 37.717847831248413 ], [ -122.36954292970124, 37.717853762465438 ], [ -122.369558648085317, 37.71786003691291 ], [ -122.36957263852355, 37.71786633905797 ], [ -122.369588366230118, 37.717872956442982 ], [ -122.369602365299343, 37.717879601536971 ], [ -122.369618101305662, 37.71788656242515 ], [ -122.369646133989733, 37.717901225512634 ], [ -122.369674183958367, 37.717916575322121 ], [ -122.369702251198532, 37.717932611304448 ], [ -122.369714565153885, 37.717940999952816 ], [ -122.369728616041627, 37.717949704119498 ], [ -122.369740938290732, 37.717958435997602 ], [ -122.369754989198668, 37.717967140710293 ], [ -122.369767320771899, 37.717976215527116 ], [ -122.369804340049498, 37.718004470496631 ], [ -122.369814960605339, 37.718014259471069 ], [ -122.369827317757029, 37.718024364242766 ], [ -122.369837946607149, 37.718034496447622 ], [ -122.369850303765318, 37.718044601216874 ], [ -122.369882215899651, 37.718076027508822 ], [ -122.369892862378947, 37.71808684615722 ], [ -122.36990178884372, 37.718098035472593 ], [ -122.369912443617807, 37.718109197351708 ], [ -122.369930296561293, 37.718131575978724 ], [ -122.36994816678471, 37.718154641056984 ], [ -122.369957110535211, 37.718166516822102 ], [ -122.369967859963296, 37.718181454198835 ], [ -122.36997176593016, 37.718199247125732 ], [ -122.369979594447685, 37.718235519443965 ], [ -122.370002130211063, 37.718306581422858 ], [ -122.370009483835318, 37.718323976252783 ], [ -122.370015117785968, 37.718341741746322 ], [ -122.370022471423681, 37.718359136849926 ], [ -122.370031544728775, 37.71837616073956 ], [ -122.370038898366815, 37.718393555567452 ], [ -122.370047971693708, 37.718410580004878 ], [ -122.370057036030119, 37.718427260670879 ], [ -122.370066109704041, 37.718444284826738 ], [ -122.370075174401222, 37.718460965760372 ], [ -122.370085967071944, 37.718477619260632 ], [ -122.370107466765518, 37.718507493977114 ], [ -122.370126944899795, 37.718525726405055 ], [ -122.370169322597192, 37.718560763475431 ], [ -122.370190485553579, 37.718577252323918 ], [ -122.370213359219747, 37.718593027280086 ], [ -122.370236224957864, 37.718608459268403 ], [ -122.370260801392277, 37.718623176813935 ], [ -122.370285360570904, 37.718637208174954 ], [ -122.370309902493091, 37.718650553351452 ], [ -122.370336155456755, 37.71866318407794 ], [ -122.370362391163113, 37.718675128619182 ], [ -122.370390329287673, 37.718686016031121 ], [ -122.370416530117836, 37.718696587657909 ], [ -122.370444433710631, 37.71870610214912 ], [ -122.370472320036399, 37.718714930179793 ], [ -122.370501917760691, 37.718723044300269 ], [ -122.370529760919823, 37.718730156457141 ], [ -122.370559323753966, 37.718736897386265 ], [ -122.370588852049892, 37.718742265674756 ], [ -122.370618371366675, 37.718747290734377 ], [ -122.370647865465088, 37.718751286094815 ], [ -122.370679070273212, 37.718754567827233 ], [ -122.370708520488662, 37.718756846774177 ], [ -122.370739682448956, 37.718758412075765 ], [ -122.37076908982813, 37.718758975142002 ], [ -122.370800208258856, 37.718758824572994 ], [ -122.370829572444975, 37.718757671489442 ], [ -122.370860647321152, 37.718755804226205 ], [ -122.370891705615989, 37.718753250764479 ], [ -122.37090882433975, 37.718746454957831 ], [ -122.370925978308406, 37.718741032045394 ], [ -122.370944886167507, 37.718736611366033 ], [ -122.370963836875418, 37.718733906823715 ], [ -122.370982814191592, 37.718732231948131 ], [ -122.371005290654622, 37.718732218311914 ], [ -122.371024337093374, 37.718733289519548 ], [ -122.37104342637177, 37.71873607631499 ], [ -122.371062541577928, 37.718739893062697 ], [ -122.371079963024641, 37.718745110167617 ], [ -122.371097419033674, 37.718751700177599 ], [ -122.371113164004626, 37.718759004092 ], [ -122.371128943539134, 37.718767680911924 ], [ -122.371144757299319, 37.718777730917395 ], [ -122.371169489840725, 37.718798626351749 ], [ -122.371180101358092, 37.718808071985954 ], [ -122.371190696288693, 37.71881683115442 ], [ -122.371201281889995, 37.71882524710599 ], [ -122.371213579227003, 37.718832949137195 ], [ -122.37122759590342, 37.718840280490852 ], [ -122.371239875618699, 37.718847296070983 ], [ -122.371253857737614, 37.718853254513917 ], [ -122.371267831218006, 37.718858869728294 ], [ -122.371281796059677, 37.718864141714128 ], [ -122.371297471952232, 37.718868700063226 ], [ -122.37131140222705, 37.718872598863427 ], [ -122.371327043206463, 37.718875784031958 ], [ -122.371342667596267, 37.718878282733641 ], [ -122.371358283000305, 37.718880438211883 ], [ -122.371373872488391, 37.718881564281979 ], [ -122.371383664521929, 37.718882055893282 ], [ -122.371389452976118, 37.718882346579448 ], [ -122.371405016879592, 37.71888244268473 ], [ -122.371420554513023, 37.718881509112791 ], [ -122.371437794199721, 37.718879518405728 ], [ -122.371451465242302, 37.718873120657591 ], [ -122.371465170849277, 37.718868095815367 ], [ -122.371480639690603, 37.718864416415016 ], [ -122.371497879724302, 37.718862425968247 ], [ -122.371520347584678, 37.71886206900686 ], [ -122.371535954687204, 37.718863880954615 ], [ -122.371551596026961, 37.718867066362435 ], [ -122.371567280564975, 37.718871967353337 ], [ -122.371581271363922, 37.718878269258852 ], [ -122.371591935137346, 37.718889773936951 ], [ -122.371604326899728, 37.718901251433785 ], [ -122.371614991032587, 37.718912756378863 ], [ -122.371627374512514, 37.718923890915455 ], [ -122.37163802965712, 37.718935052362468 ], [ -122.371650413137317, 37.718946186622013 ], [ -122.371662779335963, 37.718956634426526 ], [ -122.371676882506705, 37.718967397995137 ], [ -122.371689248373897, 37.718977846076911 ], [ -122.371706869050627, 37.71899095730106 ], [ -122.371720799369825, 37.718994856052753 ], [ -122.371736440738147, 37.718998041161377 ], [ -122.371767706192628, 37.7190037249187 ], [ -122.371798919792468, 37.719007349306651 ], [ -122.371814508961251, 37.719008475049307 ], [ -122.371830090178449, 37.719009257552102 ], [ -122.371845662406855, 37.719009696831492 ], [ -122.371878500616674, 37.719009175012339 ], [ -122.371894038270653, 37.719008241377971 ], [ -122.371925078656488, 37.719005001201246 ], [ -122.371940582079091, 37.719002694647912 ], [ -122.37195607651114, 37.71900004487118 ], [ -122.371971553653992, 37.71899670863877 ], [ -122.371985302469042, 37.7189933998703 ], [ -122.372011244653535, 37.718993674331507 ], [ -122.372032105590733, 37.718998149908998 ], [ -122.372051212270634, 37.719001623269286 ], [ -122.372072029989994, 37.71900438270557 ], [ -122.372092830421707, 37.719006455684564 ], [ -122.372113604920486, 37.719007498979387 ], [ -122.372134362130282, 37.719007855816933 ], [ -122.372155093405652, 37.71900718297038 ], [ -122.372175798752636, 37.719005480714287 ], [ -122.372196486794678, 37.719003091451768 ], [ -122.372215428886747, 37.719000043756004 ], [ -122.372242952424102, 37.718994455566381 ], [ -122.372228495782323, 37.719038292867332 ], [ -122.372270562418365, 37.718992299913033 ], [ -122.372296686505393, 37.718999782068892 ], [ -122.372315810496232, 37.719003942114455 ], [ -122.372334917183963, 37.719007415154145 ], [ -122.372354014888927, 37.719010545244004 ], [ -122.372373104647863, 37.719013332367552 ], [ -122.372411231581538, 37.719016846431828 ], [ -122.372432006094613, 37.719017889945107 ], [ -122.372451034636384, 37.719018274204856 ], [ -122.372470046576993, 37.719017971996969 ], [ -122.372489049518421, 37.7190173262901 ], [ -122.372508043819963, 37.719016337627984 ], [ -122.372528749154483, 37.719014635035279 ], [ -122.372547708522333, 37.719012273465104 ], [ -122.372566659933526, 37.719009568654101 ], [ -122.372585593703946, 37.719006177391961 ], [ -122.372604518825696, 37.719002442899999 ], [ -122.372623426305779, 37.718998021956914 ], [ -122.372640597508592, 37.718993285523204 ], [ -122.372659479381312, 37.718987834613905 ], [ -122.372676624285006, 37.718982068225515 ], [ -122.372693803775505, 37.718977674741716 ], [ -122.372709280880628, 37.718974338412373 ], [ -122.372726511906819, 37.718972004289988 ], [ -122.372754147821666, 37.718970878203621 ], [ -122.372769737688571, 37.718972003808915 ], [ -122.372787072838463, 37.718973788668045 ], [ -122.372804451214719, 37.718977289109326 ], [ -122.372823557579665, 37.718980762349858 ], [ -122.37284089307164, 37.718982546920991 ], [ -122.372859921952113, 37.718982931109217 ], [ -122.372877179265899, 37.718981626639597 ], [ -122.372896130311645, 37.71897892178108 ], [ -122.372913318098071, 37.718974871772126 ], [ -122.372930471966299, 37.718969448293443 ], [ -122.372945853925259, 37.718962336438636 ], [ -122.372961200941234, 37.718953851680254 ], [ -122.37297652269902, 37.718944337228557 ], [ -122.372988361166023, 37.718933848067003 ], [ -122.373153843085163, 37.718881530021171 ], [ -122.373238802575472, 37.718854668953604 ], [ -122.373255964357725, 37.718849588939769 ], [ -122.37327313547901, 37.718844852139163 ], [ -122.373307494324067, 37.718836064994925 ], [ -122.373341870461658, 37.718827964294142 ], [ -122.373376281193742, 37.718821236490271 ], [ -122.37339522352984, 37.718818188324654 ], [ -122.373412437542669, 37.718815167642909 ], [ -122.37344690016738, 37.718810499178815 ], [ -122.37346585979968, 37.718808137455291 ], [ -122.373483108072492, 37.718806489950246 ], [ -122.373502085343517, 37.718804814394282 ], [ -122.373536599865218, 37.718802205264303 ], [ -122.373555594097851, 37.718801216433278 ], [ -122.373572868314369, 37.718800598320655 ], [ -122.373591880194738, 37.718800295931722 ], [ -122.373626463924381, 37.718800432589219 ], [ -122.373645492769242, 37.718800816925153 ], [ -122.373662792940365, 37.718801228479528 ], [ -122.373681839421252, 37.718802298708354 ], [ -122.373699157242569, 37.718803396705297 ], [ -122.373716483716436, 37.718804837926434 ], [ -122.373735538512435, 37.718806251653383 ], [ -122.373752881946515, 37.718808379328088 ], [ -122.373777165315929, 37.718811426700512 ], [ -122.373794552014559, 37.718815270502617 ], [ -122.373811948058801, 37.718819457517874 ], [ -122.373829360718858, 37.718824330994956 ], [ -122.373845054403262, 37.718829575178432 ], [ -122.373862484719027, 37.718835135098523 ], [ -122.373878195029278, 37.718841066016566 ], [ -122.373893923325326, 37.718847682825754 ], [ -122.373909659945298, 37.71885464341419 ], [ -122.373925413867383, 37.718862290179331 ], [ -122.373939439462958, 37.718869964162415 ], [ -122.373953482381623, 37.71887832514637 ], [ -122.373967533942846, 37.718887028806179 ], [ -122.373981594167574, 37.718896075965546 ], [ -122.373995663049072, 37.718905466349945 ], [ -122.374008012263729, 37.718915227454971 ], [ -122.374020370135099, 37.718925331785385 ], [ -122.374032736317702, 37.718935779346666 ], [ -122.374045111848744, 37.718946570122313 ], [ -122.374055767366514, 37.718957731625189 ], [ -122.374066431541209, 37.71896923635375 ], [ -122.374075367055113, 37.718980768858067 ], [ -122.374086048882475, 37.71899295975809 ], [ -122.374103954872169, 37.719017397114996 ], [ -122.374125681340118, 37.719056194989058 ], [ -122.374131204173437, 37.719069498331429 ], [ -122.374142266462783, 37.719096791479657 ], [ -122.374149872102961, 37.719124139622245 ], [ -122.374153683579266, 37.719138156919946 ], [ -122.3741578498839, 37.719166246785271 ], [ -122.374159941681143, 37.71918063453262 ], [ -122.374161014797295, 37.71922319463841 ], [ -122.374159641286965, 37.719237294429277 ], [ -122.374154923616729, 37.719255911162307 ], [ -122.374151882005847, 37.719272441042889 ], [ -122.374149256482738, 37.719305445791825 ], [ -122.374150087278892, 37.719338395550594 ], [ -122.374152239665406, 37.719355186158822 ], [ -122.374156103078988, 37.719371262815855 ], [ -122.374159975148416, 37.71938768269937 ], [ -122.374165558246304, 37.71940338863147 ], [ -122.374172878343202, 37.719419410566459 ], [ -122.374175234931528, 37.719424358448258 ], [ -122.374180181120835, 37.719434745498482 ], [ -122.374187466599793, 37.719449394251313 ], [ -122.374214300358844, 37.719485020571611 ], [ -122.374235611602799, 37.719507343543832 ], [ -122.374246258574956, 37.719518161801837 ], [ -122.374256896895602, 37.719528636832223 ], [ -122.374269254564041, 37.719538741415626 ], [ -122.374281604258542, 37.719548502210912 ], [ -122.374293944962744, 37.719557920058328 ], [ -122.374308005354067, 37.719566967177798 ], [ -122.374322057100812, 37.719575671343499 ], [ -122.374337854486313, 37.719585033911152 ], [ -122.3744195305989, 37.719669918743051 ], [ -122.374421587846186, 37.719682933852702 ], [ -122.374425381745823, 37.719696264692658 ], [ -122.374436392649173, 37.719721498445345 ], [ -122.374441889282195, 37.71973377237201 ], [ -122.374450833933636, 37.719745647518387 ], [ -122.374459769939222, 37.719757179712012 ], [ -122.374468688290634, 37.719768025457228 ], [ -122.37447931836833, 37.719778157235005 ], [ -122.374491667798353, 37.71978791856256 ], [ -122.374503990904699, 37.719796649665334 ], [ -122.374518034054987, 37.71980501030616 ], [ -122.374532059896538, 37.719812684492133 ], [ -122.374546059779846, 37.719819329271196 ], [ -122.374561771037051, 37.719825259811579 ], [ -122.374577455975697, 37.719830160400981 ], [ -122.374594868929591, 37.719835034038724 ], [ -122.374610562881386, 37.719840278119385 ], [ -122.374626299764742, 37.719847238061817 ], [ -122.374642062627359, 37.719855227956486 ], [ -122.37465612311729, 37.71986427503397 ], [ -122.374668489891121, 37.719874722521432 ], [ -122.374679145289875, 37.719885883971763 ], [ -122.374688099006775, 37.719898102595501 ], [ -122.374697069701313, 37.719911007951758 ], [ -122.374702592354737, 37.719924311271022 ], [ -122.374739822583123, 37.719960801838624 ], [ -122.37475222401271, 37.719972622223445 ], [ -122.374766345137616, 37.719984071873611 ], [ -122.374778737572512, 37.719995549034522 ], [ -122.374806962529064, 37.720017761873571 ], [ -122.374835170187708, 37.720039288252636 ], [ -122.374849265365711, 37.720049708213061 ], [ -122.374865089243499, 37.72006010065806 ], [ -122.37487917577208, 37.720070177388315 ], [ -122.374910788226885, 37.720089589372847 ], [ -122.374942383382447, 37.720108314895747 ], [ -122.374958163650305, 37.720116991200911 ], [ -122.37497395257985, 37.720126010730475 ], [ -122.374991452548869, 37.720134316294761 ], [ -122.375007224169792, 37.720142649366764 ], [ -122.375024715142516, 37.720150611705058 ], [ -122.375040478457933, 37.72015860154054 ], [ -122.375057961125222, 37.720166220641822 ], [ -122.375092909153366, 37.7201807723835 ], [ -122.375127822560231, 37.72019395120865 ], [ -122.375147007628541, 37.720200513379581 ], [ -122.375173261961393, 37.720213143025013 ], [ -122.375207993556202, 37.720219114069216 ], [ -122.375227160967086, 37.720224989504935 ], [ -122.375248074399238, 37.720231523871263 ], [ -122.375269005153854, 37.720238744686874 ], [ -122.375280076764881, 37.720243315652858 ], [ -122.375288225222903, 37.720246679460772 ], [ -122.375307453609949, 37.720254957463524 ], [ -122.375326699320624, 37.720263921916157 ], [ -122.375345953350021, 37.720273229597673 ], [ -122.375365216735446, 37.720282880491496 ], [ -122.3753827687447, 37.72029324535653 ], [ -122.37540033807889, 37.720304296671941 ], [ -122.375416187376842, 37.720315718733033 ], [ -122.375433774387304, 37.720327456490914 ], [ -122.375449641361485, 37.720339564994973 ], [ -122.375463797304775, 37.720352387466882 ], [ -122.375479689931566, 37.720365525926404 ], [ -122.375493863198955, 37.720379034573064 ], [ -122.375506317126977, 37.720392914231198 ], [ -122.375520507732517, 37.720407109602149 ], [ -122.375532978645822, 37.720421675715869 ], [ -122.375543729520388, 37.720436612578425 ], [ -122.375556287403313, 37.720454611223573 ], [ -122.375591629223138, 37.720553280549268 ], [ -122.375625259756632, 37.720652664115185 ], [ -122.375655442655059, 37.720752445930557 ], [ -122.375683906273295, 37.720852598477748 ], [ -122.375710658575045, 37.720953464995517 ], [ -122.375751172610691, 37.721120038334149 ], [ -122.375761845674063, 37.721131886137194 ], [ -122.375772510777281, 37.721143390976373 ], [ -122.375784886582679, 37.721154181570967 ], [ -122.375797236053231, 37.721163942215831 ], [ -122.375811288276211, 37.721172646201708 ], [ -122.375827043223865, 37.721180292429615 ], [ -122.375842875795513, 37.721191027973333 ], [ -122.375853514234834, 37.721201502862243 ], [ -122.37586245097873, 37.721213034941265 ], [ -122.375869667665128, 37.721224937774515 ], [ -122.375880696264161, 37.72125085784436 ], [ -122.375882762127716, 37.72126421615711 ], [ -122.375882828626871, 37.721266851037683 ], [ -122.375883125946686, 37.721278631666706 ], [ -122.37587827898912, 37.721292100060857 ], [ -122.375871711967719, 37.721305939209678 ], [ -122.375866881992167, 37.721320094336214 ], [ -122.37586031495924, 37.721333933209785 ], [ -122.375855484972746, 37.721348088061191 ], [ -122.375852374709183, 37.721361872437875 ], [ -122.375847544719377, 37.721376027288905 ], [ -122.375842723382974, 37.721390525091536 ], [ -122.375836520156881, 37.721418779747594 ], [ -122.375830334257259, 37.721447721130588 ], [ -122.375828969677642, 37.721462163887708 ], [ -122.375825876376013, 37.721476634447164 ], [ -122.375821782997832, 37.721519963536267 ], [ -122.375822146806243, 37.721534379045465 ], [ -122.375820790553732, 37.721549165583347 ], [ -122.375822254450057, 37.721607170846063 ], [ -122.375824355645946, 37.721621901779116 ], [ -122.375824719455352, 37.721636317288059 ], [ -122.375830995701023, 37.721679481253183 ], [ -122.375834816633215, 37.721693841711655 ], [ -122.375836908840029, 37.721708229972535 ], [ -122.375840729422237, 37.721722590161676 ], [ -122.375846503274232, 37.721745846994416 ], [ -122.375861785654777, 37.721803288846772 ], [ -122.375867698808605, 37.72183203728941 ], [ -122.375873620283713, 37.721861128963518 ], [ -122.375886199210129, 37.721948486558446 ], [ -122.375891128963588, 37.722006779991005 ], [ -122.37589187393715, 37.722036297459432 ], [ -122.375894433932729, 37.722069219668136 ], [ -122.375899939635701, 37.722081836473912 ], [ -122.375903725267278, 37.722094824309316 ], [ -122.37590923997503, 37.722107784060896 ], [ -122.375913025948279, 37.722120771615856 ], [ -122.375915092187512, 37.722134129920661 ], [ -122.375918886480093, 37.722147460707269 ], [ -122.375920953066782, 37.722160819006419 ], [ -122.375921290909631, 37.722174204834722 ], [ -122.375923357151819, 37.722187563139258 ], [ -122.375923694995222, 37.722200948967497 ], [ -122.375922304438902, 37.722214362319441 ], [ -122.375922642282234, 37.722227748147617 ], [ -122.375921251379538, 37.722241161504989 ], [ -122.375918210730603, 37.722257691412231 ], [ -122.375915160726379, 37.722273878103998 ], [ -122.375910383010535, 37.722290092308178 ], [ -122.375909052749606, 37.722305908524369 ], [ -122.3759060120953, 37.722322438431114 ], [ -122.375902962078825, 37.722338624847808 ], [ -122.375900319899742, 37.722370943166766 ], [ -122.375899007299083, 37.722387445555256 ], [ -122.375899414439516, 37.72240357719398 ], [ -122.375898101492368, 37.722420079587863 ], [ -122.375899331576733, 37.722468817730004 ], [ -122.3759014761321, 37.722485265065941 ], [ -122.375901883280534, 37.722501396978991 ], [ -122.375904027491728, 37.722517844320301 ], [ -122.375908298246003, 37.722550052555519 ], [ -122.375912171213727, 37.722566472367539 ], [ -122.375914306759483, 37.722582576207579 ], [ -122.375918170721874, 37.722598652798467 ], [ -122.375922026023247, 37.722614386162874 ], [ -122.375925889988949, 37.722630462753436 ], [ -122.375931482020547, 37.722646511825495 ], [ -122.3759353376729, 37.72266224518382 ], [ -122.375946504767398, 37.722693656868394 ], [ -122.37595381690933, 37.722709335457893 ], [ -122.375959392311572, 37.72272469779017 ], [ -122.375988606240981, 37.722786038138061 ], [ -122.37599590106781, 37.72280102999747 ], [ -122.376004915302616, 37.722815651110672 ], [ -122.376013938895468, 37.722830615438454 ], [ -122.376030187680101, 37.722857825817606 ], [ -122.376039254253797, 37.722874506280462 ], [ -122.376050040583777, 37.722890815990674 ], [ -122.376059098502594, 37.722907153225577 ], [ -122.376080671185491, 37.722939772641169 ], [ -122.376093177287544, 37.722955711594906 ], [ -122.376103946313975, 37.722971334847365 ], [ -122.376128941223584, 37.723002526570319 ], [ -122.376153918812676, 37.723033031286057 ], [ -122.376166398954496, 37.723047940552881 ], [ -122.376180598856877, 37.723062479064545 ], [ -122.376194807428803, 37.723077360800765 ], [ -122.376223189933157, 37.723105751362802 ], [ -122.37623737252926, 37.723119603414908 ], [ -122.376253283551748, 37.72313342793673 ], [ -122.376285088285584, 37.723160390521265 ], [ -122.37630098199665, 37.723173528583985 ], [ -122.376332751760657, 37.723199118255842 ], [ -122.376350356927531, 37.723211542324023 ], [ -122.37636795274409, 37.723223623174263 ], [ -122.376420715615595, 37.723258836008263 ], [ -122.376438285466264, 37.723269887443685 ], [ -122.376457584424074, 37.723280910784744 ], [ -122.376475145958864, 37.723291618708295 ], [ -122.376513708562953, 37.723312293030197 ], [ -122.376564456486463, 37.723336207150773 ], [ -122.376580211970165, 37.72334385327531 ], [ -122.376595984457055, 37.723352186404895 ], [ -122.376611774265584, 37.723361205435687 ], [ -122.376625852990443, 37.723370938725466 ], [ -122.37663994038509, 37.723381015239809 ], [ -122.37665232535511, 37.723392148965601 ], [ -122.376666438756033, 37.723403255155475 ], [ -122.376677112293109, 37.723415102871243 ], [ -122.376698494734327, 37.723440171193744 ], [ -122.376707475210537, 37.723453419335712 ], [ -122.376716464010698, 37.72346701070871 ], [ -122.376720284514462, 37.723481371145333 ], [ -122.37671721799309, 37.723496871391177 ], [ -122.376707592383568, 37.723526554064598 ], [ -122.376699305900857, 37.723540764010522 ], [ -122.376689273305857, 37.723554315043828 ], [ -122.376679223374595, 37.723567179623807 ], [ -122.376667418664113, 37.723579042064337 ], [ -122.376655545318613, 37.723588158957362 ], [ -122.377080106636114, 37.724240997344516 ], [ -122.377095367932696, 37.724229079787627 ], [ -122.377110646561107, 37.724217848681064 ], [ -122.37712595084453, 37.724207647256506 ], [ -122.377143001604594, 37.724198105004248 ], [ -122.377161806451838, 37.724189564342446 ], [ -122.377180636962038, 37.724182053636206 ], [ -122.377199502834941, 37.724175915820602 ], [ -122.377218385696736, 37.724170464459789 ], [ -122.377239031676282, 37.724166358457559 ], [ -122.377259703667661, 37.724163282404746 ], [ -122.377280401650879, 37.724161235477631 ], [ -122.377302862761439, 37.724160534182147 ], [ -122.377323664781798, 37.724162606235865 ], [ -122.377346194902287, 37.724164650746829 ], [ -122.377366988255417, 37.724166379566732 ], [ -122.377389501730306, 37.724167737606116 ], [ -122.377412006197545, 37.724168752695128 ], [ -122.377432782206725, 37.724169794776564 ], [ -122.377477756104398, 37.724170451485548 ], [ -122.377520967568458, 37.724169762808955 ], [ -122.377543428679331, 37.724169061467578 ], [ -122.377564152674637, 37.724168044443623 ], [ -122.377586596450428, 37.724166656916339 ], [ -122.377609031195107, 37.724164925615 ], [ -122.37762973784686, 37.724163222127238 ], [ -122.377674573698229, 37.724158387131986 ], [ -122.377695245662423, 37.724155310728172 ], [ -122.377717646069129, 37.724152206770718 ], [ -122.377738309358563, 37.724148787133252 ], [ -122.377760692073096, 37.724144996720867 ], [ -122.377801983955891, 37.724136784522699 ], [ -122.377824341339959, 37.724131964408841 ], [ -122.377861378513643, 37.724092230490051 ], [ -122.37790330341987, 37.724109074037422 ], [ -122.377953072363383, 37.724094202731443 ], [ -122.378002859323317, 37.724080017845608 ], [ -122.378052663257023, 37.724066519121855 ], [ -122.378102484525442, 37.724053707103792 ], [ -122.378152322784231, 37.724041581796904 ], [ -122.378202179051058, 37.724030142360959 ], [ -122.378253789425585, 37.724019705304357 ], [ -122.378303679673081, 37.724009639015357 ], [ -122.378375979604911, 37.723996811837594 ], [ -122.378413918203691, 37.723992773262658 ], [ -122.378431150905413, 37.723990438296809 ], [ -122.378450111707437, 37.723988076047718 ], [ -122.378467326705092, 37.723985054355325 ], [ -122.378486270155207, 37.72398200564826 ], [ -122.378503476136444, 37.723978641004621 ], [ -122.378522411247346, 37.723975248785557 ], [ -122.378573978156382, 37.723963095183649 ], [ -122.378592877874951, 37.723958330334597 ], [ -122.378610049829263, 37.723953592485465 ], [ -122.378644375709996, 37.723943431162333 ], [ -122.378661520946679, 37.723937663913084 ], [ -122.378678675540712, 37.723932239601808 ], [ -122.378695812103444, 37.723926129396091 ], [ -122.378711220902375, 37.723920046192298 ], [ -122.378728349122568, 37.723913592475675 ], [ -122.378745468663908, 37.723906795530496 ], [ -122.378760859771077, 37.723900026422747 ], [ -122.378776242185538, 37.723892913537782 ], [ -122.378793344365533, 37.723885430133492 ], [ -122.378808718111543, 37.723877974567344 ], [ -122.378824083164403, 37.723870175223993 ], [ -122.378854795921512, 37.723853890628249 ], [ -122.378885491312118, 37.723836919572342 ], [ -122.378899101889331, 37.723828118382741 ], [ -122.378914431877035, 37.723818946403391 ], [ -122.378928033770805, 37.723809801984345 ], [ -122.378943355765742, 37.723800286764138 ], [ -122.378956948975699, 37.723790799115662 ], [ -122.378970533505296, 37.723780968239559 ], [ -122.378997685199607, 37.72376062003049 ], [ -122.37900953226108, 37.723750473498114 ], [ -122.379023090751858, 37.723739613212317 ], [ -122.37903492981377, 37.723729123165697 ], [ -122.379050155637117, 37.723715832455909 ], [ -122.379063557916822, 37.723698793821882 ], [ -122.379075214748525, 37.72368109629867 ], [ -122.379086879906424, 37.723663742005776 ], [ -122.379098527703903, 37.723645701259585 ], [ -122.379110183827592, 37.723628003743777 ], [ -122.379120103528408, 37.723609990560298 ], [ -122.37913174263177, 37.723591606584641 ], [ -122.379141653299143, 37.723573250178703 ], [ -122.379151555283926, 37.723554550545835 ], [ -122.379159737512083, 37.723536221709345 ], [ -122.379169630463892, 37.723517178854308 ], [ -122.379177804358278, 37.72349850705946 ], [ -122.379185969211122, 37.723479491494309 ], [ -122.379192405639117, 37.723460503774781 ], [ -122.379200561813079, 37.723441145257027 ], [ -122.37921341729573, 37.723402483363635 ], [ -122.379218107928253, 37.723382836762347 ], [ -122.379224535661635, 37.723363505814724 ], [ -122.379233916574677, 37.723324212890873 ], [ -122.379236870433516, 37.723304250354701 ], [ -122.379241561053661, 37.72328460375217 ], [ -122.379250421598357, 37.723224716982607 ], [ -122.379252871777865, 37.723184847614071 ], [ -122.379253905947536, 37.723157361956225 ], [ -122.379253532794493, 37.723142603509906 ], [ -122.379254879369441, 37.723127473715763 ], [ -122.37925797172656, 37.723113003075639 ], [ -122.379262792162919, 37.723098505142787 ], [ -122.379267621960011, 37.723084350150188 ], [ -122.379275925257346, 37.723070826474732 ], [ -122.379284246592633, 37.723057988965195 ], [ -122.379294304689481, 37.723045467662629 ], [ -122.379306117221759, 37.723033947914878 ], [ -122.379319675538511, 37.723023087593674 ], [ -122.379333259872894, 37.723013256399945 ], [ -122.379348598663228, 37.723004427583476 ], [ -122.379363963140094, 37.722996628448691 ], [ -122.379381091436528, 37.722990174630688 ], [ -122.379398245074995, 37.722984750499421 ], [ -122.379417153855258, 37.722980328457844 ], [ -122.379434368594119, 37.722977307172805 ], [ -122.379455083545309, 37.722975946315401 ], [ -122.37947750088145, 37.722973528474888 ], [ -122.379499892178387, 37.722970080951924 ], [ -122.379523994530487, 37.722965919396081 ], [ -122.37954461400976, 37.722960783310853 ], [ -122.379566935863238, 37.722954589966704 ], [ -122.379589240353653, 37.72294771016621 ], [ -122.379609790385288, 37.722939828261154 ], [ -122.379630314379966, 37.722930916948918 ], [ -122.379649092581033, 37.722921346210235 ], [ -122.379669581838826, 37.72291106171236 ], [ -122.379686587876122, 37.72289980269619 ], [ -122.37970530565336, 37.722887829635219 ], [ -122.379722277304509, 37.722875197704134 ], [ -122.379737503175733, 37.722861906898203 ], [ -122.379752711680695, 37.722847929638164 ], [ -122.379767911153763, 37.722833609155607 ], [ -122.379779628445803, 37.722818314142543 ], [ -122.379793065118861, 37.722802648327246 ], [ -122.379812990079841, 37.722770054111137 ], [ -122.379822935192337, 37.722753070549636 ], [ -122.379814676042812, 37.722699980835564 ], [ -122.379867320110051, 37.722593727839261 ], [ -122.379934313833843, 37.722371188860151 ], [ -122.37993733657764, 37.72235397239195 ], [ -122.379942087368576, 37.72233672807188 ], [ -122.379948575592024, 37.722319799663914 ], [ -122.379956801239857, 37.722303186893228 ], [ -122.379965035219655, 37.722286917353493 ], [ -122.37997327788419, 37.722270991313792 ], [ -122.379983257611954, 37.722255380367073 ], [ -122.379994974077178, 37.722240085342186 ], [ -122.380006708591978, 37.72222547675721 ], [ -122.380020188517861, 37.72221152704482 ], [ -122.380035405172549, 37.7221978929784 ], [ -122.380048911140065, 37.722184973215455 ], [ -122.380065900274673, 37.722173027405468 ], [ -122.380082897401252, 37.72216142510468 ], [ -122.38009991257772, 37.722150509242532 ], [ -122.380116944421857, 37.722140279841042 ], [ -122.380135722713177, 37.722130709292628 ], [ -122.380156255096665, 37.722122140839112 ], [ -122.38018021822036, 37.722112487531497 ], [ -122.380200637722609, 37.722099457131471 ], [ -122.380221048535219, 37.722086083501829 ], [ -122.380241450657905, 37.722072366642536 ], [ -122.380260115357089, 37.722058334421121 ], [ -122.38028050009946, 37.72204393110291 ], [ -122.380299156785668, 37.722029555363576 ], [ -122.38031780442914, 37.722014836126135 ], [ -122.380336443389169, 37.721999773934229 ], [ -122.380353345265689, 37.721984396102023 ], [ -122.380371975527709, 37.721968990678377 ], [ -122.380388868360967, 37.721953269620464 ], [ -122.380405753195106, 37.721937205323023 ], [ -122.38043950478324, 37.721904390279654 ], [ -122.380454643491987, 37.721887667118459 ], [ -122.38046977317164, 37.721870601009314 ], [ -122.380498331188051, 37.721837525213786 ], [ -122.38051707392718, 37.721826581710999 ], [ -122.380535826036024, 37.721815981420185 ], [ -122.380554603852772, 37.721806411084629 ], [ -122.380573407703011, 37.721797869875026 ], [ -122.380593957312428, 37.721789987796839 ], [ -122.380614524292966, 37.721782792441729 ], [ -122.380636845696628, 37.721776598619094 ], [ -122.380657456091583, 37.721771119386688 ], [ -122.380679829595536, 37.721766984912172 ], [ -122.380702211442937, 37.721763193939509 ], [ -122.380724628718468, 37.721760775855728 ], [ -122.380747063016599, 37.721759044225237 ], [ -122.380776445603402, 37.721758575115111 ], [ -122.380798931664657, 37.721758902836477 ], [ -122.380821453165254, 37.721760603721208 ], [ -122.380843991677978, 37.721762990510022 ], [ -122.380866547569951, 37.721766064021175 ], [ -122.380887409825149, 37.721770538303247 ], [ -122.380910017489256, 37.721775671167713 ], [ -122.380930914478753, 37.721781517796998 ], [ -122.380951846221805, 37.721788737601223 ], [ -122.380969304166271, 37.72179532613972 ], [ -122.381209663710422, 37.721932611167148 ], [ -122.381595340270607, 37.722141054219321 ], [ -122.381616306935143, 37.722149646808873 ], [ -122.381637264915469, 37.722157896168731 ], [ -122.381659933573118, 37.722165431470607 ], [ -122.381680856812778, 37.722172308193493 ], [ -122.381703500095611, 37.72217881352352 ], [ -122.381718196203238, 37.722182371993462 ], [ -122.381726116975372, 37.722184289451477 ], [ -122.381748725168919, 37.72218942214915 ], [ -122.381771315640577, 37.722193868396147 ], [ -122.38179561782411, 37.722197600566012 ], [ -122.381818182577149, 37.722201017120689 ], [ -122.381842449666692, 37.722203376657269 ], [ -122.381864970966248, 37.722205076798758 ], [ -122.381889211635382, 37.722206406378888 ], [ -122.38191343562309, 37.7222070497657 ], [ -122.381935913473328, 37.722207033764029 ], [ -122.381960093656375, 37.722205960742578 ], [ -122.381984265148091, 37.722204544490268 ], [ -122.382006690514388, 37.722202469399647 ], [ -122.382131855667623, 37.722160639374017 ], [ -122.382053374975868, 37.722202410560982 ], [ -122.382081246609474, 37.722210549386944 ], [ -122.382107407226997, 37.722219401998011 ], [ -122.382135313638244, 37.722228913714801 ], [ -122.38216150904843, 37.7222391397666 ], [ -122.382186002128265, 37.722250422556726 ], [ -122.38221223231281, 37.72226202122625 ], [ -122.382231488067504, 37.722271327773925 ], [ -122.382247234884744, 37.722278630470704 ], [ -122.382264666284939, 37.722284188875534 ], [ -122.382282081008995, 37.722289061364116 ], [ -122.382301180314499, 37.722292189559724 ], [ -122.382316796753315, 37.722294343584274 ], [ -122.382332404500787, 37.722296154380857 ], [ -122.382348055371921, 37.7222996815849 ], [ -122.382362004260912, 37.722304265802613 ], [ -122.382377707967407, 37.722309851797831 ], [ -122.382389988962331, 37.722316866217334 ], [ -122.382402296728699, 37.722324910302142 ], [ -122.382412893137086, 37.722333668461893 ], [ -122.38242351562603, 37.722343456298312 ], [ -122.382432426756893, 37.722353958210256 ], [ -122.382443110446403, 37.72236614862048 ], [ -122.38245541788794, 37.722374192979785 ], [ -122.382471103884711, 37.722379092516256 ], [ -122.382486702960776, 37.722380560066497 ], [ -122.382502223461259, 37.722378938861951 ], [ -122.382529930032874, 37.722380556015445 ], [ -122.382545607695334, 37.722385112585165 ], [ -122.382559626159036, 37.72239244258634 ], [ -122.382571959345043, 37.722401516341982 ], [ -122.382580879888579, 37.72241236145743 ], [ -122.382586386406132, 37.722424977955527 ], [ -122.382590173914764, 37.722437965564282 ], [ -122.382588775856519, 37.722451035493926 ], [ -122.382590834611065, 37.722464050455052 ], [ -122.382598043802759, 37.722475609647852 ], [ -122.382610377359867, 37.722484683668391 ], [ -122.382624352373682, 37.722490297257906 ], [ -122.382641931997384, 37.722501690715291 ], [ -122.38265777418269, 37.72251276857228 ], [ -122.382675345468627, 37.72252381879327 ], [ -122.382692907374491, 37.722534525796839 ], [ -122.382708732877717, 37.722544917184152 ], [ -122.382726277750848, 37.722554937725484 ], [ -122.382745551041126, 37.722564930914963 ], [ -122.382763086877006, 37.722574607955885 ], [ -122.382780614728389, 37.722583942306464 ], [ -122.382799870630677, 37.722593248486184 ], [ -122.382827994635349, 37.722611340684225 ], [ -122.382840310501109, 37.722619727959788 ], [ -122.382856023011854, 37.722625657391347 ], [ -122.382871674315936, 37.722629184245534 ], [ -122.382901057233255, 37.722628714605619 ], [ -122.382920165354051, 37.722632186201139 ], [ -122.382932481579374, 37.722640573461497 ], [ -122.382939690848261, 37.722652132907662 ], [ -122.382943451985241, 37.722664090283487 ], [ -122.382954144152635, 37.722676623878094 ], [ -122.382966546995732, 37.722688443398582 ], [ -122.382978924448281, 37.722699233229207 ], [ -122.382994731944478, 37.722708938137238 ], [ -122.383008785302238, 37.722717641262442 ], [ -122.383026278422236, 37.722725602123852 ], [ -122.383042008015664, 37.722732217987662 ], [ -122.383057685092282, 37.722736774500049 ], [ -122.38307338894937, 37.722742360676712 ], [ -122.38308910115893, 37.722748290082635 ], [ -122.383103093664104, 37.722754590615885 ], [ -122.383131113444662, 37.722768563756851 ], [ -122.383145140734484, 37.722776236913717 ], [ -122.383173212715235, 37.722792269674038 ], [ -122.383185537691887, 37.722801000133508 ], [ -122.383197871022062, 37.722810073823027 ], [ -122.383210213742984, 37.722819490725982 ], [ -122.383220827716869, 37.72282893553853 ], [ -122.383231459072476, 37.722839066252533 ], [ -122.383252652240699, 37.722856582695023 ], [ -122.383275469111652, 37.722869952249027 ], [ -122.383296549234032, 37.722883006473765 ], [ -122.383319349425548, 37.722895689831176 ], [ -122.383342123188228, 37.72290734351234 ], [ -122.383366616328686, 37.722918626335904 ], [ -122.383389364359843, 37.722929250325038 ], [ -122.383413814380745, 37.722938817278958 ], [ -122.383431263763498, 37.722945061956594 ], [ -122.383518693416903, 37.722983494694461 ], [ -122.38360968436416, 37.72302599052874 ], [ -122.383623746538206, 37.723035036256725 ], [ -122.383636106408431, 37.723045139846334 ], [ -122.383646772299514, 37.723056643431036 ], [ -122.383655727872323, 37.723068861366919 ], [ -122.383661243319395, 37.723081821039202 ], [ -122.383666776856799, 37.723095467151623 ], [ -122.383670581632771, 37.723109140906679 ], [ -122.383676097085413, 37.723122100578188 ], [ -122.383683315208287, 37.723134002929086 ], [ -122.383695684140434, 37.723144449457912 ], [ -122.383708017935533, 37.723153523087994 ], [ -122.383722027960033, 37.72316050972421 ], [ -122.383732835965688, 37.72316905039996 ], [ -122.383734379158653, 37.723170269802985 ], [ -122.38373469231658, 37.723182625929454 ], [ -122.383748702349067, 37.723189612562479 ], [ -122.383764362513205, 37.723193482523506 ], [ -122.383781689859717, 37.723194922268853 ], [ -122.383795343242184, 37.723187836915955 ], [ -122.383821435159561, 37.723193943333669 ], [ -122.383828644613416, 37.723205502449808 ], [ -122.383835888866727, 37.723218434468372 ], [ -122.383841404702011, 37.72323139412638 ], [ -122.383848657659414, 37.723244669369848 ], [ -122.383852462137753, 37.723258343398804 ], [ -122.383857987017038, 37.723271646001557 ], [ -122.383861791837163, 37.723285319750062 ], [ -122.383865605358181, 37.723299336724111 ], [ -122.383867681419986, 37.723313038392696 ], [ -122.38387185196801, 37.723341127615335 ], [ -122.383872226038946, 37.723355886046527 ], [ -122.383879757398802, 37.723380144510621 ], [ -122.383887280063988, 37.723404059748461 ], [ -122.383896426763826, 37.723423828636541 ], [ -122.383903627551987, 37.723435044521956 ], [ -122.383914233002187, 37.723444146045374 ], [ -122.383928243093862, 37.723451132382195 ], [ -122.383956011009261, 37.72345515232913 ], [ -122.383982041442252, 37.723458856142138 ], [ -122.384009791963194, 37.723462189624996 ], [ -122.384035805692207, 37.723465206963674 ], [ -122.384063530109799, 37.723467510482209 ], [ -122.384089526103082, 37.723469841637751 ], [ -122.384136280611983, 37.723472527510232 ], [ -122.384158819757118, 37.723474913938858 ], [ -122.384181376305577, 37.723477986814515 ], [ -122.384203958613327, 37.723482089368453 ], [ -122.384224830245174, 37.723486906009427 ], [ -122.38424745675556, 37.723492724672354 ], [ -122.384268380608177, 37.72349960093424 ], [ -122.384289321860564, 37.723507163369192 ], [ -122.384308551747594, 37.72351543990402 ], [ -122.384327808428154, 37.723524745827085 ], [ -122.384347090879899, 37.723535081704128 ], [ -122.384364653265465, 37.723545788456732 ], [ -122.384377022361861, 37.723556234913332 ], [ -122.38438594261595, 37.723567079901137 ], [ -122.384394846160177, 37.723577238425868 ], [ -122.384405469087795, 37.72358702608161 ], [ -122.384417785645866, 37.723595413459996 ], [ -122.384430084788605, 37.72360311383661 ], [ -122.384444086263514, 37.723609757160801 ], [ -122.384458052932075, 37.723615027580706 ], [ -122.384473782841141, 37.723621643252429 ], [ -122.38448780172817, 37.72362897302272 ], [ -122.384501846725257, 37.723637332468307 ], [ -122.384515900428013, 37.723646035137868 ], [ -122.384528251811574, 37.723655795132643 ], [ -122.384538892173168, 37.723666269227522 ], [ -122.384549541240418, 37.723677086547099 ], [ -122.38456021641889, 37.723688933542604 ], [ -122.384570943824258, 37.723702840165593 ], [ -122.384581645111282, 37.723715716561451 ], [ -122.384595785866907, 37.72372785147779 ], [ -122.384609917924237, 37.723739643166766 ], [ -122.384624023876995, 37.723750405177114 ], [ -122.384639831811498, 37.723760109862766 ], [ -122.384657351467936, 37.723769100432129 ], [ -122.384674853030802, 37.723777404558668 ], [ -122.384688837160766, 37.723783361676922 ], [ -122.384702838685783, 37.723790004695601 ], [ -122.384716875034059, 37.72379802088971 ], [ -122.384727472270853, 37.723806778833662 ], [ -122.38473981501231, 37.723816195854965 ], [ -122.384750446723075, 37.723826326704874 ], [ -122.384759367064078, 37.723837171663916 ], [ -122.38476655931882, 37.723848044270227 ], [ -122.384773760272395, 37.723859259827094 ], [ -122.38478439233964, 37.723869390668334 ], [ -122.384795006310796, 37.723878835068398 ], [ -122.384807314596031, 37.723886878899947 ], [ -122.384821316158124, 37.723893522179033 ], [ -122.384835282906707, 37.723898792553967 ], [ -122.384850942931138, 37.723902662375643 ], [ -122.384889238702442, 37.723912694229192 ], [ -122.384901537953482, 37.723920394830778 ], [ -122.38491387167187, 37.723929468064433 ], [ -122.384922801444858, 37.72394065622548 ], [ -122.384935378901247, 37.72395934004836 ], [ -122.384946228617792, 37.723978051514877 ], [ -122.384957095057587, 37.723997449442578 ], [ -122.384966251165253, 37.724017561465779 ], [ -122.384978611028657, 37.724027664643877 ], [ -122.384989269262093, 37.72403882514314 ], [ -122.384998216130384, 37.724050700029551 ], [ -122.385005451957767, 37.724063288474291 ], [ -122.385012696499402, 37.724076220418716 ], [ -122.385016466753711, 37.724088521225767 ], [ -122.38502538751068, 37.724099366158697 ], [ -122.385037712928536, 37.724108096697165 ], [ -122.385053408173405, 37.724113339388623 ], [ -122.385069016362493, 37.724115149547565 ], [ -122.385084528456687, 37.724113184503125 ], [ -122.385101700039968, 37.72410844598258 ], [ -122.385118888340344, 37.724104393921756 ], [ -122.385137831886752, 37.724101343865193 ], [ -122.385156818620402, 37.72410001021359 ], [ -122.385179288343707, 37.72409965064211 ], [ -122.385196616267564, 37.724101089899079 ], [ -122.385215698411002, 37.724103531450261 ], [ -122.385233087637133, 37.724107373824481 ], [ -122.385250510990446, 37.724112588834913 ], [ -122.385267961148685, 37.724118833233817 ], [ -122.385283708655592, 37.724126135522596 ], [ -122.385301210711177, 37.724134439275502 ], [ -122.385316914686456, 37.724140025157403 ], [ -122.38533260125142, 37.724144924586071 ], [ -122.385348261353599, 37.724148794341509 ], [ -122.385363904735826, 37.724151977632673 ], [ -122.385381250095534, 37.724154103588141 ], [ -122.385396840549205, 37.724155227532641 ], [ -122.38541414272278, 37.724155637349959 ], [ -122.385429689989081, 37.72415504515677 ], [ -122.385446939582977, 37.72415339589606 ], [ -122.385464163048326, 37.724150716681571 ], [ -122.385486461018303, 37.724147348627724 ], [ -122.385517561871112, 37.724142651083937 ], [ -122.385562344261174, 37.724135753744811 ], [ -122.385579620308761, 37.724135133861189 ], [ -122.385595245944231, 37.724137630950658 ], [ -122.38560923890941, 37.724143930635698 ], [ -122.385619835954955, 37.724152688504432 ], [ -122.38562873939226, 37.72416284694048 ], [ -122.385639388343563, 37.724173664166216 ], [ -122.38565002928155, 37.724184138154342 ], [ -122.385662389611269, 37.724194241254921 ], [ -122.385674732182835, 37.724203657908639 ], [ -122.385688794837932, 37.724212703663014 ], [ -122.385702840080384, 37.724221062964645 ], [ -122.385716876624841, 37.724229079313623 ], [ -122.385730887033873, 37.724236065435178 ], [ -122.385746617533329, 37.724242680930779 ], [ -122.385762330273252, 37.724248609978716 ], [ -122.385778025598896, 37.724253852573533 ], [ -122.385798932390358, 37.72426004211173 ], [ -122.385816364866457, 37.72426559998376 ], [ -122.385832086325422, 37.724271872247911 ], [ -122.38584781649574, 37.724278487735482 ], [ -122.38586357244958, 37.724286132903025 ], [ -122.385877617725541, 37.724294492183716 ], [ -122.38589340051098, 37.724303167287317 ], [ -122.385905743122947, 37.724312583642103 ], [ -122.385919823251839, 37.72432231609433 ], [ -122.385932192689026, 37.724332762111779 ], [ -122.38594985163823, 37.724347244101757 ], [ -122.385963914360929, 37.724356290097674 ], [ -122.385979679391255, 37.72436427819499 ], [ -122.385995409594287, 37.724370893662766 ], [ -122.386012824706015, 37.72437576560376 ], [ -122.386028493940515, 37.724379978214039 ], [ -122.38604418931267, 37.724385220773271 ], [ -122.386058173659734, 37.724391177453832 ], [ -122.386072175428609, 37.724397820583704 ], [ -122.386086194619651, 37.724405150162887 ], [ -122.386098511495945, 37.724413537089887 ], [ -122.386110837084971, 37.724422267241074 ], [ -122.386121460359277, 37.724432054740767 ], [ -122.386155140875701, 37.724396492269392 ], [ -122.386142558844625, 37.724445794903964 ], [ -122.386158314864247, 37.724453440031894 ], [ -122.386174045447717, 37.724460055470189 ], [ -122.386191469295412, 37.724465270335628 ], [ -122.386208867014332, 37.724469455522041 ], [ -122.386227957996084, 37.724472240134631 ], [ -122.386245295090333, 37.724474022731769 ], [ -122.38626432544568, 37.724474404754595 ], [ -122.386288541146868, 37.724474703747106 ], [ -122.386305877897456, 37.724476486340883 ], [ -122.386321468785383, 37.724477610432025 ], [ -122.386338779051741, 37.724478363075484 ], [ -122.386354352857126, 37.724478800431207 ], [ -122.386371637343302, 37.724478523662484 ], [ -122.386387184323809, 37.724477931348545 ], [ -122.38640445173273, 37.72447696811853 ], [ -122.386419972931165, 37.7244753463929 ], [ -122.386437213858997, 37.724473353487241 ], [ -122.386452717618937, 37.724471044757188 ], [ -122.386469932064344, 37.724468022175898 ], [ -122.386485410039811, 37.724464684034231 ], [ -122.386500878956426, 37.724461002670601 ], [ -122.38651633915967, 37.724456978079473 ], [ -122.386531781598762, 37.724452267315506 ], [ -122.386547242137226, 37.724448242440204 ], [ -122.386564474343317, 37.72444590629047 ], [ -122.386579960337627, 37.724442911647458 ], [ -122.386595429583735, 37.724439229991283 ], [ -122.386610881065096, 37.724434862162283 ], [ -122.386626315119955, 37.724429807880355 ], [ -122.38664173140225, 37.724424067151048 ], [ -122.386657130948578, 37.724417639957707 ], [ -122.386670792994096, 37.724410897498451 ], [ -122.386684437604913, 37.724403468312111 ], [ -122.386698064780759, 37.724395352398709 ], [ -122.386709954455839, 37.724386921220365 ], [ -122.386721827401047, 37.724377803853415 ], [ -122.386733682558045, 37.724367999490731 ], [ -122.386743808927534, 37.724358223089439 ], [ -122.386753901134114, 37.724347073774396 ], [ -122.386760492536993, 37.724334263702232 ], [ -122.386768838521292, 37.724322455623209 ], [ -122.386780684957245, 37.724312308304832 ], [ -122.386796092835809, 37.724306224324238 ], [ -122.386814983740024, 37.72430111465097 ], [ -122.386833900781468, 37.724297034651016 ], [ -122.38685286104193, 37.724294670780772 ], [ -122.386873576231366, 37.724293308893905 ], [ -122.386890817450478, 37.724291315916268 ], [ -122.38690624274291, 37.724285918372097 ], [ -122.386918141436212, 37.724277830392509 ], [ -122.386928250341739, 37.724267367524348 ], [ -122.386934850421213, 37.724254900667695 ], [ -122.386936248094955, 37.724241830684782 ], [ -122.386934179470913, 37.724228472583448 ], [ -122.386932102818292, 37.724214770970946 ], [ -122.386933491079674, 37.72420135749902 ], [ -122.386933168672044, 37.724188658157658 ], [ -122.386929398441154, 37.724176357406598 ], [ -122.386923908138428, 37.72416442757148 ], [ -122.386916706823882, 37.724153211871986 ], [ -122.386907811932304, 37.724143397033281 ], [ -122.38689548628895, 37.724134666690496 ], [ -122.386883203877176, 37.724127652753772 ], [ -122.386867500139488, 37.724122067349683 ], [ -122.386837811685524, 37.724110524813227 ], [ -122.386792314266742, 37.724089278160726 ], [ -122.386769557372673, 37.724078311594091 ], [ -122.386748519865691, 37.724066974120603 ], [ -122.386725745213752, 37.72405532110006 ], [ -122.386704690294678, 37.724043297167768 ], [ -122.386683626669864, 37.724030930006215 ], [ -122.386641482023506, 37.72400550949537 ], [ -122.386620400988434, 37.723992455596928 ], [ -122.386599311255594, 37.723979058743758 ], [ -122.386579941254908, 37.723965290981276 ], [ -122.386544701706455, 37.723939416215046 ], [ -122.386297403385385, 37.72380190986933 ], [ -122.386051808287206, 37.723663345927129 ], [ -122.386034340737112, 37.723656414643614 ], [ -122.385999441189313, 37.723643925509059 ], [ -122.385964559071653, 37.723632122815218 ], [ -122.385936677777778, 37.723623641958845 ], [ -122.385920974203756, 37.723618055878958 ], [ -122.385906946468538, 37.723610383053618 ], [ -122.385894611983545, 37.723601309659934 ], [ -122.385883963077092, 37.723590492456275 ], [ -122.385875024838413, 37.723578961136361 ], [ -122.38586953474902, 37.723567031250973 ], [ -122.385860622648437, 37.723556529881158 ], [ -122.385846603632743, 37.723549199999539 ], [ -122.385827460305421, 37.723544355976919 ], [ -122.385811791258462, 37.723540143339349 ], [ -122.385796095735444, 37.723534900753975 ], [ -122.385780392190739, 37.723529314655281 ], [ -122.385764662184897, 37.723522699157897 ], [ -122.385750651900182, 37.723515712764971 ], [ -122.385738361343229, 37.723508355751683 ], [ -122.385731151556087, 37.723496796478393 ], [ -122.385722248191556, 37.723486638323564 ], [ -122.385708220501641, 37.723478965474406 ], [ -122.385692534045461, 37.723474065820646 ], [ -122.385680182539247, 37.72346430594763 ], [ -122.385666111318983, 37.723454916965551 ], [ -122.385652048810016, 37.723445871207367 ], [ -122.385637977596772, 37.723436482221878 ], [ -122.385609870011095, 37.723419077148201 ], [ -122.38559409650658, 37.723410745500026 ], [ -122.385580051429457, 37.723402386184311 ], [ -122.385548521852172, 37.723386409328988 ], [ -122.385534494199106, 37.723378736459033 ], [ -122.385510008939335, 37.723367797318083 ], [ -122.385494374422848, 37.723364957271542 ], [ -122.385459753720795, 37.72336345119556 ], [ -122.385444119898509, 37.723360611131262 ], [ -122.385430153207864, 37.723355340828022 ], [ -122.385416142986116, 37.723348354395121 ], [ -122.385403808604508, 37.723339280949688 ], [ -122.385391492330285, 37.723330893943086 ], [ -122.385375701117368, 37.723321876094445 ], [ -122.385359927998408, 37.723313544134655 ], [ -122.385342434828871, 37.723305583340405 ], [ -122.385326695857486, 37.723298624564244 ], [ -122.385309246571239, 37.723292379887567 ], [ -122.385291822714692, 37.723287164896192 ], [ -122.385263732678311, 37.723270446190739 ], [ -122.38524797700147, 37.723262800941718 ], [ -122.385232229687915, 37.723255498921759 ], [ -122.385216491083142, 37.723248540125276 ], [ -122.385185048704614, 37.723235995428482 ], [ -122.385169353635689, 37.723230752753828 ], [ -122.385151929803385, 37.723225537741719 ], [ -122.385134524075497, 37.723221009167226 ], [ -122.385117126370531, 37.723216824101435 ], [ -122.385101466469777, 37.723212954040122 ], [ -122.385082366457212, 37.723209826029851 ], [ -122.385064995564079, 37.723206670622204 ], [ -122.385047580442674, 37.723201798545674 ], [ -122.38502841148815, 37.723195924710531 ], [ -122.385010953200691, 37.723189336769465 ], [ -122.384993460097732, 37.72318137592324 ], [ -122.384977677662462, 37.723172700972079 ], [ -122.384946044204682, 37.723152605241658 ], [ -122.384924989829145, 37.723140580989593 ], [ -122.384905663878186, 37.723128529078224 ], [ -122.384884618220184, 37.723116848044533 ], [ -122.384842544338781, 37.723094172691695 ], [ -122.384800505291054, 37.723072869951821 ], [ -122.384779494472909, 37.7230625615273 ], [ -122.384742788674473, 37.723047010916545 ], [ -122.384730489577436, 37.723039310022727 ], [ -122.384716444674581, 37.723030950878183 ], [ -122.384704119127363, 37.723022220310114 ], [ -122.38469349658682, 37.723012432674857 ], [ -122.384682864654536, 37.723002301824017 ], [ -122.38467394442489, 37.722991456857699 ], [ -122.384663217109889, 37.722977550517093 ], [ -122.384654296194697, 37.722966705560324 ], [ -122.384643682371646, 37.722957261146163 ], [ -122.384633093968816, 37.722948846419143 ], [ -122.384619101304366, 37.722942546342381 ], [ -122.384596345081988, 37.722931579353954 ], [ -122.384578721543591, 37.722918470060556 ], [ -122.384546896507018, 37.722890823537078 ], [ -122.384530966582233, 37.722876313408833 ], [ -122.384518537006088, 37.722863464381859 ], [ -122.38443411130757, 37.722807129900666 ], [ -122.384347983418735, 37.722751852133769 ], [ -122.384239081476991, 37.722684921079754 ], [ -122.384207605050619, 37.722671003487143 ], [ -122.384176119229906, 37.722656742122247 ], [ -122.384144625418941, 37.722642137786686 ], [ -122.384113113527988, 37.722626847002253 ], [ -122.384083322047019, 37.722611185329136 ], [ -122.384051793126986, 37.722595208071212 ], [ -122.384021983580084, 37.722578859942075 ], [ -122.38399213993786, 37.722561138891301 ], [ -122.383974473094511, 37.722546313377947 ], [ -122.383955077860932, 37.722531515778066 ], [ -122.383937428078781, 37.722517376441559 ], [ -122.383918050598027, 37.722503265006914 ], [ -122.383884593268888, 37.722479421152507 ], [ -122.383868863653973, 37.722472805400912 ], [ -122.383854862444593, 37.722466162007116 ], [ -122.383839115090979, 37.722458859805528 ], [ -122.383825087796367, 37.722451187005468 ], [ -122.383809323735065, 37.722443198062706 ], [ -122.383795270342418, 37.722434495307176 ], [ -122.383782945009273, 37.722425764916487 ], [ -122.383768882931093, 37.722416719206592 ], [ -122.383744181117109, 37.722397198772512 ], [ -122.383731812655114, 37.72238675251657 ], [ -122.38372613997241, 37.722367614518575 ], [ -122.383705303481563, 37.722364170691534 ], [ -122.383691206623396, 37.722353751794557 ], [ -122.383675390420279, 37.722343704028198 ], [ -122.383659608655421, 37.72233502861922 ], [ -122.383642115552547, 37.722327067576785 ], [ -122.3836246492464, 37.722320136472625 ], [ -122.383605471580864, 37.722313918910281 ], [ -122.383586328372033, 37.722309074528077 ], [ -122.383570607863348, 37.722302801956744 ], [ -122.383553080331694, 37.722293467992337 ], [ -122.383537272159586, 37.722283763169607 ], [ -122.383521447287507, 37.722273371882082 ], [ -122.383507350472314, 37.722262952962978 ], [ -122.383491507867944, 37.722251875225332 ], [ -122.383477384968415, 37.722240426625198 ], [ -122.38346325337578, 37.72222863479751 ], [ -122.383445508101758, 37.722210720451898 ], [ -122.383434894533281, 37.722201275653106 ], [ -122.383422587021329, 37.722193231670488 ], [ -122.383410305264974, 37.722186217644108 ], [ -122.38339632153793, 37.722180260372568 ], [ -122.383380653254989, 37.722176047130667 ], [ -122.383364967234144, 37.722171147440534 ], [ -122.383350966126613, 37.722164503986562 ], [ -122.38333693893793, 37.722156831128018 ], [ -122.383322885647786, 37.722148128041155 ], [ -122.383310552066504, 37.722139054369293 ], [ -122.383298209445869, 37.722129637475824 ], [ -122.383282367246764, 37.722118559704285 ], [ -122.38326655080327, 37.722108511888187 ], [ -122.383249023002975, 37.722099177609202 ], [ -122.383231530690935, 37.722091216494434 ], [ -122.383212327035437, 37.722083969464926 ], [ -122.383193157822831, 37.722078095341168 ], [ -122.383172277957286, 37.72207293529052 ], [ -122.383156635797775, 37.722069751696246 ], [ -122.383140949814091, 37.722064851976235 ], [ -122.383123517701506, 37.722059293437333 ], [ -122.383107814683271, 37.722053707530257 ], [ -122.383076390550301, 37.722041848445443 ], [ -122.383058941409402, 37.722035603714303 ], [ -122.383027482510172, 37.72202237171301 ], [ -122.383013472765484, 37.722015384992908 ], [ -122.382981979115939, 37.722000780625166 ], [ -122.382967960677476, 37.721993450399175 ], [ -122.382952196466633, 37.721985461621244 ], [ -122.382938160650923, 37.72197744521457 ], [ -122.382922396446673, 37.721969456432632 ], [ -122.382897807697603, 37.721954398035997 ], [ -122.382881913081334, 37.721941260860625 ], [ -122.382867729471926, 37.721927409605762 ], [ -122.38285353717319, 37.721913215123287 ], [ -122.382839327490771, 37.72189833418733 ], [ -122.38282855685857, 37.721882711553377 ], [ -122.382816049838553, 37.721866773306338 ], [ -122.382806990215869, 37.721850436593726 ], [ -122.382797922594165, 37.721833756643434 ], [ -122.382790609101846, 37.721818078751127 ], [ -122.382783313008133, 37.721803087584632 ], [ -122.382772577517116, 37.721788837568752 ], [ -122.382763570078581, 37.721774560207898 ], [ -122.382752843642237, 37.721760653685102 ], [ -122.382740405865931, 37.721747461242323 ], [ -122.382731494418593, 37.721736959358161 ], [ -122.382724293971776, 37.721725743398046 ], [ -122.382720523870901, 37.721713442518464 ], [ -122.382720202193767, 37.721700743160483 ], [ -122.382723346326571, 37.72168833177593 ], [ -122.382726481072993, 37.721675577176406 ], [ -122.382729581733628, 37.721661449662143 ], [ -122.38273230785866, 37.721632563445375 ], [ -122.382731603643052, 37.721604762147862 ], [ -122.382733369644583, 37.721586614972047 ], [ -122.382734347844632, 37.721576562371538 ], [ -122.38274367451254, 37.721535209801523 ], [ -122.382746792545248, 37.72152176846371 ], [ -122.382751629924911, 37.721507956556103 ], [ -122.382756484345322, 37.721494831105609 ], [ -122.382763041407543, 37.721480648347587 ], [ -122.382782164842624, 37.721416476839273 ], [ -122.382798370882199, 37.721373640576992 ], [ -122.382806482416456, 37.721352565673556 ], [ -122.382814602294815, 37.721331834000935 ], [ -122.382824442541889, 37.721310731465771 ], [ -122.382834299480933, 37.721290315392572 ], [ -122.382844148411394, 37.721269556081531 ], [ -122.382854005339539, 37.721249140006542 ], [ -122.382865600022583, 37.721229039519947 ], [ -122.382877185659027, 37.721208595811795 ], [ -122.382900408735608, 37.721169767752777 ], [ -122.38290693965736, 37.721154555308274 ], [ -122.382913479271252, 37.721139686089295 ], [ -122.382921747600108, 37.721124789237969 ], [ -122.382931761341311, 37.72111055121686 ], [ -122.382941783773603, 37.721096656420762 ], [ -122.382951814897126, 37.721083104849697 ], [ -122.382963583082613, 37.721069868876654 ], [ -122.382977097024437, 37.721057291727 ], [ -122.382988899981882, 37.721045428655017 ], [ -122.383004168370334, 37.721033853552548 ], [ -122.383019462839854, 37.721023308125787 ], [ -122.383034765654699, 37.721013105928478 ], [ -122.383050086547513, 37.721003590169914 ], [ -122.383070574806197, 37.7209933050774 ], [ -122.383087649800032, 37.720984791368565 ], [ -122.383102978684576, 37.720975618840036 ], [ -122.383116562158349, 37.720965787756029 ], [ -122.383131839552021, 37.72095455585724 ], [ -122.383143650811689, 37.7209430357264 ], [ -122.383155445374214, 37.720930829406058 ], [ -122.383167222202275, 37.720917936912819 ], [ -122.383198904587886, 37.720871762618749 ], [ -122.38322729544646, 37.720832165418933 ], [ -122.383257414279257, 37.720792540037081 ], [ -122.383305971799075, 37.720729958050264 ], [ -122.38333258199772, 37.720688328826199 ], [ -122.383344140985599, 37.72066685539815 ], [ -122.383355691961356, 37.720645038731924 ], [ -122.383365505527735, 37.720622906477054 ], [ -122.383373590728709, 37.720600801854324 ], [ -122.383381667228008, 37.720578354005049 ], [ -122.383389734679795, 37.720555562934777 ], [ -122.383394337405079, 37.720532483893628 ], [ -122.383400668139274, 37.720509377224332 ], [ -122.383403542162711, 37.720486326096186 ], [ -122.383407970241009, 37.720456382272516 ], [ -122.38340677875901, 37.720409360597294 ], [ -122.383402539659841, 37.720378525251974 ], [ -122.383398682545547, 37.720362792132271 ], [ -122.383398428098104, 37.720361252706262 ], [ -122.383396641447277, 37.720350463627156 ], [ -122.383387721377815, 37.72033961856436 ], [ -122.383358200220172, 37.720334596711098 ], [ -122.383344547327056, 37.720341682291192 ], [ -122.38333615741675, 37.720351774011149 ], [ -122.383322539304771, 37.720360232492368 ], [ -122.383310275938157, 37.720353904619685 ], [ -122.383304777801996, 37.720341631382666 ], [ -122.38331139553371, 37.720329851172949 ], [ -122.383307625413451, 37.720317550583985 ], [ -122.383293624653192, 37.720310906846613 ], [ -122.383277974162851, 37.720307380041632 ], [ -122.383265710124405, 37.720301052449905 ], [ -122.383253377195246, 37.720291978489243 ], [ -122.38324619420213, 37.720281449010265 ], [ -122.383240704778117, 37.720269518996041 ], [ -122.38324039171458, 37.720257162862467 ], [ -122.383243535008134, 37.72024475147218 ], [ -122.383250135348419, 37.720232284813868 ], [ -122.383254981599535, 37.720218816377724 ], [ -122.383258090442638, 37.720205031803125 ], [ -122.38325945354886, 37.720190588682506 ], [ -122.383259097001115, 37.720176516419151 ], [ -122.383255283408985, 37.720162499423914 ], [ -122.383249759553038, 37.720149196500621 ], [ -122.3832425157008, 37.720136264439603 ], [ -122.383233560549201, 37.720124046466523 ], [ -122.38322290383195, 37.720112885790329 ], [ -122.383210553208443, 37.720103125653154 ], [ -122.383196395976469, 37.720090304111586 ], [ -122.383073889931538, 37.72003217363779 ], [ -122.382849809825458, 37.71992313205017 ], [ -122.382825447811499, 37.719916997234385 ], [ -122.38279933973088, 37.719910203866348 ], [ -122.382774952002876, 37.719903039905788 ], [ -122.382750537499561, 37.719894845998688 ], [ -122.382727834641599, 37.719885937725351 ], [ -122.382703394420673, 37.719876714399525 ], [ -122.382680656108263, 37.719866433224148 ], [ -122.382657909806966, 37.719855809081899 ], [ -122.382635145779759, 37.719844498488762 ], [ -122.382614092714974, 37.719832473817299 ], [ -122.382593030963804, 37.71982010591605 ], [ -122.382571951833512, 37.71980705155903 ], [ -122.382552583665785, 37.719793283125171 ], [ -122.382533206466661, 37.719779171467643 ], [ -122.382517347496844, 37.719767407137013 ], [ -122.382329598519163, 37.719659157154716 ], [ -122.382140156862491, 37.71955230738498 ], [ -122.382084189621324, 37.71952710586983 ], [ -122.382026520507765, 37.719502961888537 ], [ -122.382009045965773, 37.719495686772042 ], [ -122.381991562743806, 37.719488068701423 ], [ -122.381975799169183, 37.719480079789612 ], [ -122.381960018217541, 37.719471404423579 ], [ -122.381944228233777, 37.719462385834824 ], [ -122.381928430255144, 37.719453024006853 ], [ -122.381912623244801, 37.719443318956195 ], [ -122.381898535881675, 37.719433243065936 ], [ -122.381884431142637, 37.719422480721789 ], [ -122.381872072119776, 37.719412377217125 ], [ -122.381859773582747, 37.719404676299234 ], [ -122.381847484429258, 37.719397318595092 ], [ -122.381833501358983, 37.719391361409976 ], [ -122.381802095947549, 37.719380188981518 ], [ -122.381786358477399, 37.719373229447925 ], [ -122.381770594949188, 37.719365240508537 ], [ -122.381756533687849, 37.719356194279435 ], [ -122.38174418338258, 37.719346433987333 ], [ -122.381731807013125, 37.719335644015629 ], [ -122.381721141599613, 37.719324139981623 ], [ -122.381712186795909, 37.719311921891311 ], [ -122.381704943292732, 37.719298989734028 ], [ -122.381695910985357, 37.719283682596497 ], [ -122.381688693554523, 37.719271780116451 ], [ -122.381681484814919, 37.719260220862054 ], [ -122.381663628063038, 37.719237844020014 ], [ -122.381645788699373, 37.719216153627443 ], [ -122.381624527445553, 37.719195891351333 ], [ -122.381612168150028, 37.71918578782455 ], [ -122.381601529187748, 37.719175313452254 ], [ -122.381592592151165, 37.719163782073863 ], [ -122.381583646069373, 37.719151906924999 ], [ -122.381576411292528, 37.719139317985587 ], [ -122.381570896501387, 37.71912635820749 ], [ -122.381567092315478, 37.719112684375858 ], [ -122.381559735915829, 37.719095290544253 ], [ -122.38155422912088, 37.719082673727875 ], [ -122.381548731721296, 37.719070400675434 ], [ -122.381541505639575, 37.719058154685285 ], [ -122.38153600789127, 37.719045881363151 ], [ -122.38150713837662, 37.718998271399208 ], [ -122.381498201369013, 37.718986739738739 ], [ -122.381490992686665, 37.71897518047215 ], [ -122.381473118684809, 37.718952117147957 ], [ -122.381464190375866, 37.718940928710964 ], [ -122.381455270757456, 37.718930083499401 ], [ -122.381446342115154, 37.718918895341112 ], [ -122.38143742284764, 37.718908050122621 ], [ -122.381416144356564, 37.718887101081044 ], [ -122.381407233439191, 37.718876599091892 ], [ -122.381385972354465, 37.718856337046212 ], [ -122.381373613486502, 37.71884623321376 ], [ -122.381352369787336, 37.718826657339626 ], [ -122.381327686843449, 37.718807823394606 ], [ -122.38131535405293, 37.718798749234402 ], [ -122.38129421463421, 37.718783292338109 ], [ -122.381275038076012, 37.718777074392875 ], [ -122.381252413579233, 37.718771255149179 ], [ -122.381231552150709, 37.71876678120416 ], [ -122.381208979780382, 37.718763021309094 ], [ -122.381188161789552, 37.718760263487212 ], [ -122.381165632510005, 37.718758219720186 ], [ -122.381143129982078, 37.718757205616299 ], [ -122.381106826627473, 37.718757441991308 ], [ -122.381084384557454, 37.718758830464949 ], [ -122.380998020790415, 37.718762269763332 ], [ -122.380954864960344, 37.718765019067327 ], [ -122.380911726497644, 37.718768454807901 ], [ -122.380818588404082, 37.718777496255818 ], [ -122.380801331270163, 37.71877880161415 ], [ -122.380782345824386, 37.718780134839598 ], [ -122.380765070988232, 37.718780754294905 ], [ -122.380746051141955, 37.718780714329604 ], [ -122.380728750590777, 37.7187803038209 ], [ -122.380709712691541, 37.718779577682966 ], [ -122.380692386433651, 37.718778137484804 ], [ -122.380673314144289, 37.718776038430633 ], [ -122.380655961489964, 37.718773568553999 ], [ -122.380638600152778, 37.718770755448638 ], [ -122.380621221455968, 37.718767256162863 ], [ -122.380603834063052, 37.71876341309914 ], [ -122.380569024561694, 37.718754354608322 ], [ -122.380515107712881, 37.718741824128088 ], [ -122.380459506326716, 37.71873103733904 ], [ -122.380442119303254, 37.718727194520504 ], [ -122.380426442886844, 37.718722637662651 ], [ -122.380409012106568, 37.718717078713624 ], [ -122.380393292279919, 37.718710805720228 ], [ -122.380374046360402, 37.718701842093019 ], [ -122.380356511396428, 37.718692164421441 ], [ -122.38034421348118, 37.718684463338931 ], [ -122.380331889520718, 37.718675732576422 ], [ -122.380321267831235, 37.718665944545648 ], [ -122.380312339384403, 37.718654756026375 ], [ -122.380301657268987, 37.718642565404615 ], [ -122.380291009195389, 37.71863174769787 ], [ -122.380280353133841, 37.718620586752877 ], [ -122.380271407679629, 37.71860871177239 ], [ -122.380262453207322, 37.71859649384507 ], [ -122.380255227383529, 37.718584247775084 ], [ -122.380248018933486, 37.718572688431699 ], [ -122.380240793121359, 37.718560442635365 ], [ -122.380231848026369, 37.718548567646252 ], [ -122.38022120032204, 37.718537749927506 ], [ -122.380208832990292, 37.718527303020664 ], [ -122.380196491707878, 37.718517885791279 ], [ -122.380182448162131, 37.718509525825596 ], [ -122.380168421983186, 37.718501852310723 ], [ -122.380152693540609, 37.718495236058757 ], [ -122.380136999827513, 37.718489992709728 ], [ -122.380119595168225, 37.718485463396448 ], [ -122.380103953548627, 37.718482279400568 ], [ -122.380086617999027, 37.718480495897992 ], [ -122.380053754382303, 37.718479990320766 ], [ -122.380034708231022, 37.718478920841939 ], [ -122.380017337959387, 37.718475764424113 ], [ -122.37999994233742, 37.718471578313881 ], [ -122.379982511302273, 37.718466019307044 ], [ -122.379966765867707, 37.718458716572137 ], [ -122.379950994048144, 37.718450384161848 ], [ -122.379936915819798, 37.718440651261687 ], [ -122.379924539863453, 37.718429861098564 ], [ -122.379912120161947, 37.71841735480826 ], [ -122.379903227227103, 37.718407539426167 ], [ -122.379890903011727, 37.718398808348084 ], [ -122.379878596858461, 37.718390763984829 ], [ -122.379866307723006, 37.718383406078345 ], [ -122.379852316321873, 37.718377105430825 ], [ -122.379838350963936, 37.718371834460527 ], [ -122.379822683339711, 37.718367620748374 ], [ -122.379808770066504, 37.718364409132271 ], [ -122.379793145500187, 37.71836191155316 ], [ -122.379777565026231, 37.718361130092418 ], [ -122.379746464146947, 37.718361969759833 ], [ -122.379729146346136, 37.71836087292629 ], [ -122.379715198352471, 37.718356288119374 ], [ -122.379701189609946, 37.718349301001297 ], [ -122.379690576729757, 37.718339856139472 ], [ -122.379683377077711, 37.718328640261959 ], [ -122.3796778796832, 37.718316366577113 ], [ -122.37967239098387, 37.718304436667452 ], [ -122.37966348037574, 37.718293934270854 ], [ -122.379652884528355, 37.718285176138238 ], [ -122.379638884477515, 37.718278531964394 ], [ -122.379623199871318, 37.718273631767524 ], [ -122.379609182480792, 37.718266301686668 ], [ -122.379598560938021, 37.718256513315531 ], [ -122.379589606611773, 37.718244295061801 ], [ -122.379568259413119, 37.718220600422896 ], [ -122.379555875206677, 37.718209466714256 ], [ -122.379543499344152, 37.718198676510717 ], [ -122.3795311408429, 37.718188572758478 ], [ -122.379517062719074, 37.718178839807734 ], [ -122.379503001963329, 37.71816979358254 ], [ -122.379487230257041, 37.718161461109773 ], [ -122.379473169494304, 37.718152414331819 ], [ -122.379462538975446, 37.718142283276592 ], [ -122.3794518917869, 37.718131465482102 ], [ -122.37944294651696, 37.718119590163212 ], [ -122.379435729559873, 37.718107687542933 ], [ -122.379424700187641, 37.718081767792796 ], [ -122.379422659465391, 37.718069439219867 ], [ -122.379417153461716, 37.718056822570574 ], [ -122.379409936521796, 37.718044920223178 ], [ -122.37940101731057, 37.718034074854529 ], [ -122.379390386804573, 37.718023943243416 ], [ -122.379378072089409, 37.71801555560107 ], [ -122.37936745929791, 37.718006110709609 ], [ -122.379346164299292, 37.71798447511302 ], [ -122.379333796843824, 37.717974028393506 ], [ -122.379323167053869, 37.717963897039802 ], [ -122.379310817292421, 37.717954136215845 ], [ -122.379298475880205, 37.717944719171612 ], [ -122.379286143826207, 37.717935644792249 ], [ -122.379272083137607, 37.717926598264555 ], [ -122.379261435662016, 37.717915780457993 ], [ -122.379250796867041, 37.717905305876819 ], [ -122.379240166752524, 37.717895174521026 ], [ -122.379229553995728, 37.71788572961696 ], [ -122.379217221621232, 37.717876655510366 ], [ -122.379203178306753, 37.717868295427088 ], [ -122.379190871970053, 37.717860250996829 ], [ -122.379175109041569, 37.717852261708209 ], [ -122.379164469922188, 37.717841787124641 ], [ -122.379152137908591, 37.717832713005684 ], [ -122.379138137994644, 37.717826069046431 ], [ -122.379125875056587, 37.717819740741156 ], [ -122.379111857793731, 37.717812410326019 ], [ -122.379101270749828, 37.717803995094904 ], [ -122.379090667046114, 37.717794893399073 ], [ -122.379078291320113, 37.717784103145959 ], [ -122.379062641223001, 37.717780576059667 ], [ -122.379047051849412, 37.717779451006763 ], [ -122.379033086660868, 37.717774179940491 ], [ -122.379022465271206, 37.717764391791221 ], [ -122.379016976365222, 37.717752461580901 ], [ -122.379009785541115, 37.717741588612981 ], [ -122.378990609802273, 37.71773537083854 ], [ -122.378971451059471, 37.717729838970079 ], [ -122.378953994246785, 37.717723250131236 ], [ -122.378936512100381, 37.717715631599603 ], [ -122.37891900323838, 37.7177069833972 ], [ -122.378903197337848, 37.717697277934541 ], [ -122.37888387343952, 37.717685225304997 ], [ -122.378864602279094, 37.717675231470452 ], [ -122.378847076429409, 37.717665896799019 ], [ -122.378827830621148, 37.717656932923234 ], [ -122.378808602859749, 37.717648655486073 ], [ -122.378778909235265, 37.717636768235245 ], [ -122.378761435795425, 37.717629492629342 ], [ -122.378726453548339, 37.717613569064291 ], [ -122.378708953409784, 37.717605264056957 ], [ -122.378693173583002, 37.717596588245186 ], [ -122.378675665123012, 37.717587940000953 ], [ -122.378659867262996, 37.717578577742898 ], [ -122.37864235048211, 37.71756958626176 ], [ -122.378594931951909, 37.717540469771926 ], [ -122.378579117109084, 37.717530421044614 ], [ -122.3785509613637, 37.717510954911866 ], [ -122.378491401169214, 37.717480315188894 ], [ -122.37843182436778, 37.717448988971746 ], [ -122.37837222957846, 37.717416976282458 ], [ -122.378314346472195, 37.717384249540096 ], [ -122.378221298936523, 37.717328391303198 ], [ -122.378163571723618, 37.717301842568197 ], [ -122.378104150956304, 37.717276694266459 ], [ -122.37804646718476, 37.717251861606229 ], [ -122.377987080837755, 37.717228086156695 ], [ -122.377882351983473, 37.717188895399786 ], [ -122.377451299846371, 37.716962278497022 ], [ -122.377409136350764, 37.716935824700762 ], [ -122.377366990222555, 37.71691005734241 ], [ -122.37732312451665, 37.716884660739723 ], [ -122.37727928449992, 37.716860293805809 ], [ -122.377192593728324, 37.716850687700834 ], [ -122.377174053804566, 37.716801195276375 ], [ -122.377135442741164, 37.716778462058606 ], [ -122.377117882304205, 37.716767754227781 ], [ -122.377098594291084, 37.716757073924335 ], [ -122.377077577665531, 37.716746421163919 ], [ -122.377058306652586, 37.716736427312505 ], [ -122.377035544432545, 37.716725115631768 ], [ -122.377004002182673, 37.716708449744992 ], [ -122.376974170891216, 37.716691070132001 ], [ -122.376942602330686, 37.716673374829035 ], [ -122.376912754080166, 37.716655308741679 ], [ -122.376882896832043, 37.716636899425616 ], [ -122.376853030939387, 37.716618147149923 ], [ -122.376824875984553, 37.716598680327252 ], [ -122.376794983771219, 37.716578898087818 ], [ -122.376766811521605, 37.716558745072504 ], [ -122.376740359241694, 37.716538221557123 ], [ -122.376712169684112, 37.71651738180077 ], [ -122.376685699750382, 37.716496171550673 ], [ -122.376645065755298, 37.716461795731668 ], [ -122.376629260077664, 37.716452090242093 ], [ -122.376613463055463, 37.71644272742784 ], [ -122.376597691693803, 37.716434394571444 ], [ -122.376583692278402, 37.716427750581751 ], [ -122.376567912942647, 37.716419074209107 ], [ -122.376553835548819, 37.716409341176096 ], [ -122.376541451404279, 37.716398207158385 ], [ -122.376530778896253, 37.716386359416987 ], [ -122.376520053711957, 37.71637245232575 ], [ -122.376509415869748, 37.716361977488937 ], [ -122.376498794675413, 37.716352189390022 ], [ -122.37648645456278, 37.716342771488634 ], [ -122.376474122785964, 37.71633369736724 ], [ -122.37646180833417, 37.716325309423283 ], [ -122.376449502196934, 37.716317264435602 ], [ -122.376435485481252, 37.716309933700259 ], [ -122.376365488584341, 37.716276712265071 ], [ -122.376304211373494, 37.7162464421762 ], [ -122.376232373365212, 37.716208786249759 ], [ -122.376216559470649, 37.716198737197637 ], [ -122.376202464831138, 37.716188317394391 ], [ -122.376190080782948, 37.716177183613944 ], [ -122.37617768876666, 37.716165706594467 ], [ -122.376165279082414, 37.716153543125806 ], [ -122.376154588659077, 37.716141009182088 ], [ -122.3761438902538, 37.71612813145051 ], [ -122.376134902445671, 37.716114540017813 ], [ -122.376127616916719, 37.716099891652185 ], [ -122.376121444571496, 37.716060846115461 ], [ -122.376121115383214, 37.71604780350129 ], [ -122.376125312585643, 37.716008593078577 ], [ -122.376128439914226, 37.715995495685426 ], [ -122.376133304145654, 37.715982713442855 ], [ -122.376143049597545, 37.715957835965099 ], [ -122.376159466184788, 37.715923238019322 ], [ -122.376179356242673, 37.715889271474957 ], [ -122.376189309582273, 37.715872631433676 ], [ -122.376201000523864, 37.715856307079349 ], [ -122.37621269978483, 37.715840326230605 ], [ -122.376226135941366, 37.715824660529996 ], [ -122.376239589425921, 37.715809681555776 ], [ -122.376254771155516, 37.715794675051384 ], [ -122.376271646475075, 37.715778268109382 ], [ -122.376283440655172, 37.715766062477954 ], [ -122.376310486193518, 37.715741596141669 ], [ -122.376322263732177, 37.715728704316476 ], [ -122.376334049571057, 37.715716155173126 ], [ -122.376345826755966, 37.715703263351031 ], [ -122.376369363764837, 37.715676792426088 ], [ -122.376381123602442, 37.715663213872432 ], [ -122.376401186771318, 37.715636111823081 ], [ -122.376411209340475, 37.715622217575891 ], [ -122.376441252415276, 37.715579505126925 ], [ -122.376454523861156, 37.715557318367054 ], [ -122.37646974881784, 37.715544027967823 ], [ -122.376484964758959, 37.715530394345414 ], [ -122.376515380332151, 37.715502440624682 ], [ -122.376528859694105, 37.715488491296732 ], [ -122.376542321721558, 37.715473855513849 ], [ -122.376557511986263, 37.71545919219632 ], [ -122.37656924576747, 37.715444584217934 ], [ -122.376582699107203, 37.715429604929049 ], [ -122.37659614379038, 37.715414282961056 ], [ -122.376619576292114, 37.715383693270141 ], [ -122.376631284392559, 37.715368055325236 ], [ -122.376654682556946, 37.715336092989432 ], [ -122.376664653392297, 37.715320139354375 ], [ -122.376682927469105, 37.715290662203351 ], [ -122.376687808896733, 37.715278566664409 ], [ -122.376690936088593, 37.715265468980213 ], [ -122.376688878566242, 37.715252453901009 ], [ -122.376681679659114, 37.715241237559951 ], [ -122.376662556398827, 37.715237078495178 ], [ -122.37664688961523, 37.715232864358583 ], [ -122.376639690716317, 37.715221648014925 ], [ -122.376644563481292, 37.715209209250951 ], [ -122.376652953380841, 37.715199118279322 ], [ -122.376664860393532, 37.715191374275555 ], [ -122.376687422784229, 37.715194791816721 ], [ -122.376687067504449, 37.715180719522259 ], [ -122.376702422323845, 37.715172577492581 ], [ -122.376716031573253, 37.715163776542923 ], [ -122.376729623488316, 37.715154289138269 ], [ -122.376741469833547, 37.715144142814424 ], [ -122.376755035744793, 37.715133625726743 ], [ -122.37676513617842, 37.715122820763163 ], [ -122.376776948189416, 37.715111301248839 ], [ -122.376787014292304, 37.715099123096479 ], [ -122.376797028396751, 37.715084885583089 ], [ -122.376822345285078, 37.715060446663202 ], [ -122.376847653490671, 37.715035664511078 ], [ -122.376871224781212, 37.715010566664418 ], [ -122.376894778723212, 37.714984782359565 ], [ -122.376916604418071, 37.714959025588243 ], [ -122.376960238083626, 37.714906825585267 ], [ -122.376997080800365, 37.714859540886621 ], [ -122.377010663964072, 37.714849710496978 ], [ -122.37702423844344, 37.714839536329912 ], [ -122.377036076031359, 37.714829046749252 ], [ -122.377059716529033, 37.714806694677584 ], [ -122.377071528105475, 37.714795175413244 ], [ -122.377101725785408, 37.714758640881662 ], [ -122.377110046572668, 37.71474580378316 ], [ -122.37712317899306, 37.714718125317994 ], [ -122.377131300077295, 37.714697394009583 ], [ -122.377141149035509, 37.714676635164444 ], [ -122.377151007346924, 37.714656219534078 ], [ -122.377160873636086, 37.714636147415113 ], [ -122.377172468820078, 37.71461604719299 ], [ -122.377182335436814, 37.714595974791997 ], [ -122.377193938592001, 37.714576218079934 ], [ -122.377207270307977, 37.714556433818551 ], [ -122.377218882809402, 37.714537020319568 ], [ -122.377232223179533, 37.714517579281953 ], [ -122.37725892123467, 37.71447938365538 ], [ -122.377277350893181, 37.714456084488674 ], [ -122.377283856371662, 37.71443984265948 ], [ -122.377292090065524, 37.714423573286055 ], [ -122.377300340753251, 37.714407990645519 ], [ -122.377310329000593, 37.714392723126743 ], [ -122.377322053797371, 37.714377771844191 ], [ -122.37733379557335, 37.714363506744739 ], [ -122.377347274568308, 37.714349557046042 ], [ -122.377360770908837, 37.714336294348335 ], [ -122.377376004460587, 37.714323346775984 ], [ -122.37739125500535, 37.714311085935115 ], [ -122.37740648820791, 37.714298138638888 ], [ -122.377421729728198, 37.714285534572831 ], [ -122.377436980603278, 37.714273273720465 ], [ -122.377453959342105, 37.714260985325403 ], [ -122.377469218191379, 37.7142490679811 ], [ -122.377486214595891, 37.714237465754614 ], [ -122.3775014911119, 37.714226234579385 ], [ -122.37751849583654, 37.714214975854986 ], [ -122.377549126867919, 37.714195602534218 ], [ -122.377599993609977, 37.714155991753785 ], [ -122.377650877623338, 37.714117066855323 ], [ -122.37770177893016, 37.714078828662608 ], [ -122.377754425395366, 37.714041249630476 ], [ -122.377808826358589, 37.714004672148562 ], [ -122.377878556048842, 37.713958923045773 ], [ -122.37803805055384, 37.713839292710567 ], [ -122.378311443052539, 37.713642992366779 ], [ -122.378326710994585, 37.713631417851289 ], [ -122.37834196991345, 37.713619500112657 ], [ -122.378355483282817, 37.713606923478181 ], [ -122.378367251103185, 37.713593687948453 ], [ -122.378379009900755, 37.713580109196364 ], [ -122.378389032514391, 37.713566214765343 ], [ -122.378399037086837, 37.713551633891143 ], [ -122.378409033673563, 37.71353670977841 ], [ -122.378415564843792, 37.713521497564329 ], [ -122.378423815534646, 37.713505914562745 ], [ -122.378428575143985, 37.713489014049621 ], [ -122.378438562344869, 37.713473746443995 ], [ -122.378446830724755, 37.713458850163093 ], [ -122.378458563459517, 37.713444241448215 ], [ -122.378468586039958, 37.713430347010117 ], [ -122.378482073340123, 37.713416740955331 ], [ -122.378495569294984, 37.713403477576485 ], [ -122.37854455933747, 37.713358058816908 ], [ -122.378586757641585, 37.713317555466887 ], [ -122.378660976502815, 37.71324426535471 ], [ -122.378686622123027, 37.713232868634442 ], [ -122.378712250040763, 37.713220785460798 ], [ -122.378736140733594, 37.713208386350885 ], [ -122.378760006099483, 37.713194958094263 ], [ -122.378783853401998, 37.713180842841368 ], [ -122.378805955855427, 37.713166068959936 ], [ -122.378828040611339, 37.71315060890111 ], [ -122.378850116669099, 37.713134805062303 ], [ -122.378897499585833, 37.713094218893794 ], [ -122.378902259061135, 37.713077318360412 ], [ -122.378913939946415, 37.713060650508481 ], [ -122.378933827973057, 37.713026683209065 ], [ -122.378963633962542, 37.712974702985242 ], [ -122.3789800308884, 37.712939418456834 ], [ -122.378988220659366, 37.712921432553166 ], [ -122.378994682251076, 37.712903474492308 ], [ -122.379002872021474, 37.712885488862113 ], [ -122.379010931305004, 37.712862354837071 ], [ -122.37901923419868, 37.712848831146545 ], [ -122.379027554095487, 37.712835993914254 ], [ -122.379037619176003, 37.712823815570687 ], [ -122.379047693627413, 37.712811980716452 ], [ -122.379059495902879, 37.712800118022507 ], [ -122.37908614901481, 37.712760205563576 ], [ -122.379114530283019, 37.712720265802361 ], [ -122.379142928880469, 37.712681012761955 ], [ -122.379173064293639, 37.712642075095069 ], [ -122.379203208344947, 37.71260348037233 ], [ -122.379256878689148, 37.712538071449124 ], [ -122.379268637502918, 37.712524492600444 ], [ -122.379278650439701, 37.712510254875795 ], [ -122.379298659638835, 37.712481092959536 ], [ -122.379306927729047, 37.71246619634131 ], [ -122.379315186793136, 37.712450956501357 ], [ -122.379321709005382, 37.712435401007788 ], [ -122.37932825724657, 37.712420875193772 ], [ -122.379336368787747, 37.712399800499135 ], [ -122.379346199816894, 37.712378355003281 ], [ -122.379365879212997, 37.712336150462143 ], [ -122.379377455409823, 37.712315364122553 ], [ -122.379389040962025, 37.71229492072279 ], [ -122.379400617477728, 37.712274133826106 ], [ -122.379412211349106, 37.712254033656116 ], [ -122.37943383579011, 37.712220382468807 ], [ -122.379443961457966, 37.712210606401335 ], [ -122.379452350984806, 37.712200515220019 ], [ -122.379460722794221, 37.71218973704115 ], [ -122.379467357765066, 37.712178643485373 ], [ -122.379472247213258, 37.71216689105173 ], [ -122.379480610345027, 37.712155769919313 ], [ -122.379490683937206, 37.712143934762395 ], [ -122.379499030060259, 37.712132127444399 ], [ -122.379507358465077, 37.712119633128815 ], [ -122.379513950039424, 37.712106823711594 ], [ -122.3795205329195, 37.712093670518172 ], [ -122.379525370285052, 37.712079858722241 ], [ -122.379530172590734, 37.712064674025001 ], [ -122.379539812945708, 37.712035677519864 ], [ -122.379548106627041, 37.712021810569162 ], [ -122.379556408637853, 37.712008286850036 ], [ -122.379568185022265, 37.711995394692678 ], [ -122.379580030469796, 37.711985247803753 ], [ -122.379591867242681, 37.711974757961542 ], [ -122.37960195849513, 37.711963609242559 ], [ -122.379612041066054, 37.71195211729605 ], [ -122.379622114962288, 37.711940282396583 ], [ -122.379630451657874, 37.711928131304077 ], [ -122.379638780377292, 37.711915637522473 ], [ -122.379645371896999, 37.711902827548315 ], [ -122.379650226245587, 37.711889702480249 ], [ -122.379656800410586, 37.711876206326664 ], [ -122.379659918603238, 37.711862765324433 ], [ -122.379666440684801, 37.711847209535733 ], [ -122.379678077818568, 37.711828825746096 ], [ -122.379688004133726, 37.711811155438397 ], [ -122.37969966729311, 37.7117938013265 ], [ -122.379726467250435, 37.711759723844118 ], [ -122.379741621412023, 37.711743687200766 ], [ -122.379749992782422, 37.711732909006074 ], [ -122.379758304094665, 37.711719728487729 ], [ -122.379768369250002, 37.711707550074067 ], [ -122.379780179921312, 37.711696030807062 ], [ -122.379792016612967, 37.71168554066967 ], [ -122.379807344332391, 37.711676368550826 ], [ -122.379822698086315, 37.711668226109936 ], [ -122.379838086216196, 37.711661456853747 ], [ -122.379855237891832, 37.711656032360494 ], [ -122.379872414919589, 37.711651637830329 ], [ -122.379889557917664, 37.711645870380011 ], [ -122.379908402687462, 37.71163904594512 ], [ -122.379923765095569, 37.711631246443076 ], [ -122.379940837953981, 37.711622733183106 ], [ -122.379956157314652, 37.71161321808723 ], [ -122.379969722126845, 37.711602700623473 ], [ -122.379983278248133, 37.711591839656897 ], [ -122.37999507983497, 37.71157997687245 ], [ -122.380006864748808, 37.711567427622455 ], [ -122.380016912482191, 37.711554562733966 ], [ -122.380025223388486, 37.711541382476511 ], [ -122.380036947182674, 37.711526430642408 ], [ -122.38004519730535, 37.711510847247801 ], [ -122.380061679847557, 37.711478994558078 ], [ -122.380068175776742, 37.711462409340825 ], [ -122.380072943900714, 37.711445851702329 ], [ -122.380077702996331, 37.711428950842468 ], [ -122.380080724916397, 37.711411734346029 ], [ -122.380091216381629, 37.711348044590686 ], [ -122.38010580681599, 37.711241368202799 ], [ -122.380111373878989, 37.711188057730013 ], [ -122.380119034347572, 37.71108080577428 ], [ -122.380121136424947, 37.711027206969042 ], [ -122.38012151036925, 37.71097363602329 ], [ -122.380118923524051, 37.71087135474918 ], [ -122.380110379014539, 37.710806938200108 ], [ -122.380106523093488, 37.71079120494867 ], [ -122.380104387317047, 37.710775100874208 ], [ -122.380100531751495, 37.710759367891555 ], [ -122.380096667493106, 37.710743291132871 ], [ -122.380092811923888, 37.710727557875288 ], [ -122.380087228225392, 37.710711852202415 ], [ -122.380081653209785, 37.710696489755954 ], [ -122.380077797646152, 37.710680756497752 ], [ -122.380070494504992, 37.710665421635404 ], [ -122.38005934448995, 37.710634696740314 ], [ -122.380050209064109, 37.710615270740703 ], [ -122.380041299331083, 37.710604768634425 ], [ -122.380032397935238, 37.710594609759674 ], [ -122.38002177779228, 37.710584821958371 ], [ -122.38001116562711, 37.710575376844702 ], [ -122.379989959370192, 37.710557173605956 ], [ -122.379977637144137, 37.710548442789609 ], [ -122.379965323255277, 37.71054005520417 ], [ -122.379940729859655, 37.710524652941764 ], [ -122.379928442370812, 37.710517295301628 ], [ -122.379914435085283, 37.710510308200178 ], [ -122.379886455233503, 37.710497706624587 ], [ -122.379872473994169, 37.710491749198276 ], [ -122.379856825041841, 37.710488221944338 ], [ -122.379827508004084, 37.710491093407484 ], [ -122.379813839223587, 37.710497492136078 ], [ -122.379798416283975, 37.71050288903816 ], [ -122.379782897858064, 37.710504509895109 ], [ -122.379767309667471, 37.710503385490924 ], [ -122.379749941954842, 37.710500228744046 ], [ -122.379735969404862, 37.71049461452828 ], [ -122.379723664231022, 37.710486570144241 ], [ -122.37971305247035, 37.710477125272625 ], [ -122.37970236260378, 37.710464591359482 ], [ -122.37969344425926, 37.710453745999907 ], [ -122.379682806125587, 37.710443271450828 ], [ -122.379672177364711, 37.710433140116493 ], [ -122.379661556600993, 37.710423352293517 ], [ -122.379649225750256, 37.710414277941311 ], [ -122.379636903242243, 37.710405547094624 ], [ -122.379624598093869, 37.71039750270014 ], [ -122.379610573502859, 37.710389829108948 ], [ -122.379596566278167, 37.710382842244165 ], [ -122.379582567720405, 37.710376198055286 ], [ -122.379566867083199, 37.710370611396797 ], [ -122.37955117512638, 37.710365367962943 ], [ -122.379535500182058, 37.71036081098601 ], [ -122.379504186047228, 37.710353069916337 ], [ -122.379490239583589, 37.71034848562612 ], [ -122.37947454763686, 37.710343242182041 ], [ -122.379460575130224, 37.710337627658895 ], [ -122.379444865487201, 37.710331697762861 ], [ -122.379430875636984, 37.710325397057247 ], [ -122.379416868434376, 37.710318409896438 ], [ -122.379404589708813, 37.710311395428178 ], [ -122.379390565156754, 37.710303721810703 ], [ -122.379378268729113, 37.710296020617108 ], [ -122.379364226828372, 37.710287660542946 ], [ -122.379351913051934, 37.710279272893054 ], [ -122.379341310038157, 37.710270170939822 ], [ -122.379328978913207, 37.71026109683396 ], [ -122.379307738212361, 37.710241520839027 ], [ -122.37929710884022, 37.710231389481542 ], [ -122.379288208275057, 37.710221230264345 ], [ -122.379275772698335, 37.710208037437084 ], [ -122.379261548615801, 37.710192469588307 ], [ -122.379247341892423, 37.710177588191321 ], [ -122.379231407401903, 37.710162734359407 ], [ -122.379215489925031, 37.710148566984365 ], [ -122.379199589806944, 37.710135086060731 ], [ -122.379181961577132, 37.710121632706517 ], [ -122.379164350706091, 37.710108865803193 ], [ -122.379145029076398, 37.710096812921883 ], [ -122.379125716135945, 37.710085103538738 ], [ -122.379106411517995, 37.710073736835547 ], [ -122.379081871200697, 37.710060393742431 ], [ -122.379067829377789, 37.710052033632635 ], [ -122.379053770213616, 37.710042987342149 ], [ -122.37904143915452, 37.710033912931294 ], [ -122.379027362638922, 37.710024179909425 ], [ -122.379015013896463, 37.710014419322256 ], [ -122.379004376612457, 37.710003944700169 ], [ -122.378992010871215, 37.709993497651439 ], [ -122.378981364572482, 37.709982679805925 ], [ -122.378970709601532, 37.709971518732665 ], [ -122.378961774072408, 37.709959986863232 ], [ -122.378943885326493, 37.709936236674181 ], [ -122.378934932808065, 37.709924018618082 ], [ -122.378927716720895, 37.709912115676609 ], [ -122.378920448592652, 37.709898153648354 ], [ -122.378914899558595, 37.709883820830655 ], [ -122.378911070654652, 37.709869117207219 ], [ -122.378908969518022, 37.709854386021547 ], [ -122.378906859361621, 37.709839311614516 ], [ -122.37890825816865, 37.709826241422213 ], [ -122.378906182713109, 37.709812539922396 ], [ -122.378898593625834, 37.709785878500057 ], [ -122.37889311469489, 37.709774291484649 ], [ -122.378882494466538, 37.709764503310346 ], [ -122.378852995161623, 37.709760166773435 ], [ -122.378837381455881, 37.709758012285448 ], [ -122.378821663310447, 37.709751739078932 ], [ -122.378811043440322, 37.709741950892628 ], [ -122.378800232043204, 37.709724611725996 ], [ -122.378791192829524, 37.709708961390213 ], [ -122.378764047778134, 37.709660979621674 ], [ -122.378756718985287, 37.709644614994865 ], [ -122.378747662435089, 37.709628277927287 ], [ -122.378733004866319, 37.709595548670947 ], [ -122.378727395179027, 37.709578813530399 ], [ -122.378716350309503, 37.709552206945055 ], [ -122.378707440892299, 37.709541704736111 ], [ -122.378700242233577, 37.709530488508285 ], [ -122.378694754332813, 37.709518558261863 ], [ -122.378690976843657, 37.709505914002577 ], [ -122.378687217401875, 37.709493956460406 ], [ -122.378676596888084, 37.709484167998021 ], [ -122.378662607269405, 37.709477867474909 ], [ -122.378646941924686, 37.709473653320337 ], [ -122.378632917608854, 37.70946597961165 ], [ -122.378620586358139, 37.709456905436006 ], [ -122.37861166863793, 37.709446059987314 ], [ -122.378602715880561, 37.709433841635963 ], [ -122.378598947091831, 37.709421540874992 ], [ -122.378593433533567, 37.709408580662952 ], [ -122.378584489118467, 37.709396705817099 ], [ -122.378573843310107, 37.709385887928249 ], [ -122.378559775644788, 37.709376497801813 ], [ -122.378545751356285, 37.709368824082631 ], [ -122.378531770436666, 37.709362866496143 ], [ -122.37851595734179, 37.709352817747309 ], [ -122.378503583104418, 37.709342027419368 ], [ -122.378491191524603, 37.709330550636324 ], [ -122.378478773584177, 37.709318044176833 ], [ -122.378469795190981, 37.709304796129004 ], [ -122.3784625272081, 37.709290834071133 ], [ -122.378455250555135, 37.709276528785921 ], [ -122.378449692984333, 37.709261852718043 ], [ -122.378447583629097, 37.709246778290328 ], [ -122.37844546525632, 37.709231360641176 ], [ -122.378445040296995, 37.709214542798215 ], [ -122.378446447493673, 37.70920181556793 ], [ -122.378445805707855, 37.709176416778014 ], [ -122.378447212565007, 37.70916368982774 ], [ -122.378446882999313, 37.709150647205846 ], [ -122.378444834357168, 37.709137975366076 ], [ -122.378444192579394, 37.709112576850501 ], [ -122.378433947648276, 37.709049217403461 ], [ -122.378430178900032, 37.709036916361775 ], [ -122.378428130263899, 37.709024244521487 ], [ -122.378424361863509, 37.709011943474067 ], [ -122.378420584791698, 37.708999299199597 ], [ -122.378413047997185, 37.708974697103997 ], [ -122.378407551172273, 37.708962423896338 ], [ -122.378403791789637, 37.708950465794935 ], [ -122.37839829531363, 37.708938192581272 ], [ -122.37839280715248, 37.708926262050589 ], [ -122.378381883920852, 37.708904460882493 ], [ -122.37837105540082, 37.708886435220357 ], [ -122.37835849948857, 37.708868437105671 ], [ -122.378344223820761, 37.708850809781346 ], [ -122.378331693592017, 37.708833841349971 ], [ -122.378315707193991, 37.708816928035041 ], [ -122.378301466234504, 37.708800673613098 ], [ -122.378285505520822, 37.708784789980257 ], [ -122.378262511753192, 37.708764211389848 ], [ -122.378217043865007, 37.708743647822331 ], [ -122.378194318256277, 37.708733709264415 ], [ -122.378169882609328, 37.708724484976287 ], [ -122.378147174694149, 37.708715232583032 ], [ -122.378108766623569, 37.708700393880235 ], [ -122.378089549231376, 37.708692459277344 ], [ -122.378072043283993, 37.708683810925692 ], [ -122.378056239066638, 37.708674105341039 ], [ -122.378040425836915, 37.708664056532776 ], [ -122.378029762871009, 37.708652552139604 ], [ -122.378012273597136, 37.70864459051851 ], [ -122.377996469734569, 37.708634884645676 ], [ -122.37798069155609, 37.708626209006241 ], [ -122.377964922044868, 37.708617876317049 ], [ -122.377947441795172, 37.708610257633161 ], [ -122.377929987553088, 37.708603668352943 ], [ -122.377912541998256, 37.708597422846282 ], [ -122.3778951224499, 37.708592206743326 ], [ -122.377875983484813, 37.708587361142648 ], [ -122.37785687054604, 37.708583545768889 ], [ -122.377837783259466, 37.708580759529298 ], [ -122.377818705342307, 37.708578316777135 ], [ -122.377799653089951, 37.708576903708312 ], [ -122.37778062684724, 37.708576520317315 ], [ -122.377751275466451, 37.708578018636814 ], [ -122.37773407231694, 37.708581382915298 ], [ -122.377718632623825, 37.708586092812681 ], [ -122.377701481846131, 37.708591516991923 ], [ -122.377687821894156, 37.70859825842814 ], [ -122.377674179284952, 37.708605686591305 ], [ -122.377657141190483, 37.70861557244023 ], [ -122.377638365993562, 37.708625142614181 ], [ -122.377621302228775, 37.708633998771425 ], [ -122.37760422910678, 37.708642511984849 ], [ -122.377585411236822, 37.708650365729795 ], [ -122.377547740133352, 37.708664700862904 ], [ -122.377527150486301, 37.708670866291307 ], [ -122.377508279906351, 37.708676660947582 ], [ -122.377487664247838, 37.708681796688104 ], [ -122.377468768348663, 37.708686561646054 ], [ -122.377448126680292, 37.708690667698683 ], [ -122.377432642914897, 37.708693661434552 ], [ -122.377360540414671, 37.708713695820649 ], [ -122.377290182950702, 37.708734389078231 ], [ -122.37721985977025, 37.708756455207251 ], [ -122.377122130511736, 37.708788572304698 ], [ -122.377099960038464, 37.708800600058829 ], [ -122.377076061124569, 37.708812655354983 ], [ -122.377053899648615, 37.708825026321882 ], [ -122.377031746485883, 37.70883774051714 ], [ -122.376984053287501, 37.708865969789912 ], [ -122.376966919370915, 37.708872080046966 ], [ -122.376949742820514, 37.708876474429971 ], [ -122.37693425933503, 37.708879467820125 ], [ -122.376896466671624, 37.708888997566206 ], [ -122.376879298426118, 37.708893734896868 ], [ -122.376863901249948, 37.70890016082808 ], [ -122.376850267175342, 37.708907932397054 ], [ -122.376836667745323, 37.708917076323402 ], [ -122.376824822757797, 37.708927222935884 ], [ -122.376814748831492, 37.70893905787635 ], [ -122.376802877136896, 37.70894817426737 ], [ -122.376791014809598, 37.708957634422354 ], [ -122.376755452394264, 37.708987043484797 ], [ -122.376745335469863, 37.7089971622786 ], [ -122.376733490104598, 37.709007308612669 ], [ -122.376716755060258, 37.709029207270859 ], [ -122.376711908706653, 37.709042675731048 ], [ -122.376710535868128, 37.709056775574453 ], [ -122.37670739161139, 37.709069186817985 ], [ -122.37670251024899, 37.709081282375145 ], [ -122.376694138728411, 37.709092060083194 ], [ -122.376684004106508, 37.709101492422995 ], [ -122.376670361304676, 37.709108920469312 ], [ -122.376656744500607, 37.709117378469699 ], [ -122.376650118041127, 37.709128814824965 ], [ -122.376645245682482, 37.709141253875728 ], [ -122.376642127052065, 37.709154694529374 ], [ -122.376632417316515, 37.709180944983316 ], [ -122.376619233705384, 37.709206564055854 ], [ -122.376610896477217, 37.709218714945962 ], [ -122.376602550229492, 37.709230522339361 ], [ -122.376592476565378, 37.709242356980148 ], [ -122.376582384885396, 37.709253505451606 ], [ -122.376570661100516, 37.709268456941743 ], [ -122.376557330163322, 37.709288241147618 ], [ -122.376542262116743, 37.709307709937875 ], [ -122.376527177411774, 37.709326491711906 ], [ -122.376510355603088, 37.709344958344019 ], [ -122.37649688600834, 37.709359250635856 ], [ -122.376465576896948, 37.709420181699592 ], [ -122.37643425907072, 37.709480769527424 ], [ -122.376389592497333, 37.709560455358435 ], [ -122.376388193936847, 37.709573525235768 ], [ -122.376391962028805, 37.709585826347244 ], [ -122.376399160344661, 37.709597042716048 ], [ -122.376402928439646, 37.70960934382714 ], [ -122.376401512215111, 37.709621727530589 ], [ -122.376396631112286, 37.709633823068486 ], [ -122.376388241812876, 37.709643914305353 ], [ -122.376374607552179, 37.709651685818365 ], [ -122.376360903976007, 37.709656711239063 ], [ -122.376340270633293, 37.709661160049372 ], [ -122.376319628632046, 37.709665265903617 ], [ -122.376300706073636, 37.70966900099792 ], [ -122.376281774504847, 37.709672392867645 ], [ -122.376261106515926, 37.709675469305139 ], [ -122.376242166965341, 37.709678517655895 ], [ -122.376221481647946, 37.709680907632375 ], [ -122.376202524423789, 37.709683269528199 ], [ -122.376181830441382, 37.709685316270686 ], [ -122.376162855890229, 37.709686991706079 ], [ -122.376142153236586, 37.70968869493997 ], [ -122.37612144191985, 37.709690054943209 ], [ -122.376102441041382, 37.709690700967826 ], [ -122.376060983764248, 37.70969204832312 ], [ -122.376041966245552, 37.709692007598299 ], [ -122.376021220279497, 37.709691994675758 ], [ -122.375997000772998, 37.709691350345274 ], [ -122.375979685047099, 37.709690252959057 ], [ -122.375962360653403, 37.709688812068713 ], [ -122.375946764362084, 37.709687343377091 ], [ -122.375929430969819, 37.709685559534897 ], [ -122.375913817710057, 37.709683404653902 ], [ -122.375896475997124, 37.709681277299751 ], [ -122.375880853380082, 37.709678778923745 ], [ -122.375863494692936, 37.709675965105127 ], [ -122.375830496078862, 37.709669966721727 ], [ -122.375814856497584, 37.709666782151935 ], [ -122.375799199596415, 37.709662911125946 ], [ -122.375781814588834, 37.709659067619612 ], [ -122.375766157697925, 37.7096551968638 ], [ -122.375750492134401, 37.709650982329691 ], [ -122.37571914370605, 37.709641867350243 ], [ -122.37570345217442, 37.709636623403227 ], [ -122.375687769305102, 37.709631722681216 ], [ -122.375672068772147, 37.709626135508472 ], [ -122.375626688017107, 37.709609003209117 ], [ -122.375612698633404, 37.70960270232392 ], [ -122.375586491256968, 37.709591788341328 ], [ -122.375574203661955, 37.709584430256932 ], [ -122.375561908094213, 37.709576728658583 ], [ -122.375549603516987, 37.7095686835628 ], [ -122.375539018050162, 37.709560268000558 ], [ -122.375526696511997, 37.709551536717242 ], [ -122.375505491645058, 37.709533332668286 ], [ -122.375494871897089, 37.709523544188201 ], [ -122.375485980256698, 37.709513728189755 ], [ -122.375468179326063, 37.709493410016719 ], [ -122.375457507973294, 37.709481561890541 ], [ -122.375445047568775, 37.709467338970569 ], [ -122.375432604141196, 37.709453802508946 ], [ -122.37541844161953, 37.70944063678396 ], [ -122.375402568663233, 37.709428185022126 ], [ -122.375386712684005, 37.709416419717819 ], [ -122.375370874027013, 37.709405340865558 ], [ -122.375353324589767, 37.709394975980821 ], [ -122.375334064026845, 37.709385325068311 ], [ -122.3753165495785, 37.709376333080996 ], [ -122.375297332662143, 37.709368398292526 ], [ -122.375276404964978, 37.709361177469411 ], [ -122.37525895944836, 37.709354931295927 ], [ -122.375243233032052, 37.709348314384421 ], [ -122.375227498651867, 37.709341354232684 ], [ -122.375196011900385, 37.709326747754233 ], [ -122.375180259522494, 37.709319101152943 ], [ -122.375166235593625, 37.709311427031338 ], [ -122.375150475248759, 37.709303436913331 ], [ -122.375122392776206, 37.709286715752803 ], [ -122.375108342887259, 37.709278011942899 ], [ -122.375092564902388, 37.709269335642915 ], [ -122.375080234468939, 37.709260261365458 ], [ -122.375066167268656, 37.709250870821613 ], [ -122.375046820209405, 37.709237787590567 ], [ -122.374989178668883, 37.709214326304803 ], [ -122.374933247603437, 37.709190151032686 ], [ -122.374831814752426, 37.709144037952456 ], [ -122.374807448289985, 37.709137558790196 ], [ -122.374784792602327, 37.709130365112337 ], [ -122.374762119621366, 37.709122485524915 ], [ -122.374739428974408, 37.709113918935145 ], [ -122.374716721719778, 37.709104666150246 ], [ -122.374694005469692, 37.70909507013927 ], [ -122.374673000016784, 37.709084760438706 ], [ -122.374651977245378, 37.709073763730864 ], [ -122.374630937176775, 37.709062080839466 ], [ -122.374611616554063, 37.709050027212591 ], [ -122.374592286937002, 37.709037630360818 ], [ -122.374572932059905, 37.709024204087896 ], [ -122.37455530492376, 37.709010749764424 ], [ -122.374537660498376, 37.708996609533031 ], [ -122.374519998756611, 37.708981782295425 ], [ -122.374504056473583, 37.708966584874155 ], [ -122.37448810553569, 37.708951043948915 ], [ -122.374473874034791, 37.708935132017182 ], [ -122.374445393756574, 37.708902622243208 ], [ -122.37441087248213, 37.708836215748391 ], [ -122.374376333954515, 37.708769122513743 ], [ -122.374372557576578, 37.708756477834406 ], [ -122.374371908539288, 37.708730736067942 ], [ -122.374373316424055, 37.708718008885349 ], [ -122.374376452056026, 37.708705254481714 ], [ -122.374381325118193, 37.708692815793029 ], [ -122.374386206487088, 37.708680720336844 ], [ -122.374392824593912, 37.708668940606316 ], [ -122.374401188091994, 37.708657819828403 ], [ -122.374411296980753, 37.708647358002679 ], [ -122.374421423174923, 37.708637582630523 ], [ -122.374446851154033, 37.708617606150035 ], [ -122.374463828756802, 37.708605318455056 ], [ -122.374482543776409, 37.708593346196544 ], [ -122.374499530354001, 37.708581401168907 ], [ -122.374518253325192, 37.708569772142909 ], [ -122.374535257553518, 37.708558513833601 ], [ -122.374562508759965, 37.708542285323816 ], [ -122.374586545781455, 37.70853572218347 ], [ -122.374610592144961, 37.708529502254436 ], [ -122.374634646468323, 37.708523625558676 ], [ -122.374658710134312, 37.7085180920742 ], [ -122.374682781760811, 37.708512901823013 ], [ -122.374706862737568, 37.708508055057699 ], [ -122.374732662777703, 37.708502837010279 ], [ -122.374853593864671, 37.708499538871287 ], [ -122.374919053196592, 37.70849025581817 ], [ -122.374984547145971, 37.708482345911996 ], [ -122.375051786483155, 37.708475095187325 ], [ -122.375117314688779, 37.708468558121517 ], [ -122.375182869540055, 37.708463050415169 ], [ -122.375307152797603, 37.708455577784022 ], [ -122.375370892619628, 37.708446665496233 ], [ -122.375436334529738, 37.708436695975841 ], [ -122.375501750445025, 37.708425696737649 ], [ -122.375594677055204, 37.708408765528524 ], [ -122.375613633621171, 37.708406403460977 ], [ -122.375651599745083, 37.708403738663016 ], [ -122.375689617134853, 37.708403133226682 ], [ -122.375705187517212, 37.708403572265745 ], [ -122.375746670063037, 37.708403254716799 ], [ -122.375789863380334, 37.70840222372631 ], [ -122.375831311282568, 37.708400533239043 ], [ -122.375872750535976, 37.708398500059232 ], [ -122.375914172451246, 37.708395779861441 ], [ -122.375955577054981, 37.708392373743997 ], [ -122.376026281020401, 37.708385410092347 ], [ -122.376043553148961, 37.708384791885535 ], [ -122.376081570871463, 37.708384186317168 ], [ -122.376098868977905, 37.708384597508989 ], [ -122.376117894810292, 37.708384980902565 ], [ -122.376136930009963, 37.708385708058287 ], [ -122.376154236772265, 37.708386462194504 ], [ -122.376192341117545, 37.708389288861419 ], [ -122.376221804728033, 37.708392253162685 ], [ -122.376289356067019, 37.708397357901482 ], [ -122.376356881066656, 37.708401432376654 ], [ -122.376424388753932, 37.708404820633483 ], [ -122.37649187011074, 37.708407179175936 ], [ -122.376561053904155, 37.708408480459845 ], [ -122.376628483974059, 37.708408779550602 ], [ -122.376747729724002, 37.70840722314199 ], [ -122.376763213450403, 37.708404229221443 ], [ -122.376778714166832, 37.708401922033076 ], [ -122.376794232219382, 37.708400301571331 ], [ -122.376809767242023, 37.708399367018018 ], [ -122.376832232606262, 37.708399009032 ], [ -122.376847802648896, 37.708399447925551 ], [ -122.376863390008594, 37.708400572721949 ], [ -122.376878994361022, 37.708402384250476 ], [ -122.376901555046999, 37.708405801748796 ], [ -122.376925852133638, 37.708409534936841 ], [ -122.376951859969793, 37.708412554126937 ], [ -122.376977850476194, 37.708414886857213 ], [ -122.37700382331353, 37.708416533407728 ], [ -122.377029779497036, 37.708417492938302 ], [ -122.377055709343722, 37.708417423062144 ], [ -122.377081630523975, 37.70841700995323 ], [ -122.377110981861648, 37.708415512075135 ], [ -122.377140437198108, 37.708418132914076 ], [ -122.377199313216423, 37.708422001936356 ], [ -122.377228733890291, 37.708423249845112 ], [ -122.377258145890991, 37.708424154244938 ], [ -122.377289277310766, 37.70842468814115 ], [ -122.37734804933055, 37.708424438364865 ], [ -122.377379146073082, 37.708423599054704 ], [ -122.37742059395805, 37.708421908282823 ], [ -122.377622787821593, 37.70841902848273 ], [ -122.377643542101708, 37.708419384350222 ], [ -122.377662585641644, 37.708420454217361 ], [ -122.377704146218846, 37.708423225296556 ], [ -122.37772493517798, 37.708424954057655 ], [ -122.37774400438326, 37.708427053598058 ], [ -122.377768215169155, 37.708427354337005 ], [ -122.378000106843373, 37.708436705199382 ], [ -122.37830619390914, 37.708440408092009 ], [ -122.37833376512657, 37.708436878380915 ], [ -122.378363081750692, 37.708434007008506 ], [ -122.378390687645833, 37.708431849917247 ], [ -122.378420038963, 37.708430351712977 ], [ -122.378463249251951, 37.708430005927042 ], [ -122.378492652956893, 37.708430567335327 ], [ -122.378520354243449, 37.708432185435299 ], [ -122.378549800963029, 37.708434462694896 ], [ -122.37857753695242, 37.708437453963704 ], [ -122.378607018369593, 37.70844110411668 ], [ -122.378634797731564, 37.7084458115066 ], [ -122.378662594444492, 37.708451205343785 ], [ -122.378692136242478, 37.70845725806938 ], [ -122.378711232196324, 37.708460387122912 ], [ -122.378730310465116, 37.708462829999633 ], [ -122.378768431943271, 37.708466342017964 ], [ -122.378787467182775, 37.708467068470803 ], [ -122.378808221481876, 37.708467424133083 ], [ -122.37882723903445, 37.708467464405793 ], [ -122.378846230556476, 37.708466474720126 ], [ -122.378866950150183, 37.708465457189874 ], [ -122.378885915308302, 37.708463438097219 ], [ -122.378904872467956, 37.708461075214444 ], [ -122.378923820612812, 37.708458369381802 ], [ -122.378949637703641, 37.708453837413678 ], [ -122.378975437088471, 37.708448618717021 ], [ -122.379001245829258, 37.708443742956021 ], [ -122.379028799657206, 37.708439526353885 ], [ -122.379054625403654, 37.708435337315045 ], [ -122.379080468498444, 37.708431834724301 ], [ -122.379108048344705, 37.708428647784281 ], [ -122.379133899764923, 37.708425488414207 ], [ -122.379161496965466, 37.708422988190016 ], [ -122.379201182372455, 37.708419951449862 ], [ -122.379266840650459, 37.708418560198723 ], [ -122.379358446131135, 37.708417785256238 ], [ -122.379379209096214, 37.708418484044785 ], [ -122.37939999809295, 37.708420212510255 ], [ -122.379420813122252, 37.708422970652627 ], [ -122.379439934791137, 37.708427129548738 ], [ -122.379460810565476, 37.708432290272043 ], [ -122.379479983944307, 37.708438507979139 ], [ -122.379497455985685, 37.70844578347802 ], [ -122.379516681782491, 37.708454060534727 ], [ -122.379532477472964, 37.708463422971533 ], [ -122.379550018242554, 37.708473443739265 ], [ -122.379562332087886, 37.708481831365319 ], [ -122.379578066691991, 37.708488790938986 ], [ -122.379593775956252, 37.708494720818962 ], [ -122.37961118692283, 37.708499593443946 ], [ -122.379628563179082, 37.708503093158996 ], [ -122.379654614203474, 37.708507827892014 ], [ -122.379678955199253, 37.708513276640822 ], [ -122.379705041297058, 37.708519384539102 ], [ -122.379729416669221, 37.708526206190314 ], [ -122.379762215471303, 37.708524308990917 ], [ -122.379786946339379, 37.708545202935731 ], [ -122.379809654745344, 37.70855445473304 ], [ -122.379834099571553, 37.70856402217715 ], [ -122.379856842014789, 37.70857464688364 ], [ -122.379891828930511, 37.70859091336267 ], [ -122.379907538241355, 37.708596843200731 ], [ -122.37992494057292, 37.708601372552437 ], [ -122.379945781718234, 37.708605160557006 ], [ -122.379964929495586, 37.708610348773604 ], [ -122.379985822717444, 37.708616195857346 ], [ -122.380006741975436, 37.708623072343208 ], [ -122.380025941841694, 37.708630319910732 ], [ -122.380045167406379, 37.708638597161041 ], [ -122.380062691631167, 37.708647931936689 ], [ -122.380080223835478, 37.708657609398351 ], [ -122.380097782783579, 37.708668316801365 ], [ -122.380111807100121, 37.70867599033663 ], [ -122.380127559503322, 37.708683636284732 ], [ -122.380141575145288, 37.708690966589629 ], [ -122.380173045244604, 37.708704885568586 ], [ -122.380187043533539, 37.708711529414458 ], [ -122.380202769909488, 37.708718145672115 ], [ -122.380218478926409, 37.708724075474095 ], [ -122.380234196281208, 37.708730348506272 ], [ -122.380249896974746, 37.708735935346311 ], [ -122.380267325396161, 37.708741494053129 ], [ -122.380283025396338, 37.708747080625194 ], [ -122.380298717408834, 37.708752323957377 ], [ -122.380316128481965, 37.708757196477961 ], [ -122.380331802444843, 37.708761753363198 ], [ -122.380349205186434, 37.708766282646621 ], [ -122.380364870817246, 37.708770496295159 ], [ -122.380399640892449, 37.708778181953583 ], [ -122.380415288819378, 37.708781709147395 ], [ -122.380450024177094, 37.708788021883869 ], [ -122.380467383521719, 37.708790835015982 ], [ -122.380502084159204, 37.708795774830023 ], [ -122.380519425451766, 37.708797901511986 ], [ -122.380554091366136, 37.708801468403678 ], [ -122.380571407305098, 37.708802565386677 ], [ -122.38058873123596, 37.708804005604904 ], [ -122.38062334505976, 37.708805513115699 ], [ -122.380640643641911, 37.708805923909587 ], [ -122.380657932836172, 37.708805990936078 ], [ -122.380699406909102, 37.70880532869085 ], [ -122.380744406973307, 37.708807357325021 ], [ -122.38079115213398, 37.708810044256637 ], [ -122.380837914326918, 37.708813417903293 ], [ -122.38088296649677, 37.70881750557038 ], [ -122.380929755096815, 37.708821908855221 ], [ -122.380974841668888, 37.708827369399565 ], [ -122.381019936932205, 37.708833173153394 ], [ -122.38105859232931, 37.708838506457845 ], [ -122.381066777313606, 37.708839635749648 ], [ -122.381111907677337, 37.708846812369579 ], [ -122.381195264075259, 37.708861619200029 ], [ -122.381216079294731, 37.708864377024973 ], [ -122.381238613917688, 37.708866764017813 ], [ -122.381259411768738, 37.708868835381693 ], [ -122.381280183563462, 37.708869877061808 ], [ -122.381300946672837, 37.708870575511568 ], [ -122.381323420152597, 37.708870559906792 ], [ -122.381342429462208, 37.708870256266636 ], [ -122.381404605870372, 37.708867889625047 ], [ -122.381505512521713, 37.708893060219943 ], [ -122.381586019961446, 37.708863618143027 ], [ -122.381762346029831, 37.708863204692321 ], [ -122.381781407118979, 37.708864960346808 ], [ -122.381802213679833, 37.708867375116121 ], [ -122.381821317860044, 37.708870846628407 ], [ -122.381842167859006, 37.708874977249344 ], [ -122.381859579414566, 37.708879849810799 ], [ -122.381875262525128, 37.708884749437118 ], [ -122.381890971365024, 37.708890679021408 ], [ -122.381904969842452, 37.708897322662949 ], [ -122.38191898569994, 37.708904652756104 ], [ -122.381933027626729, 37.708913012527532 ], [ -122.381945359191491, 37.708922086357219 ], [ -122.381957699102628, 37.708931503417737 ], [ -122.381968327967215, 37.70894163482285 ], [ -122.381980685608269, 37.708951738328693 ], [ -122.381993034210964, 37.708961498337537 ], [ -122.382005374141627, 37.708970915667607 ], [ -122.382017705026641, 37.70897998922608 ], [ -122.382045788934036, 37.708996708743506 ], [ -122.382059822203018, 37.709004725273097 ], [ -122.382073838096019, 37.709012055347692 ], [ -122.382089582428222, 37.709019357800898 ], [ -122.382105309038593, 37.709025973804216 ], [ -122.382136727169851, 37.709037833178158 ], [ -122.382152419374435, 37.709043076263157 ], [ -122.382168102538699, 37.709047975850353 ], [ -122.382185504767932, 37.709052504873313 ], [ -122.382201170908758, 37.709056718271931 ], [ -122.382218547417111, 37.709060217604623 ], [ -122.382234178116121, 37.709063058378014 ], [ -122.382251537592452, 37.70906587124707 ], [ -122.382268878998048, 37.70906799767139 ], [ -122.382286203707906, 37.709069437354287 ], [ -122.382303519050552, 37.709070534368244 ], [ -122.382320826380379, 37.709071287592842 ], [ -122.382341580865045, 37.709071642632544 ], [ -122.382365730359041, 37.709069540125881 ], [ -122.382388178510126, 37.709068494352529 ], [ -122.382412363104777, 37.709067764462617 ], [ -122.38243483664391, 37.709067748645822 ], [ -122.382459065046888, 37.709068735148399 ], [ -122.382481573697518, 37.709070092223556 ], [ -122.382505827816885, 37.709072107852691 ], [ -122.382528371242771, 37.709074838099873 ], [ -122.38255092334812, 37.709077911020174 ], [ -122.382573501192169, 37.709082013896044 ], [ -122.382596088421835, 37.709086459983112 ], [ -122.382618692692688, 37.709091592524558 ], [ -122.382641314350906, 37.70909741151484 ], [ -122.382662225311549, 37.709103944851186 ], [ -122.382677899491284, 37.709108501423991 ], [ -122.382700504120081, 37.709113633944185 ], [ -122.382724827799791, 37.709118395340859 ], [ -122.382747414358349, 37.709122841409943 ], [ -122.382771729703904, 37.70912725983942 ], [ -122.382794299234817, 37.7091310197154 ], [ -122.382818588161342, 37.709134408460983 ], [ -122.382842868390057, 37.709137453700393 ], [ -122.38286542018875, 37.709140526840578 ], [ -122.382889683387347, 37.709142885886266 ], [ -122.382938191710934, 37.709146917520584 ], [ -122.38296070039398, 37.709148274504173 ], [ -122.382986665264852, 37.70914957622869 ], [ -122.383007411087661, 37.709149588199111 ], [ -122.383029884990066, 37.709149571988654 ], [ -122.383050648193986, 37.709150270129996 ], [ -122.383073139146191, 37.709150940644498 ], [ -122.383093919739352, 37.709152325231301 ], [ -122.383116428772482, 37.709153682179597 ], [ -122.383158007351824, 37.709157137787358 ], [ -122.383180542125842, 37.709159524408562 ], [ -122.38322217288038, 37.709165039352904 ], [ -122.383244725048755, 37.709168112414922 ], [ -122.383265557820081, 37.709171556330674 ], [ -122.38330031099926, 37.709178554953908 ], [ -122.383319389589161, 37.709180996537953 ], [ -122.383354090598218, 37.709185935511563 ], [ -122.383373151814638, 37.709187691182962 ], [ -122.383407818040695, 37.709191256960054 ], [ -122.383426861522594, 37.709192326175256 ], [ -122.38344417758799, 37.709193422461318 ], [ -122.383463212713679, 37.709194148164016 ], [ -122.383497809392168, 37.709194968651609 ], [ -122.383516826773814, 37.709195007623549 ], [ -122.38353410806306, 37.709194731264901 ], [ -122.38355310841149, 37.709194084321595 ], [ -122.383570380651364, 37.709193464462061 ], [ -122.383603179656703, 37.709191566467979 ], [ -122.383625618791854, 37.709190177512419 ], [ -122.383660189372748, 37.709189967998213 ], [ -122.383684400085329, 37.709190267526687 ], [ -122.383706900098034, 37.709191281141187 ], [ -122.383729426202848, 37.709193324430878 ], [ -122.383751960667553, 37.709195711222868 ], [ -122.383774513205751, 37.709198783903318 ], [ -122.383797074104677, 37.709202200086082 ], [ -122.383819661098414, 37.709206645943979 ], [ -122.383842256453889, 37.709211435304148 ], [ -122.383863141444834, 37.709216938198551 ], [ -122.383887517772791, 37.709223758983043 ], [ -122.383918823190285, 37.709231155662387 ], [ -122.383950120607025, 37.709238209095858 ], [ -122.384012679973182, 37.709250943042996 ], [ -122.384043941921391, 37.709256623556676 ], [ -122.38407519587382, 37.709261961099109 ], [ -122.384137668283756, 37.709271262440524 ], [ -122.384168886754026, 37.709275226788684 ], [ -122.384201816616198, 37.709278477019389 ], [ -122.384233018039538, 37.70928175489211 ], [ -122.384265929816848, 37.709284318663009 ], [ -122.384297105498632, 37.709286567108421 ], [ -122.384329991519081, 37.709288100901972 ], [ -122.384361149451607, 37.709289662608477 ], [ -122.384394018088159, 37.7092905104804 ], [ -122.384452807809836, 37.709290943068623 ], [ -122.384475299515429, 37.709291613578934 ], [ -122.384496080167082, 37.709292997643757 ], [ -122.384516886928907, 37.709295411658836 ], [ -122.384534272309892, 37.7092992541508 ], [ -122.384549981442476, 37.709305183105528 ], [ -122.384600688269401, 37.709327720626654 ], [ -122.384651368684075, 37.709349228726715 ], [ -122.384702031710773, 37.709370049802885 ], [ -122.384754405467419, 37.709390157025624 ], [ -122.384806761855017, 37.709409578046774 ], [ -122.384859100858179, 37.709428312317186 ], [ -122.384913150236486, 37.709446332461404 ], [ -122.384967174216499, 37.709463322615903 ], [ -122.385028162503517, 37.709482261754836 ], [ -122.385061327139894, 37.709494778863174 ], [ -122.385077071522119, 37.709502080922022 ], [ -122.385092833321409, 37.709510069706113 ], [ -122.385106884415976, 37.70951877205021 ], [ -122.385135021443745, 37.709537550188017 ], [ -122.38516131723388, 37.709551894035449 ], [ -122.385185875889178, 37.70956592259045 ], [ -122.385212163333733, 37.709579922920014 ], [ -122.385240161144154, 37.709593209410606 ], [ -122.385266422163951, 37.7096061806036 ], [ -122.385294402578083, 37.709618780353921 ], [ -122.38532064620027, 37.709631064807468 ], [ -122.385376554860102, 37.709654205466649 ], [ -122.385427183484424, 37.709673653599111 ], [ -122.385474486504066, 37.709698305432774 ], [ -122.385520087565695, 37.709724014590961 ], [ -122.385565697364569, 37.70975006695771 ], [ -122.385611324607254, 37.709776805759368 ], [ -122.385656969295042, 37.709804230995893 ], [ -122.385720426192663, 37.709852316346286 ], [ -122.38574142470155, 37.709862281398394 ], [ -122.38576260604151, 37.709879453650188 ], [ -122.385783769984741, 37.709895939720084 ], [ -122.385806662054534, 37.709912398391943 ], [ -122.385829545420535, 37.709928513558424 ], [ -122.385852419736807, 37.709944285225092 ], [ -122.385908633553967, 37.709979438551144 ], [ -122.385924326223261, 37.709984681132887 ], [ -122.385940009841704, 37.709989580491779 ], [ -122.385955658638977, 37.709993107217954 ], [ -122.385971289669953, 37.709995947220456 ], [ -122.38598863209009, 37.709998073085792 ], [ -122.386004211215408, 37.709998853446052 ], [ -122.386023237864435, 37.70999923550869 ], [ -122.386043957793987, 37.709998216990876 ], [ -122.386064686430998, 37.709997541695692 ], [ -122.386085397651371, 37.709996179944298 ], [ -122.386126802680138, 37.709992770252597 ], [ -122.386147487765797, 37.709990378536858 ], [ -122.386169900968881, 37.70998795941798 ], [ -122.386190577350149, 37.709985224742994 ], [ -122.386231912690491, 37.709979068929542 ], [ -122.386250834828786, 37.709975332240148 ], [ -122.386271485083554, 37.709971568146692 ], [ -122.386292126613185, 37.709967460274193 ], [ -122.386312759445275, 37.709963009720973 ], [ -122.386333383551687, 37.709958215388703 ], [ -122.386352270849088, 37.709953106052509 ], [ -122.386372886247685, 37.709947968761632 ], [ -122.386393492926942, 37.709942487966288 ], [ -122.386412353741648, 37.709936348947188 ], [ -122.386432951711981, 37.709930525193258 ], [ -122.386451804494854, 37.709924042655906 ], [ -122.386489491932494, 37.709910390856137 ], [ -122.386508326593912, 37.709903221868281 ], [ -122.386545979522182, 37.709888197414408 ], [ -122.386564797097478, 37.709880341959447 ], [ -122.386583605612742, 37.709872143280762 ], [ -122.386602406104558, 37.709863601361754 ], [ -122.386624601143666, 37.709852601505517 ], [ -122.386648585957673, 37.709843976811243 ], [ -122.386694774483402, 37.709824694919647 ], [ -122.386716987264919, 37.709814381492933 ], [ -122.386739173906818, 37.709803038383235 ], [ -122.386759623723719, 37.709791379725885 ], [ -122.386781783879641, 37.709779007209534 ], [ -122.386809006718778, 37.709761745916552 ], [ -122.386819140491724, 37.709752312701141 ], [ -122.386825765435574, 37.70974087550043 ], [ -122.386828898974457, 37.709728120767494 ], [ -122.386826848894813, 37.709715449349289 ], [ -122.386819640282908, 37.709703890391729 ], [ -122.386817598557442, 37.709691561655937 ], [ -122.386819004336886, 37.70967883460122 ], [ -122.386823901170089, 37.709667425084099 ], [ -122.386834025525516, 37.709657648652097 ], [ -122.386847676124134, 37.709650562655604 ], [ -122.386868282692944, 37.709645082051537 ], [ -122.386895766825091, 37.709638117800075 ], [ -122.386923224816215, 37.709630123863455 ], [ -122.386948937619863, 37.709621471147983 ], [ -122.386974623942265, 37.70961178902828 ], [ -122.387000301531728, 37.709601763127544 ], [ -122.387025961350744, 37.709591051048854 ], [ -122.387051595722909, 37.709579309549376 ], [ -122.387075492913056, 37.709567251961815 ], [ -122.387099363971075, 37.709554165239872 ], [ -122.38712149784719, 37.709540762431281 ], [ -122.387143614994557, 37.709526673704133 ], [ -122.387172522192103, 37.709507668506873 ], [ -122.387191252472988, 37.709496380689082 ], [ -122.38723213436316, 37.70947237676026 ], [ -122.387250838140105, 37.709460059259776 ], [ -122.387271261641757, 37.709447370834297 ], [ -122.387308635352881, 37.709421363170897 ], [ -122.38732731330154, 37.709408015699388 ], [ -122.387344254439029, 37.70939435296458 ], [ -122.387362914960519, 37.709380319584099 ], [ -122.387379847018508, 37.709366313348852 ], [ -122.387396771054185, 37.709351964148425 ], [ -122.387413685684905, 37.70933727200498 ], [ -122.387447498167859, 37.709307200423432 ], [ -122.387477837364472, 37.709276498309869 ], [ -122.387504772282938, 37.709247910664018 ], [ -122.387518335595743, 37.709237392327147 ], [ -122.387531890183013, 37.709226530487904 ], [ -122.387555525398113, 37.709204176295842 ], [ -122.387565597996186, 37.70919234043189 ], [ -122.387577389623033, 37.709180133651593 ], [ -122.387587444438822, 37.709167611338806 ], [ -122.387595770813661, 37.709155116725697 ], [ -122.387605817253487, 37.709142251179543 ], [ -122.387614126544804, 37.709129070381714 ], [ -122.387625726420353, 37.709109312619674 ], [ -122.38763581573356, 37.709098163213035 ], [ -122.387647651248827, 37.709087672276503 ], [ -122.387659495137399, 37.7090775248451 ], [ -122.387671356453438, 37.709068063864919 ], [ -122.387684954578489, 37.709058918688022 ], [ -122.387698570117223, 37.709050459412794 ], [ -122.387713905033536, 37.709041629487615 ], [ -122.387727520579759, 37.70903317075819 ], [ -122.387741127400233, 37.709024368526379 ], [ -122.387754716779028, 37.70901487956597 ], [ -122.38776828872976, 37.709004704426171 ], [ -122.387780123872801, 37.708994213756277 ], [ -122.387790213492849, 37.708983064330674 ], [ -122.387800294400918, 37.708971571952546 ], [ -122.387820421322658, 37.708947213465045 ], [ -122.387827011176498, 37.708934403301733 ], [ -122.387835268108802, 37.708919163130588 ], [ -122.387845322493249, 37.708906640526244 ], [ -122.387855368863313, 37.708893775232887 ], [ -122.387863686784897, 37.708880937093966 ], [ -122.387870259192908, 37.708867440475665 ], [ -122.387876822882276, 37.708853600630782 ], [ -122.387881684640561, 37.70884081843792 ], [ -122.387890037417037, 37.708829353201914 ], [ -122.387898407291956, 37.708818574972398 ], [ -122.387908532074746, 37.708808798161094 ], [ -122.387920428182127, 37.708800710060288 ], [ -122.387934078526868, 37.708793624211502 ], [ -122.387949491811682, 37.708787883291222 ], [ -122.387963124704001, 37.708780110437473 ], [ -122.387974994657682, 37.708770992927079 ], [ -122.387986838098541, 37.708760845193225 ], [ -122.38799691929168, 37.70874935279231 ], [ -122.388003535248131, 37.708737572297345 ], [ -122.388025477290896, 37.708716618335004 ], [ -122.388016549225114, 37.708705430376419 ], [ -122.388024919406419, 37.708694651857606 ], [ -122.388035061251031, 37.708685561767766 ], [ -122.388048711556735, 37.70867847563099 ], [ -122.388064142243053, 37.708673421147999 ], [ -122.388079642671812, 37.708671112747226 ], [ -122.388100414499817, 37.708672152950157 ], [ -122.388116071494025, 37.708676022621809 ], [ -122.388131781471785, 37.708681951088387 ], [ -122.388159762030639, 37.708694550434529 ], [ -122.388173769748903, 37.708701536557498 ], [ -122.388201802628828, 37.708716195250794 ], [ -122.388214108081286, 37.708724238756957 ], [ -122.388226422945536, 37.708732625476948 ], [ -122.388238746184868, 37.708741355427378 ], [ -122.388251078145075, 37.708750428602698 ], [ -122.388266944735889, 37.708762535402698 ], [ -122.388279294146272, 37.708772295301998 ], [ -122.388293362910787, 37.708781683719387 ], [ -122.38830914233246, 37.708790358251797 ], [ -122.388323176244768, 37.708798374310007 ], [ -122.388338920792876, 37.708805675659121 ], [ -122.388354647568491, 37.708812290833862 ], [ -122.388372085684821, 37.70881819183667 ], [ -122.388387786655741, 37.70882377732292 ], [ -122.388405189556963, 37.70882830542164 ], [ -122.388422575029637, 37.70883214734004 ], [ -122.388439943052433, 37.70883530225435 ], [ -122.388457293652749, 37.708837771262928 ], [ -122.388476354886436, 37.708839525559505 ], [ -122.388493670259848, 37.708840621388994 ], [ -122.388512688251666, 37.708840659817909 ], [ -122.38852998653293, 37.708841069184182 ], [ -122.388547319691853, 37.708842851452602 ], [ -122.388564687729385, 37.708846006623098 ], [ -122.388580362562081, 37.708850562405146 ], [ -122.388611781644997, 37.70886241977783 ], [ -122.38865901579085, 37.708884324521037 ], [ -122.38867304103168, 37.70889199703673 ], [ -122.388704565133736, 37.708907973092835 ], [ -122.388718607824089, 37.708916332055367 ], [ -122.38873438732395, 37.708925006530642 ], [ -122.388748438741189, 37.708933708715719 ], [ -122.388776559026368, 37.708951799533132 ], [ -122.388804696766371, 37.708970576796062 ], [ -122.388818774369312, 37.708980308925696 ], [ -122.38883113260205, 37.708990411718339 ], [ -122.38884521891903, 37.709000486521759 ], [ -122.388857576813109, 37.70901058931716 ], [ -122.388869944129638, 37.709021035600863 ], [ -122.388894695509904, 37.709042614078506 ], [ -122.388910640750538, 37.709057809551815 ], [ -122.388972423353252, 37.709107980227031 ], [ -122.389081727973931, 37.709191381909299 ], [ -122.389101024813158, 37.709202403484106 ], [ -122.389122041028727, 37.709213054112247 ], [ -122.389141320435243, 37.709223389228221 ], [ -122.389162319218002, 37.709233353396939 ], [ -122.389183309291042, 37.709242974610376 ], [ -122.389223526102853, 37.709260871022344 ], [ -122.389313124685856, 37.70931711930168 ], [ -122.389481987883741, 37.709431155180901 ], [ -122.389492653071912, 37.709442658255767 ], [ -122.389505019851313, 37.709453104208613 ], [ -122.389517378601511, 37.709463206922976 ], [ -122.38952971956148, 37.709472623189463 ], [ -122.389543753727182, 37.709480638826818 ], [ -122.389557892592236, 37.709492773449732 ], [ -122.389586187763769, 37.709517728318737 ], [ -122.389598615991517, 37.709530577112993 ], [ -122.389612772309832, 37.709543397632146 ], [ -122.389625208918304, 37.709556589380568 ], [ -122.389644750565139, 37.709577221189377 ], [ -122.389655398357277, 37.709588038071757 ], [ -122.389667747741427, 37.709597797829758 ], [ -122.389681790670352, 37.709606156676571 ], [ -122.389697518418998, 37.709612771385522 ], [ -122.389713219657295, 37.709618356694392 ], [ -122.389730605029726, 37.709622198150228 ], [ -122.389747947470156, 37.709624323462215 ], [ -122.389765245594901, 37.709624732652614 ], [ -122.389782500792251, 37.709623425973788 ], [ -122.389799720389789, 37.709620746124841 ], [ -122.389816888318393, 37.709616006631549 ], [ -122.389835749113217, 37.709609867058475 ], [ -122.389863163150096, 37.709600156306408 ], [ -122.389890559721536, 37.709589758821316 ], [ -122.389917938840725, 37.709578675152393 ], [ -122.389945300499932, 37.709566905025042 ], [ -122.389970907526418, 37.709554132948654 ], [ -122.389996506509206, 37.709541017629583 ], [ -122.390020350865882, 37.709526900637606 ], [ -122.39004417774683, 37.709512096639571 ], [ -122.390067995898818, 37.709496949685239 ], [ -122.390091787861351, 37.709480773048014 ], [ -122.390113842650052, 37.709464281192048 ], [ -122.390139232126714, 37.709442928142842 ], [ -122.390159716218918, 37.709432641798621 ], [ -122.390178454754334, 37.709421696731738 ], [ -122.3901989126541, 37.709410380702636 ], [ -122.39021589655448, 37.70939843369046 ], [ -122.390234600516706, 37.709386115979576 ], [ -122.390251558562568, 37.709373139004065 ], [ -122.39026850788207, 37.709359819074663 ], [ -122.390285439740609, 37.709345812690756 ], [ -122.390300643497767, 37.709331834039105 ], [ -122.390315821066409, 37.709316825707447 ], [ -122.390329270534636, 37.709301845108946 ], [ -122.390344421562602, 37.709285807101061 ], [ -122.390361327552213, 37.709270771022531 ], [ -122.39037995255471, 37.709255363985214 ], [ -122.39039175211181, 37.709243500154884 ], [ -122.390403604724284, 37.709233695668296 ], [ -122.390415483172134, 37.70922492086406 ], [ -122.390429115893767, 37.709217148000036 ], [ -122.390442766075893, 37.709210061861029 ], [ -122.390456442426085, 37.709204004849276 ], [ -122.390471873057805, 37.709198950051309 ], [ -122.390487338262247, 37.709195268435437 ], [ -122.390504549691016, 37.709192244971604 ], [ -122.39052006760221, 37.7091906224273 ], [ -122.390549453543258, 37.709190494110466 ], [ -122.390566778448914, 37.709191932850082 ], [ -122.390582401104382, 37.709194429009507 ], [ -122.390598058337744, 37.709198298350977 ], [ -122.390613742436898, 37.709203196808069 ], [ -122.390626048230899, 37.70921124006167 ], [ -122.390650826717163, 37.709233847842071 ], [ -122.390663202699358, 37.709244636894077 ], [ -122.390679017412822, 37.709254684012365 ], [ -122.390694814671889, 37.709264044676523 ], [ -122.390710585401109, 37.709272375666167 ], [ -122.39072806745979, 37.70927999244968 ], [ -122.390745513912535, 37.709286236337753 ], [ -122.39076120677656, 37.709291478275702 ], [ -122.390820887340325, 37.709326917004176 ], [ -122.390880550507589, 37.709361669524867 ], [ -122.390955975777842, 37.709404409471233 ], [ -122.390984166616704, 37.709425245293367 ], [ -122.391043969973325, 37.709465489065806 ], [ -122.391073854047875, 37.709484924766009 ], [ -122.39110372905418, 37.709504016963635 ], [ -122.391135324127831, 37.70952273789505 ], [ -122.391198478718835, 37.709558807388859 ], [ -122.391230038228016, 37.709576155676679 ], [ -122.391263317811934, 37.70959313297017 ], [ -122.391294851500007, 37.709609451557228 ], [ -122.391328104225451, 37.709625399165667 ], [ -122.391384067146049, 37.709650596329034 ], [ -122.391403364798364, 37.709661617794914 ], [ -122.39142438147357, 37.709672268011516 ], [ -122.391443670051999, 37.70968294597585 ], [ -122.391473405843797, 37.709696546184524 ], [ -122.391490739272712, 37.709698328019577 ], [ -122.391506239801757, 37.709696018893702 ], [ -122.39153878556094, 37.709684165139144 ], [ -122.391567892571629, 37.709673053334001 ], [ -122.391595262737894, 37.70966162604946 ], [ -122.391624352264017, 37.709649827778549 ], [ -122.391716621681155, 37.709607142187203 ], [ -122.39187696505121, 37.709454172098226 ], [ -122.392088496086032, 37.709274627293134 ], [ -122.392100330316836, 37.709264136195202 ], [ -122.392112147763783, 37.709252958633222 ], [ -122.392122219297448, 37.709241122385279 ], [ -122.392130554000019, 37.709228970672129 ], [ -122.3921406164459, 37.70921679120223 ], [ -122.392147205586284, 37.70920398107237 ], [ -122.392155514411016, 37.709190799399607 ], [ -122.392160357630971, 37.709177330310062 ], [ -122.392166946757442, 37.709164519904434 ], [ -122.392190188120423, 37.709126719606594 ], [ -122.392215174675471, 37.709089577998483 ], [ -122.392281983011671, 37.708997512609393 ], [ -122.392295589286405, 37.70898870985144 ], [ -122.392309213031425, 37.708980593543679 ], [ -122.39232284551727, 37.708972820734765 ], [ -122.392336495460057, 37.708965733826894 ], [ -122.3923518734928, 37.7089586194272 ], [ -122.392365540911214, 37.708952219242256 ], [ -122.392380936412536, 37.708945791290532 ], [ -122.392396349039899, 37.708940049794052 ], [ -122.392411779830567, 37.708934994736204 ], [ -122.39242892962109, 37.708929568690095 ], [ -122.392432645117751, 37.708928100915109 ], [ -122.392656793824756, 37.709119608424643 ], [ -122.391332097355985, 37.710140738310088 ], [ -122.390887824662656, 37.71036523380814 ], [ -122.390835880106437, 37.711169771421694 ], [ -122.392609027560681, 37.711272141276474 ], [ -122.393916838957196, 37.711294747317396 ], [ -122.394130547970391, 37.711308547209811 ], [ -122.394301164504668, 37.711283892996612 ], [ -122.394415018271332, 37.711243467479711 ], [ -122.394533636579439, 37.711181739957787 ], [ -122.394789228222862, 37.711029491236808 ], [ -122.395699524288574, 37.710911289111898 ], [ -122.395804130724926, 37.711357784012904 ], [ -122.395984840101519, 37.711902635542479 ], [ -122.396209567629995, 37.712429108802013 ], [ -122.396615767431044, 37.713094016747043 ], [ -122.396615774145118, 37.713094103716635 ], [ -122.396885665233555, 37.713468431896139 ], [ -122.397834560573045, 37.714650610374164 ], [ -122.398259710629063, 37.715141974251068 ], [ -122.398471400839512, 37.715455433381891 ], [ -122.398552555430172, 37.715443409305585 ], [ -122.398990734294756, 37.715338865287599 ], [ -122.398990733617495, 37.715338865847912 ], [ -122.398991048786399, 37.715338790720075 ], [ -122.398991043085772, 37.715338797679301 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":16,"ZIP_CODE":94110,"ID":94110},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4217053213399, 37.731806501069016 ], [ -122.422820482616018, 37.731641033131751 ], [ -122.423920024119482, 37.731552895324626 ], [ -122.424553925961277, 37.731549131439351 ], [ -122.424645313557747, 37.731548588455745 ], [ -122.424987445865384, 37.731559842008934 ], [ -122.425563267495079, 37.731578779884757 ], [ -122.426103813784607, 37.731651546856703 ], [ -122.426095455082049, 37.731670597839134 ], [ -122.425919712835267, 37.7318157721811 ], [ -122.425781691782262, 37.731929785903453 ], [ -122.425500227991904, 37.7320527573848 ], [ -122.42519868259302, 37.732129150959032 ], [ -122.425046994836066, 37.732129947854176 ], [ -122.424277944077048, 37.732133983506472 ], [ -122.423769382874056, 37.732162707171447 ], [ -122.423486414351174, 37.732261254158729 ], [ -122.423194763566187, 37.732223135593344 ], [ -122.422597636657429, 37.732308431174374 ], [ -122.421964308435761, 37.732433222436505 ], [ -122.421769540807844, 37.732442879558889 ], [ -122.421628644882077, 37.732486581446111 ], [ -122.421573075628018, 37.732579492315836 ], [ -122.421610219449562, 37.732670894611623 ], [ -122.421740792022078, 37.732743282983918 ], [ -122.421779146191113, 37.732885343728064 ], [ -122.42184863663951, 37.732986304256819 ], [ -122.42202732889227, 37.733140443779334 ], [ -122.422262570568407, 37.733475728240066 ], [ -122.42233700854446, 37.733668492264307 ], [ -122.422378321374794, 37.733842795338198 ], [ -122.42251406401526, 37.734049477037892 ], [ -122.422640968014662, 37.73418217013328 ], [ -122.422876476168085, 37.734369596551609 ], [ -122.422737437389159, 37.734490301194434 ], [ -122.422547222688962, 37.734619826084632 ], [ -122.422284286448345, 37.734779711262206 ], [ -122.422205425171413, 37.73485685013258 ], [ -122.422146910860818, 37.734962831393027 ], [ -122.422120806983799, 37.735152847768823 ], [ -122.42260172446116, 37.735176855221177 ], [ -122.422687909096169, 37.735204969342369 ], [ -122.424702562314437, 37.735369870957172 ], [ -122.424930534158477, 37.735266285585048 ], [ -122.427103368742522, 37.735457096504888 ], [ -122.427838803054428, 37.734693898279502 ], [ -122.428436980709748, 37.734950949626743 ], [ -122.428436951461066, 37.734950968784666 ], [ -122.42783624298761, 37.735347761815902 ], [ -122.427738169173168, 37.735412543347451 ], [ -122.42729729676671, 37.735729149898575 ], [ -122.426544994076067, 37.736269396547655 ], [ -122.426500890836181, 37.73630106743056 ], [ -122.425847678890904, 37.736860666965818 ], [ -122.425439441891498, 37.737210392933726 ], [ -122.425110714349969, 37.737550673136937 ], [ -122.424904804743889, 37.737763817504508 ], [ -122.424711669489241, 37.738076607801148 ], [ -122.424696469855888, 37.738101223886673 ], [ -122.424531564221411, 37.738368292265967 ], [ -122.424284283357963, 37.738949691036076 ], [ -122.424063599996956, 37.739784297520274 ], [ -122.424147154179678, 37.739869229183775 ], [ -122.424147154546787, 37.739869230001858 ], [ -122.42414746787631, 37.739869414698418 ], [ -122.424258152196032, 37.739934707389949 ], [ -122.42413709700044, 37.740335654620864 ], [ -122.42417135664968, 37.740713439585669 ], [ -122.424301394893192, 37.742119600447609 ], [ -122.424233478510288, 37.742235956906946 ], [ -122.424233472639315, 37.742235957277522 ], [ -122.424233272287097, 37.742236301993223 ], [ -122.424233277120777, 37.742236301639601 ], [ -122.424309369085989, 37.7430347552692 ], [ -122.424384862816794, 37.743838216035606 ], [ -122.424459208282684, 37.744635998834639 ], [ -122.424538964982034, 37.745435717069675 ], [ -122.424602793343411, 37.746241400149849 ], [ -122.424689793548367, 37.747033402901096 ], [ -122.424768280884535, 37.747830304166378 ], [ -122.424841979744244, 37.748600757493776 ], [ -122.424845018024243, 37.748632519532975 ], [ -122.424845024283727, 37.748632587554638 ], [ -122.424922999639648, 37.749434901505936 ], [ -122.424999224133984, 37.75023271753119 ], [ -122.424999224155329, 37.750232718354916 ], [ -122.425075700414453, 37.751033151258099 ], [ -122.425122809405835, 37.751528900123922 ], [ -122.4251525416649, 37.751841785070944 ], [ -122.425152541686245, 37.751841785894676 ], [ -122.425302616566313, 37.753431589741957 ], [ -122.425302616947704, 37.753431591109177 ], [ -122.425425666412067, 37.754703378159874 ], [ -122.425457179889037, 37.755029078716305 ], [ -122.425491892915787, 37.755387845874338 ], [ -122.425612216172169, 37.756631383038098 ], [ -122.425645855643012, 37.756979041458848 ], [ -122.42568945931761, 37.757429671011749 ], [ -122.425689459367419, 37.757429672933782 ], [ -122.425766807341631, 37.758226828700685 ], [ -122.425843422635126, 37.759029397589842 ], [ -122.425900090784694, 37.759619242549249 ], [ -122.425920302092379, 37.759829613405913 ], [ -122.425985721165645, 37.760498692937027 ], [ -122.426076501462219, 37.761427133668562 ], [ -122.426076501815189, 37.761427133937481 ], [ -122.426145984060597, 37.762160358437526 ], [ -122.426149283375466, 37.762227539381186 ], [ -122.426191463523168, 37.762538363286502 ], [ -122.426204067323269, 37.762631239367813 ], [ -122.426224290129298, 37.762962298008539 ], [ -122.426228478902843, 37.763030870557735 ], [ -122.426317477898522, 37.763970002371671 ], [ -122.426381708399177, 37.764645687871273 ], [ -122.426381708477521, 37.764645690891633 ], [ -122.426381062758907, 37.764645729188807 ], [ -122.426381062356072, 37.764645726997848 ], [ -122.424574375550648, 37.764754942537614 ], [ -122.424102683503691, 37.764783452170008 ], [ -122.423112421134832, 37.764843298770074 ], [ -122.42285341443899, 37.764858950163855 ], [ -122.421886445840627, 37.764917378530825 ], [ -122.421381475659516, 37.764947887797014 ], [ -122.421239593012103, 37.764956459387825 ], [ -122.420901270224292, 37.764976898858535 ], [ -122.420580607922048, 37.764996270018614 ], [ -122.420482492120144, 37.765002197009743 ], [ -122.419668972681833, 37.765051337054757 ], [ -122.418698425401715, 37.765109955145007 ], [ -122.418579138459435, 37.765117159398407 ], [ -122.41748659577631, 37.765183134636899 ], [ -122.416387522888556, 37.765249494040667 ], [ -122.415308388038014, 37.765314639624691 ], [ -122.413105243007919, 37.765447608576679 ], [ -122.412416426589019, 37.765489809283601 ], [ -122.411455262151748, 37.765547605227276 ], [ -122.410486689274492, 37.765605838622655 ], [ -122.408544242939584, 37.765722599679115 ], [ -122.407534229395537, 37.765783299286987 ], [ -122.407419737953433, 37.764487829924626 ], [ -122.406859230067056, 37.764521681123377 ], [ -122.406429154577822, 37.764547653499882 ], [ -122.406429152848446, 37.764547653527842 ], [ -122.406005237363416, 37.764573252226405 ], [ -122.405463420216606, 37.764605967981389 ], [ -122.405089603673972, 37.764628538361961 ], [ -122.405089602982216, 37.764628538373131 ], [ -122.405059622300016, 37.764310557738277 ], [ -122.405104592203571, 37.763852244172895 ], [ -122.405203088479681, 37.763478066930332 ], [ -122.405258413683796, 37.763323129887908 ], [ -122.40532469627189, 37.76313750682079 ], [ -122.405384490436404, 37.76297005284507 ], [ -122.405653838302513, 37.762432552128487 ], [ -122.405925510731336, 37.762011914887523 ], [ -122.406021608630979, 37.761863123291867 ], [ -122.406147061407296, 37.7616371808829 ], [ -122.4062826701159, 37.761392945250627 ], [ -122.406479479731502, 37.760730932047331 ], [ -122.406492697683589, 37.760686469836571 ], [ -122.406492391998796, 37.760255279712112 ], [ -122.406389357641601, 37.759804405761585 ], [ -122.406261953936678, 37.75945211819198 ], [ -122.406247868764623, 37.759429354319998 ], [ -122.406103779268008, 37.759196479511928 ], [ -122.405903135660481, 37.758934413706449 ], [ -122.405545221503274, 37.758536929330724 ], [ -122.405048169961901, 37.758189448369819 ], [ -122.404835145723425, 37.7580339263735 ], [ -122.40472107938929, 37.757950649275713 ], [ -122.404441730762329, 37.757748221369937 ], [ -122.404168659910013, 37.75752977302043 ], [ -122.403774405770974, 37.757138490742172 ], [ -122.403774084903432, 37.757138026202746 ], [ -122.403689260967766, 37.757015002579273 ], [ -122.403543859417937, 37.75680412126377 ], [ -122.403395700993769, 37.756471262485057 ], [ -122.403305530792395, 37.756165877853867 ], [ -122.403245024221292, 37.755760575231484 ], [ -122.403244936870763, 37.755759623462495 ], [ -122.403127143734139, 37.75447773377249 ], [ -122.403011715723153, 37.753221541143297 ], [ -122.40301031565609, 37.753201877425177 ], [ -122.402978169178084, 37.75275045704997 ], [ -122.403006670294943, 37.752445905732571 ], [ -122.403060331379024, 37.751915861053995 ], [ -122.403072643662085, 37.751794247946641 ], [ -122.403175027775376, 37.751281093014263 ], [ -122.403214572776321, 37.751164169122518 ], [ -122.403378511001179, 37.750679445903444 ], [ -122.403514246938869, 37.750281563827826 ], [ -122.403735650894049, 37.749583872707518 ], [ -122.403783562755194, 37.749432891426196 ], [ -122.403826366530197, 37.749298003881435 ], [ -122.403865672790147, 37.749174139069758 ], [ -122.403990987296382, 37.74878066971192 ], [ -122.404051662308461, 37.74859015799958 ], [ -122.404103617259366, 37.748427025595028 ], [ -122.404104297626958, 37.748424888760844 ], [ -122.404105247604519, 37.748421906188959 ], [ -122.404249303912664, 37.747969580021021 ], [ -122.404390053649081, 37.747536214374357 ], [ -122.404496510435962, 37.747208430674682 ], [ -122.40472494664624, 37.746505061967419 ], [ -122.40491012189095, 37.745826558312224 ], [ -122.405051159825348, 37.745369647465395 ], [ -122.405179630488661, 37.744981134097749 ], [ -122.405202201087945, 37.744938889063008 ], [ -122.405444172050537, 37.744486004341084 ], [ -122.405475695814175, 37.744427001636382 ], [ -122.405747110957691, 37.744028598841339 ], [ -122.405778655290121, 37.743989539741165 ], [ -122.406047831839984, 37.743656241756561 ], [ -122.406149889909912, 37.743534947555823 ], [ -122.406881612449212, 37.742665295031905 ], [ -122.407179681106143, 37.742274728523746 ], [ -122.407209491524853, 37.742235666028684 ], [ -122.407448073794797, 37.741860521932459 ], [ -122.407625696256517, 37.741528038897464 ], [ -122.407757062965644, 37.741253133394146 ], [ -122.407846654253319, 37.741024367104636 ], [ -122.407964646391505, 37.740662552272049 ], [ -122.408049229318891, 37.740339110042903 ], [ -122.408114071971212, 37.739818086787388 ], [ -122.408137030577961, 37.739635775942595 ], [ -122.407910235902733, 37.739622169745928 ], [ -122.407891817991583, 37.739621065115479 ], [ -122.407641980575562, 37.73960607595005 ], [ -122.406978585498265, 37.739566272603653 ], [ -122.40691098434678, 37.739429695993088 ], [ -122.406917382338506, 37.739360326809205 ], [ -122.406923419099328, 37.739294876190314 ], [ -122.40692734433064, 37.739234393770168 ], [ -122.406930338448149, 37.739188255204461 ], [ -122.406936851773693, 37.739087891690275 ], [ -122.406939830707117, 37.738876165961258 ], [ -122.406945393527934, 37.738693880058896 ], [ -122.40693392611557, 37.738601770051126 ], [ -122.406915744052654, 37.738455725148341 ], [ -122.406895428755547, 37.738323651840822 ], [ -122.406867742024218, 37.738143654094841 ], [ -122.406900092501772, 37.738009155282221 ], [ -122.406910504104971, 37.737965866913434 ], [ -122.406734307244236, 37.736552960385914 ], [ -122.40670383539134, 37.73630860402433 ], [ -122.406618861734884, 37.735896873766244 ], [ -122.406454646881144, 37.735510813404687 ], [ -122.406382307240833, 37.735418606514493 ], [ -122.406294659725731, 37.735306888886043 ], [ -122.406543556705884, 37.735230631177984 ], [ -122.406646483954859, 37.73519837501037 ], [ -122.406814899797354, 37.735145595835078 ], [ -122.406847917074074, 37.735135248636119 ], [ -122.407130003639637, 37.735046845926902 ], [ -122.407348459866085, 37.73497838329498 ], [ -122.408033938982058, 37.734745520041734 ], [ -122.408486051038935, 37.734591930477059 ], [ -122.409312695053686, 37.734284112011252 ], [ -122.410241243396115, 37.733882628159428 ], [ -122.41165477705286, 37.733366974354652 ], [ -122.413331412339687, 37.732631849917702 ], [ -122.413420514856341, 37.732598164337901 ], [ -122.414376034430035, 37.732236918329072 ], [ -122.414530950551168, 37.732192436697261 ], [ -122.415052879313009, 37.73204257200301 ], [ -122.415897414400035, 37.731880953714693 ], [ -122.416651654342999, 37.731819145397338 ], [ -122.417401517276474, 37.731856484581833 ], [ -122.41846272371707, 37.73186673188021 ], [ -122.419454332152029, 37.731867094633678 ], [ -122.420326686201122, 37.731814347002349 ], [ -122.421718952826723, 37.731607777327895 ], [ -122.4217053213399, 37.731806501069016 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":17,"ZIP_CODE":94134,"ID":94134},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.423335646405121, 37.727792365353856 ], [ -122.423335646419318, 37.727792365903014 ], [ -122.423508669179441, 37.728206721890601 ], [ -122.423584360438809, 37.728387748823138 ], [ -122.423739981620528, 37.728759936840348 ], [ -122.423740585686062, 37.728759904726353 ], [ -122.424198685585807, 37.728735553475715 ], [ -122.424688687008342, 37.728709478304708 ], [ -122.425289939392513, 37.728677480232541 ], [ -122.425963703408243, 37.728641021813154 ], [ -122.426024704407865, 37.729396982427588 ], [ -122.423797638913399, 37.729509407965139 ], [ -122.422942671063694, 37.729241733452504 ], [ -122.422503353186897, 37.729261991833724 ], [ -122.421440856780521, 37.729310979302717 ], [ -122.421182810911759, 37.729745420447983 ], [ -122.421083540431724, 37.729975107309578 ], [ -122.421017374424935, 37.730233164434182 ], [ -122.420964111358728, 37.730677319690216 ], [ -122.420944905836123, 37.73130857523288 ], [ -122.421753180203225, 37.731084669073972 ], [ -122.421730502033157, 37.73135209792499 ], [ -122.421736572397847, 37.731350897661805 ], [ -122.421730663628679, 37.731437047083624 ], [ -122.421718952826723, 37.731607777327895 ], [ -122.420326686201122, 37.731814347002349 ], [ -122.419454332152029, 37.731867094633678 ], [ -122.41846272371707, 37.73186673188021 ], [ -122.417401517276474, 37.731856484581833 ], [ -122.416651654342999, 37.731819145397338 ], [ -122.415897414400035, 37.731880953714693 ], [ -122.415052879313009, 37.73204257200301 ], [ -122.414530950551168, 37.732192436697261 ], [ -122.414376034430035, 37.732236918329072 ], [ -122.413420514856341, 37.732598164337901 ], [ -122.413331412339687, 37.732631849917702 ], [ -122.41165477705286, 37.733366974354652 ], [ -122.410241243396115, 37.733882628159428 ], [ -122.409312695053686, 37.734284112011252 ], [ -122.408486051038935, 37.734591930477059 ], [ -122.408033938982058, 37.734745520041734 ], [ -122.407348459866085, 37.73497838329498 ], [ -122.407130003639637, 37.735046845926902 ], [ -122.406847917074074, 37.735135248636119 ], [ -122.406814899797354, 37.735145595835078 ], [ -122.406646483954859, 37.73519837501037 ], [ -122.406543556705884, 37.735230631177984 ], [ -122.406294659725731, 37.735306888886043 ], [ -122.405494571184249, 37.734287050530888 ], [ -122.405096042524178, 37.733716127227488 ], [ -122.405059585407599, 37.733652395233406 ], [ -122.404878800551302, 37.733336356125804 ], [ -122.404657097641305, 37.732948782960683 ], [ -122.40465709692171, 37.732948781873532 ], [ -122.40405482060109, 37.731789516245591 ], [ -122.403961731325225, 37.731610333558521 ], [ -122.403400462440644, 37.730658352585962 ], [ -122.403021622188092, 37.729901901370539 ], [ -122.402752244737584, 37.729357163240891 ], [ -122.402209197740476, 37.728101973566574 ], [ -122.402105120777605, 37.727789703519925 ], [ -122.402039596395539, 37.727554690472438 ], [ -122.401875118236148, 37.726964759399728 ], [ -122.401822425920514, 37.726775260854211 ], [ -122.401474642450822, 37.725528485745301 ], [ -122.401471218295981, 37.725516183407578 ], [ -122.401182917574161, 37.724588254281116 ], [ -122.40078474798517, 37.723616209514844 ], [ -122.400784747286778, 37.723616209251418 ], [ -122.400661931084002, 37.723316373994798 ], [ -122.40038213245046, 37.722633285332655 ], [ -122.399925016822507, 37.721517272170509 ], [ -122.399830553211288, 37.721427080386505 ], [ -122.399600300155441, 37.720920363637823 ], [ -122.399419264352986, 37.720532021245042 ], [ -122.399309038031902, 37.720278334103305 ], [ -122.399208340593788, 37.719991530079234 ], [ -122.399125486878972, 37.719730004239857 ], [ -122.399066465573654, 37.719469200866385 ], [ -122.398943601880902, 37.718926286066001 ], [ -122.398942440206895, 37.718921151552976 ], [ -122.398923285260594, 37.718836507697276 ], [ -122.398913161799925, 37.718792447247658 ], [ -122.398799134608808, 37.718275024173522 ], [ -122.398787867001658, 37.718224410399863 ], [ -122.398759937061044, 37.718047446028777 ], [ -122.39871606167118, 37.717769450850419 ], [ -122.398686680058731, 37.717603871431201 ], [ -122.398668885707423, 37.717503589023465 ], [ -122.398561414050022, 37.716897923924947 ], [ -122.398499278161879, 37.716543657492224 ], [ -122.398550700112352, 37.7161815389411 ], [ -122.398565370170317, 37.716139616445538 ], [ -122.398643015232707, 37.715917722950913 ], [ -122.398656056102226, 37.71588045500463 ], [ -122.398735527529269, 37.715727131371494 ], [ -122.398839335741798, 37.715526852955328 ], [ -122.398953101659146, 37.715385829745912 ], [ -122.398991043085772, 37.715338797679301 ], [ -122.398991048786399, 37.715338790720075 ], [ -122.398990733617495, 37.715338865847912 ], [ -122.398990734294756, 37.715338865287599 ], [ -122.398552555430172, 37.715443409305585 ], [ -122.398471400839512, 37.715455433381891 ], [ -122.398259710629063, 37.715141974251068 ], [ -122.397834560573045, 37.714650610374164 ], [ -122.396885665233555, 37.713468431896139 ], [ -122.396615774145118, 37.713094103716635 ], [ -122.396615767431044, 37.713094016747043 ], [ -122.396209567629995, 37.712429108802013 ], [ -122.395984840101519, 37.711902635542479 ], [ -122.395804130724926, 37.711357784012904 ], [ -122.395699524288574, 37.710911289111898 ], [ -122.394789228222862, 37.711029491236808 ], [ -122.394533636579439, 37.711181739957787 ], [ -122.394415018271332, 37.711243467479711 ], [ -122.394301164504668, 37.711283892996612 ], [ -122.394130547970391, 37.711308547209811 ], [ -122.393916838957196, 37.711294747317396 ], [ -122.392609027560681, 37.711272141276474 ], [ -122.390835880106437, 37.711169771421694 ], [ -122.390887824662656, 37.71036523380814 ], [ -122.391332097355985, 37.710140738310088 ], [ -122.392656793824756, 37.709119608424643 ], [ -122.392432645117751, 37.708928100915109 ], [ -122.392444333503988, 37.708923483961478 ], [ -122.392459711870288, 37.708916369816677 ], [ -122.392473335584143, 37.708908253489831 ], [ -122.392486941819897, 37.70889945070968 ], [ -122.392498784665378, 37.708889302522401 ], [ -122.392510610730511, 37.708878468145663 ], [ -122.392524068414929, 37.708863830521395 ], [ -122.392559440339639, 37.708827208691588 ], [ -122.392572967908777, 37.708815316868559 ], [ -122.392584776482323, 37.708803796307102 ], [ -122.392598312774226, 37.708792247432399 ], [ -122.392611857807054, 37.708781042056593 ], [ -122.392623674754688, 37.708769864447994 ], [ -122.39263895660568, 37.708758974800666 ], [ -122.392652510357621, 37.708748112371396 ], [ -122.392666072850986, 37.708737593441008 ], [ -122.39268137181341, 37.708727389970818 ], [ -122.39269494304439, 37.708717214537501 ], [ -122.392710242682909, 37.70870701077785 ], [ -122.392756192651433, 37.708678459962563 ], [ -122.392771518490107, 37.708669285872482 ], [ -122.392791975788157, 37.708657969391702 ], [ -122.392832794235133, 37.708631560935011 ], [ -122.392860041474023, 37.708615328192714 ], [ -122.392875393166236, 37.708607184046727 ], [ -122.392889025524426, 37.708599411171832 ], [ -122.392904394682077, 37.708591953199182 ], [ -122.392918035766968, 37.708584523272208 ], [ -122.392941949172211, 37.708573151218971 ], [ -122.392977635730745, 37.708548885387124 ], [ -122.393011585450822, 37.708524304093004 ], [ -122.393045517668241, 37.708499036337294 ], [ -122.393079441122353, 37.708473425345893 ], [ -122.393113355819651, 37.708447471393349 ], [ -122.393167526617077, 37.70840230614084 ], [ -122.393582832216993, 37.708417948939243 ], [ -122.395113504570858, 37.708409867431477 ], [ -122.397085902715403, 37.708399425270557 ], [ -122.399684603917876, 37.708385616773455 ], [ -122.401309241246423, 37.708378554199705 ], [ -122.402497775210733, 37.708373373547339 ], [ -122.40338621311453, 37.708369492971435 ], [ -122.40510200377139, 37.708361979821355 ], [ -122.405343853958243, 37.708354977289922 ], [ -122.405521792033781, 37.708350038400255 ], [ -122.406475878190662, 37.708342152666113 ], [ -122.406591468680915, 37.708342377473876 ], [ -122.407290175418893, 37.708343733713313 ], [ -122.407753446712761, 37.708342067925997 ], [ -122.408110927534096, 37.708327349450251 ], [ -122.40829882656611, 37.708327401816014 ], [ -122.412359860013211, 37.708328460170456 ], [ -122.413340535135291, 37.70832869518982 ], [ -122.413594573052677, 37.708328955439633 ], [ -122.414219950784457, 37.708329593757632 ], [ -122.414374376554221, 37.708329750560253 ], [ -122.415233045955674, 37.708329360822155 ], [ -122.415330384121233, 37.708329316229424 ], [ -122.416223848405949, 37.708328179819176 ], [ -122.417093688537392, 37.708327067084589 ], [ -122.417207468396128, 37.708327057129232 ], [ -122.418047976840626, 37.708326981775464 ], [ -122.418165047871298, 37.708327396090446 ], [ -122.419017914810595, 37.708330411075799 ], [ -122.419120269682026, 37.708330983731479 ], [ -122.419237502940533, 37.708331640189144 ], [ -122.419704274317439, 37.708331586927457 ], [ -122.420073510611971, 37.708332523899031 ], [ -122.420159361284988, 37.708332741426119 ], [ -122.423764571500399, 37.708341826236627 ], [ -122.423361076063088, 37.709234055437079 ], [ -122.423353359735231, 37.709250935907697 ], [ -122.423353331596459, 37.709250997624174 ], [ -122.423820286343911, 37.709573973454503 ], [ -122.423971204711407, 37.709678357430306 ], [ -122.424550951226621, 37.710101873835256 ], [ -122.425118753539664, 37.710464462528329 ], [ -122.425572654326643, 37.710701178146003 ], [ -122.426490332391396, 37.711021642816618 ], [ -122.426849963523566, 37.711156197850272 ], [ -122.425769401653085, 37.714425227128565 ], [ -122.427973857260341, 37.715161057331514 ], [ -122.427571950566247, 37.71699744604517 ], [ -122.426961271013212, 37.717805116783104 ], [ -122.426390269927637, 37.718560725227924 ], [ -122.426390269596226, 37.718560725782737 ], [ -122.426390032692737, 37.718560604670934 ], [ -122.425834816801412, 37.718279388717512 ], [ -122.425605873732934, 37.718131895102509 ], [ -122.425411706342686, 37.717880972693159 ], [ -122.425177444570053, 37.717485960998928 ], [ -122.424942097378548, 37.717261064626705 ], [ -122.424687869969304, 37.717146210464122 ], [ -122.424656181661859, 37.717131894726805 ], [ -122.424528018591516, 37.717064916531086 ], [ -122.424258262597263, 37.717024059120966 ], [ -122.424022457403083, 37.717036533105109 ], [ -122.423774201550728, 37.717092319144726 ], [ -122.423530052223612, 37.717201923868423 ], [ -122.422472988486305, 37.717887379027822 ], [ -122.422642040011837, 37.718030648532753 ], [ -122.422885734123284, 37.71809195842259 ], [ -122.423023908872437, 37.718162895921928 ], [ -122.423452239422744, 37.718705588384864 ], [ -122.423536512782078, 37.718956983348477 ], [ -122.42348866361003, 37.719439263071187 ], [ -122.423554916906838, 37.719668150420404 ], [ -122.423736904433326, 37.71982328246721 ], [ -122.424032169669715, 37.719926258473294 ], [ -122.424800888544937, 37.7200238938456 ], [ -122.425478982693178, 37.720232473267444 ], [ -122.425478983024618, 37.720232472712645 ], [ -122.425479352540037, 37.720232586714161 ], [ -122.425479352547157, 37.72023258698875 ], [ -122.425664999767108, 37.720321846926637 ], [ -122.426022740865662, 37.720493848462766 ], [ -122.42602274262245, 37.720493849532829 ], [ -122.426022741606815, 37.720493850373522 ], [ -122.424918832446721, 37.722087021186233 ], [ -122.424897104558099, 37.722118378784295 ], [ -122.423806549912683, 37.723691155552039 ], [ -122.423577946908821, 37.723750386689403 ], [ -122.423577951775229, 37.723750454459399 ], [ -122.422830067678831, 37.723944194056337 ], [ -122.421846961042462, 37.724198859168652 ], [ -122.421846961049567, 37.724198859443213 ], [ -122.422043387171286, 37.724673029193113 ], [ -122.422342507091699, 37.725395088531037 ], [ -122.422342507113001, 37.725395089354791 ], [ -122.422840471972961, 37.726597115803735 ], [ -122.422840471987186, 37.726597116352892 ], [ -122.42312222730105, 37.727277221300007 ], [ -122.423246600371399, 37.727577430218268 ], [ -122.423335646405121, 37.727792365353856 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":18,"ZIP_CODE":94112,"ID":94112},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.427838803054428, 37.734693898279502 ], [ -122.427103368742522, 37.735457096504888 ], [ -122.424930534158477, 37.735266285585048 ], [ -122.424702562314437, 37.735369870957172 ], [ -122.422687909096169, 37.735204969342369 ], [ -122.42260172446116, 37.735176855221177 ], [ -122.422120806983799, 37.735152847768823 ], [ -122.422146910860818, 37.734962831393027 ], [ -122.422205425171413, 37.73485685013258 ], [ -122.422284286448345, 37.734779711262206 ], [ -122.422547222688962, 37.734619826084632 ], [ -122.422737437389159, 37.734490301194434 ], [ -122.422876476168085, 37.734369596551609 ], [ -122.422640968014662, 37.73418217013328 ], [ -122.42251406401526, 37.734049477037892 ], [ -122.422378321374794, 37.733842795338198 ], [ -122.42233700854446, 37.733668492264307 ], [ -122.422262570568407, 37.733475728240066 ], [ -122.42202732889227, 37.733140443779334 ], [ -122.42184863663951, 37.732986304256819 ], [ -122.421779146191113, 37.732885343728064 ], [ -122.421740792022078, 37.732743282983918 ], [ -122.421610219449562, 37.732670894611623 ], [ -122.421573075628018, 37.732579492315836 ], [ -122.421628644882077, 37.732486581446111 ], [ -122.421769540807844, 37.732442879558889 ], [ -122.421964308435761, 37.732433222436505 ], [ -122.422597636657429, 37.732308431174374 ], [ -122.423194763566187, 37.732223135593344 ], [ -122.423486414351174, 37.732261254158729 ], [ -122.423769382874056, 37.732162707171447 ], [ -122.424277944077048, 37.732133983506472 ], [ -122.425046994836066, 37.732129947854176 ], [ -122.42519868259302, 37.732129150959032 ], [ -122.425500227991904, 37.7320527573848 ], [ -122.425781691782262, 37.731929785903453 ], [ -122.425919712835267, 37.7318157721811 ], [ -122.426095455082049, 37.731670597839134 ], [ -122.426103813784607, 37.731651546856703 ], [ -122.425563267495079, 37.731578779884757 ], [ -122.424987445865384, 37.731559842008934 ], [ -122.424645313557747, 37.731548588455745 ], [ -122.424553925961277, 37.731549131439351 ], [ -122.423920024119482, 37.731552895324626 ], [ -122.422820482616018, 37.731641033131751 ], [ -122.4217053213399, 37.731806501069016 ], [ -122.421718952826723, 37.731607777327895 ], [ -122.421730663628679, 37.731437047083624 ], [ -122.421736572397847, 37.731350897661805 ], [ -122.421730502033157, 37.73135209792499 ], [ -122.421753180203225, 37.731084669073972 ], [ -122.420944905836123, 37.73130857523288 ], [ -122.420964111358728, 37.730677319690216 ], [ -122.421017374424935, 37.730233164434182 ], [ -122.421083540431724, 37.729975107309578 ], [ -122.421182810911759, 37.729745420447983 ], [ -122.421440856780521, 37.729310979302717 ], [ -122.422503353186897, 37.729261991833724 ], [ -122.422942671063694, 37.729241733452504 ], [ -122.423797638913399, 37.729509407965139 ], [ -122.426024704407865, 37.729396982427588 ], [ -122.425963703408243, 37.728641021813154 ], [ -122.425289939392513, 37.728677480232541 ], [ -122.424688687008342, 37.728709478304708 ], [ -122.424198685585807, 37.728735553475715 ], [ -122.423740585686062, 37.728759904726353 ], [ -122.423739981620528, 37.728759936840348 ], [ -122.423584360438809, 37.728387748823138 ], [ -122.423508669179441, 37.728206721890601 ], [ -122.423335646405121, 37.727792365353856 ], [ -122.423246600371399, 37.727577430218268 ], [ -122.42312222730105, 37.727277221300007 ], [ -122.422840471987186, 37.726597116352892 ], [ -122.422840471972961, 37.726597115803735 ], [ -122.422342507113001, 37.725395089354791 ], [ -122.422342507091699, 37.725395088531037 ], [ -122.422043387171286, 37.724673029193113 ], [ -122.421846961042462, 37.724198859168652 ], [ -122.422830067678831, 37.723944194056337 ], [ -122.423577951775229, 37.723750454459399 ], [ -122.423577946908821, 37.723750386689403 ], [ -122.423806549912683, 37.723691155552039 ], [ -122.424897104558099, 37.722118378784295 ], [ -122.424918832446721, 37.722087021186233 ], [ -122.426022741606815, 37.720493850373522 ], [ -122.42602274262245, 37.720493849532829 ], [ -122.426022740865662, 37.720493848462766 ], [ -122.425664999767108, 37.720321846926637 ], [ -122.425479352547157, 37.72023258698875 ], [ -122.425478983024618, 37.720232472712645 ], [ -122.425478982693178, 37.720232473267444 ], [ -122.424800888544937, 37.7200238938456 ], [ -122.424032169669715, 37.719926258473294 ], [ -122.423736904433326, 37.71982328246721 ], [ -122.423554916906838, 37.719668150420404 ], [ -122.42348866361003, 37.719439263071187 ], [ -122.423536512782078, 37.718956983348477 ], [ -122.423452239422744, 37.718705588384864 ], [ -122.423023908872437, 37.718162895921928 ], [ -122.422885734123284, 37.71809195842259 ], [ -122.422642040011837, 37.718030648532753 ], [ -122.422472988486305, 37.717887379027822 ], [ -122.423530052223612, 37.717201923868423 ], [ -122.423774201550728, 37.717092319144726 ], [ -122.424022457403083, 37.717036533105109 ], [ -122.424258262597263, 37.717024059120966 ], [ -122.424528018591516, 37.717064916531086 ], [ -122.424656181661859, 37.717131894726805 ], [ -122.424687869969304, 37.717146210464122 ], [ -122.424942097378548, 37.717261064626705 ], [ -122.425177444570053, 37.717485960998928 ], [ -122.425411706342686, 37.717880972693159 ], [ -122.425605873732934, 37.718131895102509 ], [ -122.425834816801412, 37.718279388717512 ], [ -122.426390032692737, 37.718560604670934 ], [ -122.426390269596226, 37.718560725782737 ], [ -122.426390269927637, 37.718560725227924 ], [ -122.426961271013212, 37.717805116783104 ], [ -122.42757190808544, 37.716997501404578 ], [ -122.427571950566247, 37.71699744604517 ], [ -122.427580759648123, 37.716957196731435 ], [ -122.427810303733594, 37.715908376197518 ], [ -122.427973857260341, 37.715161057331514 ], [ -122.425769401653085, 37.714425227128565 ], [ -122.42684686757103, 37.711165565601846 ], [ -122.426849963523566, 37.711156197850272 ], [ -122.426490332391396, 37.711021642816618 ], [ -122.425572654326643, 37.710701178146003 ], [ -122.425118753539664, 37.710464462528329 ], [ -122.424550951226621, 37.710101873835256 ], [ -122.423971204711407, 37.709678357430306 ], [ -122.423353331596459, 37.709250997624174 ], [ -122.423361076063088, 37.709234055437079 ], [ -122.423764571500399, 37.708341826236627 ], [ -122.423768921768058, 37.708341837314315 ], [ -122.423877843148816, 37.708342118381125 ], [ -122.425994336403065, 37.708310781158126 ], [ -122.426202061368684, 37.708307703589938 ], [ -122.427674537396697, 37.708285876646727 ], [ -122.428354189600114, 37.708305089572242 ], [ -122.429105296742478, 37.708326317449469 ], [ -122.429339593931815, 37.708323251263963 ], [ -122.430449087529411, 37.70830872506928 ], [ -122.43129493119001, 37.708297643647327 ], [ -122.432343143904646, 37.708295922670345 ], [ -122.433778966251097, 37.708293550010708 ], [ -122.434148404329434, 37.708292936416406 ], [ -122.434985771421609, 37.708291542195809 ], [ -122.436248762964979, 37.708289427645774 ], [ -122.438728105043637, 37.708285237562031 ], [ -122.440497203989452, 37.708282215784038 ], [ -122.440711209177138, 37.708281848403743 ], [ -122.441349676712647, 37.708280750220105 ], [ -122.442106190726975, 37.708279444504022 ], [ -122.444671046569766, 37.708274980891133 ], [ -122.44478757213254, 37.708274776994109 ], [ -122.445691081512706, 37.708249897066402 ], [ -122.445824359823575, 37.708249470051783 ], [ -122.447227656612327, 37.708244965564717 ], [ -122.449798855530389, 37.708236668750466 ], [ -122.452354883587788, 37.708228365382816 ], [ -122.454322408844959, 37.70822193637261 ], [ -122.454560786889971, 37.708221155056798 ], [ -122.455565069973886, 37.708215472275576 ], [ -122.455732056485743, 37.708217630626116 ], [ -122.455902300127136, 37.708219830519191 ], [ -122.457184544230842, 37.70823461994447 ], [ -122.457915234279184, 37.708243041121499 ], [ -122.458505268317239, 37.708230883488149 ], [ -122.459062187698038, 37.708219405843458 ], [ -122.459727762092839, 37.708205685584353 ], [ -122.459848666151245, 37.708200651285779 ], [ -122.460029970068362, 37.708193102258491 ], [ -122.46108479110967, 37.708202670088042 ], [ -122.461227604731107, 37.708198848520283 ], [ -122.46139057300131, 37.708194487863473 ], [ -122.461950847900269, 37.70819992107895 ], [ -122.462093547900324, 37.708193760482068 ], [ -122.462235775065267, 37.708187619950934 ], [ -122.462590335310921, 37.70818746608122 ], [ -122.462764782467445, 37.70818738953367 ], [ -122.463939046778805, 37.708202838503169 ], [ -122.464345228799317, 37.708207403972743 ], [ -122.464812351274205, 37.708212652628795 ], [ -122.465768040492705, 37.708210264664245 ], [ -122.466623471256085, 37.708208120693818 ], [ -122.468612008025019, 37.708203113190002 ], [ -122.468634481973396, 37.708203081190824 ], [ -122.468943918748693, 37.708202372165289 ], [ -122.468469108419114, 37.708682445380624 ], [ -122.468442186669975, 37.708710365091008 ], [ -122.46815544621434, 37.708936581998181 ], [ -122.467717389066479, 37.709282172736899 ], [ -122.467202952111606, 37.709607827013201 ], [ -122.467161376112116, 37.709634146029515 ], [ -122.466791287837083, 37.709825747176509 ], [ -122.465994326901708, 37.710153924678359 ], [ -122.464766855714529, 37.710481381431755 ], [ -122.464363457907425, 37.710527001097098 ], [ -122.464175624997623, 37.710548242222522 ], [ -122.462893196389857, 37.710562754126848 ], [ -122.462561257753663, 37.710567393100142 ], [ -122.462558461843784, 37.710567432270715 ], [ -122.462554670587338, 37.71117015272295 ], [ -122.462545712573657, 37.711171028559598 ], [ -122.462063256954337, 37.711372729296876 ], [ -122.462570051320355, 37.711370301468136 ], [ -122.462581299448402, 37.712273520359908 ], [ -122.462580658473911, 37.712523033743715 ], [ -122.46256899895387, 37.713150165038506 ], [ -122.462554985317752, 37.713903926321834 ], [ -122.462588724439357, 37.714029538822885 ], [ -122.462602039439204, 37.714307653173123 ], [ -122.462607827629938, 37.714883950429027 ], [ -122.462615213395566, 37.71561930379395 ], [ -122.462620481465109, 37.716143794339722 ], [ -122.46262477066405, 37.716570820282072 ], [ -122.462633312624419, 37.717421207682776 ], [ -122.462638771382373, 37.717866433871905 ], [ -122.462639625007327, 37.717936035524978 ], [ -122.46263854285489, 37.718211149542661 ], [ -122.462244936309219, 37.718219524954932 ], [ -122.462245294921956, 37.718767790464547 ], [ -122.46226246554707, 37.719928593578096 ], [ -122.462254399326852, 37.72000857322422 ], [ -122.462264896007014, 37.721694985883083 ], [ -122.46226548731488, 37.721827794893429 ], [ -122.462270801151405, 37.723021081969392 ], [ -122.462273544585969, 37.723637216450626 ], [ -122.462276364972297, 37.724270607125867 ], [ -122.462276854232826, 37.724380477322995 ], [ -122.462279017236384, 37.724866230039204 ], [ -122.462279803400207, 37.725042766873585 ], [ -122.462280269039496, 37.725147301470763 ], [ -122.462212628293415, 37.725265491161082 ], [ -122.462561310804759, 37.725391067720956 ], [ -122.462815474472038, 37.725482412532848 ], [ -122.462686726995429, 37.725774916753664 ], [ -122.46262180837526, 37.726335258944708 ], [ -122.462565711889994, 37.726822959746293 ], [ -122.462545638153259, 37.726997475605309 ], [ -122.462546035395761, 37.727106268284892 ], [ -122.462547067236983, 37.727225353979733 ], [ -122.462615761322709, 37.727529244060726 ], [ -122.462714226912738, 37.727738412010282 ], [ -122.462888304160828, 37.72805552868347 ], [ -122.46288814852555, 37.72805550243347 ], [ -122.462888197868679, 37.72805558978888 ], [ -122.462703368909061, 37.728024299159358 ], [ -122.462378284725844, 37.728011300874932 ], [ -122.462089038987699, 37.728047063364642 ], [ -122.461824751209633, 37.728118912555594 ], [ -122.46142222273329, 37.728330263725837 ], [ -122.460815856121073, 37.72868098095028 ], [ -122.461139723962631, 37.728765209783546 ], [ -122.461378769207158, 37.728787306916686 ], [ -122.461378549868385, 37.728787330621202 ], [ -122.461139150327014, 37.728765372338408 ], [ -122.460815517748841, 37.728680936862041 ], [ -122.460412720770037, 37.728739179843977 ], [ -122.460002483633559, 37.728739437629635 ], [ -122.460023966205156, 37.729195728883113 ], [ -122.459983752683073, 37.729522472170189 ], [ -122.459930163903692, 37.729706628889033 ], [ -122.459878403068345, 37.729884503080157 ], [ -122.459783802497654, 37.730109540441724 ], [ -122.459563710785162, 37.730368588301999 ], [ -122.459352156941819, 37.730515761910091 ], [ -122.459193144317396, 37.730602954490251 ], [ -122.458688935885434, 37.730751520241796 ], [ -122.458472470688633, 37.730752827866375 ], [ -122.458222500186622, 37.73077738189027 ], [ -122.457474238952088, 37.730997495241198 ], [ -122.456607498028021, 37.731187733113579 ], [ -122.455762555159509, 37.731348802743547 ], [ -122.454915878760758, 37.731464997636976 ], [ -122.453590911574565, 37.731488405776453 ], [ -122.453411343594681, 37.731530646828205 ], [ -122.451146666771351, 37.731536846888879 ], [ -122.448866265260094, 37.731542959168735 ], [ -122.447291821211039, 37.731547153756608 ], [ -122.446578400413941, 37.7315490470612 ], [ -122.444288854528963, 37.731568915105107 ], [ -122.444294941941365, 37.731069863889161 ], [ -122.444298409699798, 37.730708221303239 ], [ -122.444291303797655, 37.729896860703782 ], [ -122.444284269547836, 37.729093639959018 ], [ -122.44427751391413, 37.728322242080615 ], [ -122.444276984301908, 37.728261755504967 ], [ -122.444131311025359, 37.72831838217401 ], [ -122.443973112888827, 37.728379877183251 ], [ -122.442954953118544, 37.728915555981267 ], [ -122.442595296877187, 37.729101680603421 ], [ -122.442082956691792, 37.729308363921405 ], [ -122.442006614261629, 37.729375267903364 ], [ -122.442010214558891, 37.729910949382834 ], [ -122.440664990612632, 37.729919329476168 ], [ -122.43969146797258, 37.730323477880063 ], [ -122.439686065703896, 37.730325720705899 ], [ -122.438692929843569, 37.730737998359416 ], [ -122.437166749161392, 37.731365897534992 ], [ -122.436835967120587, 37.731467212874229 ], [ -122.436678949019353, 37.731538395224071 ], [ -122.436668162612392, 37.731543298105045 ], [ -122.435457687984979, 37.732093484109448 ], [ -122.434992781477959, 37.732295287547394 ], [ -122.434989951388332, 37.732296516038524 ], [ -122.434823956379304, 37.732249430441868 ], [ -122.434644432402948, 37.732322139093768 ], [ -122.434512093568429, 37.732323526771246 ], [ -122.434440716858973, 37.732534804028113 ], [ -122.432720773871381, 37.733187185661393 ], [ -122.432572047381726, 37.733243596430682 ], [ -122.43132522808267, 37.733716495194997 ], [ -122.430931197463138, 37.733865940717834 ], [ -122.430928172484656, 37.733867087971888 ], [ -122.430400796753801, 37.734118700718604 ], [ -122.429799382942633, 37.734405632509876 ], [ -122.429797927680781, 37.734406452684077 ], [ -122.429606994304805, 37.734482866043706 ], [ -122.429365174143101, 37.734579643964238 ], [ -122.428766264762999, 37.73481932892178 ], [ -122.42843713263963, 37.734951046304573 ], [ -122.428436951461066, 37.734950968784666 ], [ -122.428436980709748, 37.734950949626743 ], [ -122.427838803054428, 37.734693898279502 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":19,"ZIP_CODE":94116,"ID":94116},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.491334899611488, 37.737293023539365 ], [ -122.491211452414888, 37.737221069184358 ], [ -122.491162508402653, 37.737157782139001 ], [ -122.490686267381363, 37.736541968564268 ], [ -122.490552748713441, 37.736251597078756 ], [ -122.490521485540071, 37.736028873151284 ], [ -122.490460674310157, 37.735842274774221 ], [ -122.490270108429897, 37.735606337180243 ], [ -122.490526224357907, 37.735470000646821 ], [ -122.490725734916396, 37.735399781312303 ], [ -122.490973609504408, 37.735348171552815 ], [ -122.491320518441114, 37.735327019185135 ], [ -122.491730212101302, 37.735301758325164 ], [ -122.491805731315921, 37.735279805981911 ], [ -122.492142715245791, 37.735181846965403 ], [ -122.492330945602859, 37.73504482611267 ], [ -122.492843999903116, 37.734842083695071 ], [ -122.493274340840912, 37.734785121286002 ], [ -122.493406966558723, 37.734856121008917 ], [ -122.493407285267097, 37.734856242527158 ], [ -122.493857076611491, 37.73502785037892 ], [ -122.493857150107345, 37.735028823489081 ], [ -122.4940149282546, 37.735024137316628 ], [ -122.494014877350082, 37.735023413250019 ], [ -122.493941607430031, 37.733981341508411 ], [ -122.493941605376719, 37.733981316545631 ], [ -122.494403119131789, 37.733960247035334 ], [ -122.496448643026866, 37.733877460645239 ], [ -122.496635991376749, 37.733770846301013 ], [ -122.496635997172902, 37.733770843181105 ], [ -122.496635997165527, 37.733770842906516 ], [ -122.496636262010625, 37.733770813420726 ], [ -122.496636264393828, 37.733770812006838 ], [ -122.496807213285692, 37.733750829171804 ], [ -122.4970611531011, 37.733738715676616 ], [ -122.497251243304476, 37.7337296478455 ], [ -122.497675024009141, 37.73378860832171 ], [ -122.497707486783483, 37.733793124978028 ], [ -122.498050148013945, 37.73385852689691 ], [ -122.49837749236211, 37.733942575660954 ], [ -122.498483756692679, 37.733969859923228 ], [ -122.498948533172893, 37.734128137325406 ], [ -122.499086082983126, 37.734239092175393 ], [ -122.499180283, 37.734301056816975 ], [ -122.499196335607635, 37.734311616338935 ], [ -122.499430330098079, 37.734471850699563 ], [ -122.500140914702612, 37.734827630984967 ], [ -122.500289079616721, 37.734896880574155 ], [ -122.500571951887039, 37.735029088020617 ], [ -122.500650675572956, 37.735059919015036 ], [ -122.500888239775747, 37.73515295885273 ], [ -122.500970549161394, 37.735174012383368 ], [ -122.501097483002411, 37.735206481213844 ], [ -122.501097483348147, 37.735206481207975 ], [ -122.501214897179494, 37.735242075875206 ], [ -122.501291847576297, 37.735265403511711 ], [ -122.501555214836827, 37.735330188314435 ], [ -122.501556481916552, 37.735330499723666 ], [ -122.502021315734993, 37.73539219398544 ], [ -122.50206735537283, 37.735396211199387 ], [ -122.50249812714712, 37.735433799348435 ], [ -122.503104759187963, 37.735466491452826 ], [ -122.504189206002195, 37.735470928034005 ], [ -122.505257352091178, 37.735475287872006 ], [ -122.505711404999388, 37.735473569905054 ], [ -122.506142139643117, 37.735471938745221 ], [ -122.506541776696594, 37.735470423847289 ], [ -122.506717419598758, 37.735469757763546 ], [ -122.506718392445464, 37.735463437680252 ], [ -122.508528202252251, 37.735448935792135 ], [ -122.50851723304288, 37.735491014374531 ], [ -122.508503948199092, 37.735575367390467 ], [ -122.508509635115971, 37.735593812897228 ], [ -122.508534142132689, 37.735604726176433 ], [ -122.508524280726746, 37.73562377983793 ], [ -122.508510961647445, 37.73564289244193 ], [ -122.50850628586997, 37.735661857701452 ], [ -122.508508623546277, 37.735748348011157 ], [ -122.508514421788533, 37.735770911828716 ], [ -122.508520015957387, 37.735785925179286 ], [ -122.508510052128926, 37.735801203199763 ], [ -122.508477309195854, 37.735805538751634 ], [ -122.508464092111296, 37.735828426720389 ], [ -122.508469983447981, 37.735854422414455 ], [ -122.508474053027456, 37.735877015976307 ], [ -122.508461856322953, 37.735937657650084 ], [ -122.508465576123427, 37.736075286791404 ], [ -122.508449773613393, 37.7361304959501 ], [ -122.508448690994484, 37.73621841805182 ], [ -122.508451371852146, 37.73631760760221 ], [ -122.508490175464019, 37.736473524223285 ], [ -122.508516049607124, 37.736662968752803 ], [ -122.508603414533738, 37.736823895128929 ], [ -122.508662443511639, 37.736960238247853 ], [ -122.50867888000765, 37.737056446014627 ], [ -122.508719731680841, 37.737160135129862 ], [ -122.508734334501312, 37.737316464525655 ], [ -122.508765426520924, 37.737442982668369 ], [ -122.508785682509867, 37.737552516867808 ], [ -122.508770696382811, 37.737637929009765 ], [ -122.508786455872283, 37.737709082028033 ], [ -122.508760949000333, 37.737789179556565 ], [ -122.508763268491435, 37.737874983674544 ], [ -122.50874159008174, 37.737968750866465 ], [ -122.5087476021437, 37.738191154145746 ], [ -122.508756496465509, 37.738392219395308 ], [ -122.508803998140891, 37.738613915588019 ], [ -122.508803138582451, 37.738710074824468 ], [ -122.508864043688376, 37.738915747292424 ], [ -122.5088940788266, 37.739003138823669 ], [ -122.508897419160689, 37.739126696329038 ], [ -122.50889009011712, 37.73923944778879 ], [ -122.508822474607925, 37.739425335507839 ], [ -122.508791610932704, 37.73956321107876 ], [ -122.508779986132339, 37.739708999607267 ], [ -122.508780357262495, 37.739722728217863 ], [ -122.50877604314833, 37.739755078870481 ], [ -122.508764442526711, 37.739773818808054 ], [ -122.508752731253111, 37.739788440149496 ], [ -122.508741502089606, 37.739820908689246 ], [ -122.508753863186314, 37.739830312411385 ], [ -122.508778826631357, 37.739858043722968 ], [ -122.508779958572916, 37.739899915709536 ], [ -122.508761814014846, 37.7399325021469 ], [ -122.508762704722017, 37.739965450811162 ], [ -122.508770491923499, 37.739997595154925 ], [ -122.508776179583251, 37.740016040354824 ], [ -122.508747792652912, 37.740053608631989 ], [ -122.508748423567027, 37.740076947268811 ], [ -122.508737212914269, 37.74011010223709 ], [ -122.508737713932007, 37.740128635860302 ], [ -122.508745501147203, 37.740160780479421 ], [ -122.50873947678167, 37.740193847030952 ], [ -122.508723191132987, 37.740231208721582 ], [ -122.508723822048324, 37.740254547632397 ], [ -122.508732128829621, 37.740305911755783 ], [ -122.508742872573777, 37.740319463533034 ], [ -122.50877339326972, 37.74036083476765 ], [ -122.508810829778682, 37.740402088090121 ], [ -122.508829008239559, 37.740434742019097 ], [ -122.508813223629531, 37.740490637616951 ], [ -122.508861162085935, 37.740536519108112 ], [ -122.508850322907236, 37.740583402687079 ], [ -122.508858110211349, 37.74061554702174 ], [ -122.508869614883267, 37.740657242433585 ], [ -122.508870616992439, 37.740694309675469 ], [ -122.508866692231578, 37.740741075644983 ], [ -122.508879295085322, 37.740759402667216 ], [ -122.508914260413761, 37.740773228492962 ], [ -122.508932680259875, 37.740814805724348 ], [ -122.508928625962866, 37.740856766401905 ], [ -122.508929256940604, 37.740880105034634 ], [ -122.508935445433963, 37.740917083849979 ], [ -122.508953234348851, 37.740935322719352 ], [ -122.508983384240864, 37.740962965288134 ], [ -122.509008589756519, 37.740999619859899 ], [ -122.509026879459341, 37.741036392343048 ], [ -122.509023085376484, 37.741087963041082 ], [ -122.509036559926997, 37.741138552557295 ], [ -122.509054739012925, 37.741171206441557 ], [ -122.509067601488525, 37.741199144021785 ], [ -122.5090958931589, 37.741222010744757 ], [ -122.509133200021253, 37.741258459227247 ], [ -122.50918506342488, 37.741257574887214 ], [ -122.509205212680868, 37.74129912258816 ], [ -122.509246237071991, 37.741345121825837 ], [ -122.509242554147008, 37.741400811115767 ], [ -122.509226769642837, 37.741456706760005 ], [ -122.50922790187596, 37.741498579280254 ], [ -122.509216431361367, 37.741522123988162 ], [ -122.509199662741182, 37.741541638830299 ], [ -122.509177093246976, 37.741602457387373 ], [ -122.509208116202714, 37.741662362111221 ], [ -122.509186903920153, 37.741709422591256 ], [ -122.509189298261234, 37.741797972091135 ], [ -122.509154236925113, 37.741844581962283 ], [ -122.509149811487788, 37.741872814035773 ], [ -122.509151073599824, 37.741919491290815 ], [ -122.509123057336595, 37.741970788250718 ], [ -122.509100375943362, 37.742027488213331 ], [ -122.509101006984949, 37.742050826840561 ], [ -122.509092137481943, 37.742106604551111 ], [ -122.509063378372446, 37.742130444293039 ], [ -122.50905227925395, 37.742167717855253 ], [ -122.509053541309754, 37.742214395109038 ], [ -122.509066774807934, 37.742256061019717 ], [ -122.509073353587084, 37.742307454847364 ], [ -122.509057438852423, 37.742358545723746 ], [ -122.509051785633744, 37.74240534060808 ], [ -122.509053177611264, 37.742456822871205 ], [ -122.509073957471671, 37.742521709498256 ], [ -122.509091988431635, 37.742548871927937 ], [ -122.509110538400861, 37.742595254410702 ], [ -122.509106614374701, 37.74264202008699 ], [ -122.509124533674893, 37.742665064210797 ], [ -122.50913085233006, 37.742706847741204 ], [ -122.509143845016951, 37.742739590042241 ], [ -122.509166932263881, 37.742761859020533 ], [ -122.50919239764383, 37.742808123575315 ], [ -122.509181187122891, 37.742841278564811 ], [ -122.509159213148223, 37.742860195402194 ], [ -122.509185214866079, 37.742990233896222 ], [ -122.509180659445065, 37.743013660954873 ], [ -122.509194023430766, 37.743060131850363 ], [ -122.509212184156269, 37.743092099550239 ], [ -122.509235029879775, 37.74310544465424 ], [ -122.509248023028022, 37.743138186935724 ], [ -122.509243207416404, 37.743152004255805 ], [ -122.509249786389432, 37.743203397791333 ], [ -122.509267947166521, 37.743235365207241 ], [ -122.50930010317154, 37.743337142122911 ], [ -122.509302627635748, 37.743430496606479 ], [ -122.509334412528517, 37.743518545183825 ], [ -122.509352573411604, 37.743550512310456 ], [ -122.509365807315376, 37.74359217817824 ], [ -122.509378299405142, 37.743606386832958 ], [ -122.50939077259082, 37.743619909062254 ], [ -122.509397091484274, 37.74366169284626 ], [ -122.509409824223226, 37.743684825098981 ], [ -122.509422427717567, 37.743703152328656 ], [ -122.509416403366075, 37.743736218895179 ], [ -122.509417405789478, 37.743773286113324 ], [ -122.509442110915671, 37.74379140724664 ], [ -122.509460290482991, 37.743824061059733 ], [ -122.509467837052512, 37.743847281472782 ], [ -122.509478581442835, 37.743860833174935 ], [ -122.509497132326601, 37.74390721558072 ], [ -122.509505050216035, 37.743944165138849 ], [ -122.509522969938899, 37.743967208647867 ], [ -122.509535572817498, 37.743985535876377 ], [ -122.509565966198053, 37.744022101859116 ], [ -122.509567729859413, 37.744087312700294 ], [ -122.50958033276946, 37.744105639923646 ], [ -122.509604330613158, 37.744161543870057 ], [ -122.509617063502262, 37.744184676098449 ], [ -122.509642400382361, 37.744226135524023 ], [ -122.50963585625108, 37.74423998206241 ], [ -122.509631802164265, 37.744281942740074 ], [ -122.509637749945398, 37.744309998183795 ], [ -122.509655669451874, 37.744333041677137 ], [ -122.509651355796905, 37.744365392330948 ], [ -122.509652358345974, 37.744402459543146 ], [ -122.509682770174749, 37.744439711928955 ], [ -122.509684274023797, 37.744495312746096 ], [ -122.509661202059561, 37.74453759777208 ], [ -122.509656906960942, 37.744570634854803 ], [ -122.509652462986452, 37.744598180504454 ], [ -122.509634336575232, 37.744631453474433 ], [ -122.509635079200464, 37.744658910667582 ], [ -122.509630653432438, 37.744687142751694 ], [ -122.509607841992747, 37.744739038046106 ], [ -122.509616019927876, 37.744785597059909 ], [ -122.509592687920644, 37.744818272053067 ], [ -122.509529982316536, 37.744866040185691 ], [ -122.509506149350315, 37.744880181550315 ], [ -122.509466886438972, 37.744899393264149 ], [ -122.509443442946818, 37.744927949648201 ], [ -122.509461493197179, 37.744955798714784 ], [ -122.509462365703229, 37.744988060641646 ], [ -122.50945818152897, 37.745025216299389 ], [ -122.509441783806565, 37.745058459754802 ], [ -122.509435740789897, 37.745090839884973 ], [ -122.509432447662917, 37.745160944171666 ], [ -122.509397957547932, 37.745292700871097 ], [ -122.509353566936483, 37.745697951409504 ], [ -122.509335859850864, 37.745938614544613 ], [ -122.509427065710852, 37.746369022956515 ], [ -122.509460469864493, 37.746452922841264 ], [ -122.509505472532595, 37.746581950726871 ], [ -122.509517033840751, 37.746625705328505 ], [ -122.509530306206301, 37.746668744003671 ], [ -122.509540138624189, 37.746712528086029 ], [ -122.50955170066463, 37.746756282671512 ], [ -122.509559804532088, 37.746800096229578 ], [ -122.509567926974654, 37.746844596216341 ], [ -122.509574301938841, 37.746888439256921 ], [ -122.50958069512302, 37.74693296845772 ], [ -122.509587070448092, 37.746976811491038 ], [ -122.509590005803872, 37.747021399934077 ], [ -122.509594670781297, 37.747065958880377 ], [ -122.509597084346751, 37.747155194721792 ], [ -122.509772363824212, 37.747496265262193 ], [ -122.509783516941724, 37.747524918382545 ], [ -122.509806418075982, 37.747604190625147 ], [ -122.509810433332206, 37.747624724253029 ], [ -122.509816158624176, 37.747644542243904 ], [ -122.509820173546927, 37.747665076151769 ], [ -122.509822459192577, 37.747685639827814 ], [ -122.509826455889467, 37.747705487025407 ], [ -122.509833313854301, 37.747767177210982 ], [ -122.509835523477918, 37.747848862313226 ], [ -122.509834351235696, 37.747869484689943 ], [ -122.509833161123524, 37.747889420899924 ], [ -122.509831989218355, 37.747910042996011 ], [ -122.509829088027573, 37.747930694860493 ], [ -122.509827897905609, 37.74795063079565 ], [ -122.509824997065294, 37.747971282928546 ], [ -122.509778471867705, 37.748297593791527 ], [ -122.509717126110829, 37.748715495135052 ], [ -122.509711528533515, 37.748764349563523 ], [ -122.509708924691878, 37.748795984010961 ], [ -122.509706339422777, 37.748828305162085 ], [ -122.509705464552383, 37.748859910397449 ], [ -122.509704608248597, 37.748892202061995 ], [ -122.50970373303835, 37.748923807577505 ], [ -122.509705738305371, 37.748997941669188 ], [ -122.508363946491727, 37.74907680068609 ], [ -122.507940323213063, 37.749101694546454 ], [ -122.507941547211104, 37.749110937340276 ], [ -122.507539948063609, 37.749128748547342 ], [ -122.50729515180268, 37.749139604462776 ], [ -122.507286878880223, 37.749139971457424 ], [ -122.50728687853443, 37.749139971463322 ], [ -122.507286886587565, 37.749140090270473 ], [ -122.507286887279179, 37.749140090258685 ], [ -122.507416228284868, 37.751003284446853 ], [ -122.506347526734444, 37.751051944046772 ], [ -122.505276576525688, 37.751093151070108 ], [ -122.504203312772219, 37.751143789774702 ], [ -122.503133002600279, 37.751190357338089 ], [ -122.502060320882052, 37.751239765057655 ], [ -122.500987488435712, 37.75128639412403 ], [ -122.499914456955352, 37.751333766429582 ], [ -122.499914122812314, 37.751333781439868 ], [ -122.49937768349335, 37.751357494487337 ], [ -122.498842248697912, 37.751381160579498 ], [ -122.498442545251379, 37.751398004902029 ], [ -122.497770416046876, 37.751426327269549 ], [ -122.497770415009455, 37.751426327287128 ], [ -122.496702184257288, 37.751476079301845 ], [ -122.49581055415868, 37.751518288226762 ], [ -122.495630257074851, 37.751526822572394 ], [ -122.49509879355503, 37.751544749172808 ], [ -122.495098259533435, 37.751544767553312 ], [ -122.49456080780611, 37.751568259028382 ], [ -122.493488045146222, 37.751613904571322 ], [ -122.492417458516726, 37.751662024433998 ], [ -122.491344845233968, 37.751710225381885 ], [ -122.490270381873529, 37.751758499707634 ], [ -122.48919356840311, 37.751806869260896 ], [ -122.488143190546495, 37.751854042116229 ], [ -122.487053067380344, 37.751903269835523 ], [ -122.48598818277614, 37.751950794949664 ], [ -122.48491485069583, 37.751998192013865 ], [ -122.483844155588841, 37.75204546291927 ], [ -122.48276958366516, 37.752092894785363 ], [ -122.48170210782861, 37.752140004119113 ], [ -122.480628878786973, 37.752187357305665 ], [ -122.479557564859533, 37.752234616335052 ], [ -122.478486061226221, 37.752281873458429 ], [ -122.4774149778289, 37.752329102778496 ], [ -122.476292240229284, 37.752378599147249 ], [ -122.476292239846927, 37.752378597780194 ], [ -122.476291890478677, 37.752378612978674 ], [ -122.476291890529794, 37.752378614900692 ], [ -122.475276421588944, 37.752423947680597 ], [ -122.474740669236724, 37.752447861779451 ], [ -122.474205182950101, 37.752471761013865 ], [ -122.473133075589757, 37.752519603580488 ], [ -122.472007574280582, 37.752569817871482 ], [ -122.470907529168414, 37.752615836450325 ], [ -122.471122146869178, 37.753216025593119 ], [ -122.471174197654705, 37.753356133265093 ], [ -122.471187692098596, 37.753493865266243 ], [ -122.471190660490961, 37.753605743703318 ], [ -122.471171093123701, 37.753733616626192 ], [ -122.471132268263645, 37.753877430013475 ], [ -122.471079638048607, 37.753995444111091 ], [ -122.471036498728921, 37.754100284913058 ], [ -122.471016495996267, 37.754217122306045 ], [ -122.471019321832557, 37.754265617625428 ], [ -122.471049094699751, 37.75451479556704 ], [ -122.471016758783364, 37.754797170870887 ], [ -122.470916907310823, 37.75477064959378 ], [ -122.470428100059209, 37.754750285613063 ], [ -122.470075601814969, 37.754705621480454 ], [ -122.470018818714578, 37.754692394187302 ], [ -122.469719537880266, 37.754630546382018 ], [ -122.469359681800768, 37.754536443616175 ], [ -122.469229538348586, 37.754492641945887 ], [ -122.469187312711114, 37.754478429881637 ], [ -122.469043420308736, 37.754428685878558 ], [ -122.468949194118821, 37.754383817642378 ], [ -122.468837396357713, 37.754298754678686 ], [ -122.46875232271276, 37.754192126033097 ], [ -122.468629004224212, 37.753985873398783 ], [ -122.46853368295227, 37.753778395652951 ], [ -122.468440863346331, 37.753541228150766 ], [ -122.468335071492149, 37.753243730756957 ], [ -122.468181079371874, 37.752955569756089 ], [ -122.468031369650532, 37.75278739056494 ], [ -122.467915171465805, 37.752734664618352 ], [ -122.467804242122298, 37.752723264514827 ], [ -122.467642627702773, 37.752756208616617 ], [ -122.46660049988607, 37.752803078204508 ], [ -122.465533177566329, 37.752851071595934 ], [ -122.464462034762747, 37.752899226938901 ], [ -122.464462034791779, 37.752899228037201 ], [ -122.464462004720289, 37.752899229087859 ], [ -122.463398931733735, 37.75298135079364 ], [ -122.463398833027838, 37.752981215914545 ], [ -122.463165642273253, 37.752743295475163 ], [ -122.462772959403608, 37.752449458308092 ], [ -122.462467546932245, 37.752187424267689 ], [ -122.462176881380387, 37.751866525322576 ], [ -122.461851812215116, 37.751624201717213 ], [ -122.461621806880288, 37.751517360697065 ], [ -122.461523602837886, 37.75150356127773 ], [ -122.461357402458418, 37.751255115112428 ], [ -122.461130726036544, 37.75091814728394 ], [ -122.460646598340617, 37.749905586886342 ], [ -122.460488100882344, 37.749710225074402 ], [ -122.459910793377546, 37.749171745450226 ], [ -122.459625716264128, 37.748941671345293 ], [ -122.459200706652084, 37.748504001538066 ], [ -122.458941590023073, 37.748201275736406 ], [ -122.458816156308444, 37.748040115735854 ], [ -122.458785941599359, 37.747811900102363 ], [ -122.458856680033747, 37.7476570668547 ], [ -122.458970102890007, 37.747514391535915 ], [ -122.459174106111192, 37.747286620942795 ], [ -122.459174375277186, 37.74728632007151 ], [ -122.461381097416904, 37.745569497508143 ], [ -122.463685995946705, 37.743749409879626 ], [ -122.464736798394597, 37.743658625608425 ], [ -122.465806989998114, 37.743574050343277 ], [ -122.466043187720601, 37.743555382675872 ], [ -122.4668594971902, 37.743490862582995 ], [ -122.467747743753378, 37.743412622582262 ], [ -122.468561098363182, 37.741503345390441 ], [ -122.468671688881855, 37.741487738762387 ], [ -122.46903011455143, 37.741472060437133 ], [ -122.470104939284042, 37.741425112172415 ], [ -122.471225939871744, 37.741383106823285 ], [ -122.471094271054184, 37.739515149668783 ], [ -122.470962730039105, 37.737648904688974 ], [ -122.472088826157801, 37.737598476381557 ], [ -122.473161338869033, 37.737550437503423 ], [ -122.47327754880429, 37.737518149435381 ], [ -122.474232714891599, 37.737476308128976 ], [ -122.475288554960258, 37.737454742960537 ], [ -122.476368270747585, 37.737407342172453 ], [ -122.477443897267278, 37.737360110526431 ], [ -122.478500149938654, 37.73731300537402 ], [ -122.479601690542523, 37.737266045133403 ], [ -122.480654887744791, 37.73721905491567 ], [ -122.481727269492282, 37.73717192680251 ], [ -122.484981330342137, 37.737106613405395 ], [ -122.485055057260084, 37.737081691563745 ], [ -122.485398323256604, 37.736886930845941 ], [ -122.485767077957547, 37.736757243866982 ], [ -122.486239320534182, 37.736758103009961 ], [ -122.486865148034397, 37.736893072836374 ], [ -122.487473746906744, 37.73696000969079 ], [ -122.487883946457515, 37.736972903025247 ], [ -122.488261361358497, 37.736979897727672 ], [ -122.488518054177234, 37.737001890327612 ], [ -122.488933343471572, 37.73715804150379 ], [ -122.48917282500021, 37.737387715271872 ], [ -122.489310346380378, 37.737544144541232 ], [ -122.489559638156635, 37.737725144708122 ], [ -122.489794342484018, 37.737821521499782 ], [ -122.489970938868055, 37.737956983380037 ], [ -122.490364187143001, 37.737929559098433 ], [ -122.490475969759899, 37.737832474268195 ], [ -122.490695166321217, 37.737732995785407 ], [ -122.490894410355324, 37.737610557460023 ], [ -122.491113859834144, 37.737397356998116 ], [ -122.491198309070924, 37.737311342176547 ], [ -122.491334899611488, 37.737293023539365 ] ], [ [ -122.459625733970427, 37.748941660612438 ], [ -122.459625856985753, 37.74894158961829 ], [ -122.459625856632712, 37.748941589349464 ], [ -122.459625733970427, 37.748941660612438 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":20,"ZIP_CODE":94114,"ID":94114},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.451366939667807, 37.758575670531805 ], [ -122.451372847861364, 37.758604122239966 ], [ -122.451553087455522, 37.759472365763493 ], [ -122.449214958651069, 37.759610853827809 ], [ -122.448576884007139, 37.759648639321185 ], [ -122.448534508559618, 37.759045234831405 ], [ -122.448080121328474, 37.759090506458826 ], [ -122.447681986744499, 37.759189835272018 ], [ -122.447394862769713, 37.759372842727622 ], [ -122.447157396221257, 37.759660681065917 ], [ -122.446952816919733, 37.760170129150154 ], [ -122.446866213158088, 37.76042156830691 ], [ -122.446579328750119, 37.76090155472 ], [ -122.446433636964471, 37.761006719141555 ], [ -122.446409895656728, 37.761094344377824 ], [ -122.44652973647915, 37.761396213495424 ], [ -122.446783403627563, 37.761781413728215 ], [ -122.446783402935864, 37.761781413739634 ], [ -122.44642928686055, 37.76181245987528 ], [ -122.446384044294348, 37.761816426422072 ], [ -122.446401427721412, 37.762069683149655 ], [ -122.446391621016517, 37.76223195154369 ], [ -122.44628722735257, 37.762310164748847 ], [ -122.446246565080784, 37.762246873735464 ], [ -122.446167833254592, 37.762219287792306 ], [ -122.445930590545728, 37.762233223779305 ], [ -122.445825769194499, 37.762264137786076 ], [ -122.445692026290132, 37.762347953618033 ], [ -122.444663866724483, 37.763326501903514 ], [ -122.44441170822752, 37.76398692869914 ], [ -122.443434935848089, 37.763875622244342 ], [ -122.443247528217242, 37.763690608015906 ], [ -122.442951036556252, 37.763677959114567 ], [ -122.44294975946913, 37.764109072128207 ], [ -122.443199827408847, 37.764468898600072 ], [ -122.443215275433289, 37.764557545459958 ], [ -122.443278634379993, 37.764726164248771 ], [ -122.443263297846215, 37.765217752592115 ], [ -122.443347278899211, 37.765332794099429 ], [ -122.443210588891787, 37.765339994614024 ], [ -122.442086687309455, 37.765324419445463 ], [ -122.441931912880605, 37.765295099009755 ], [ -122.441241683591315, 37.765270858517731 ], [ -122.439501839688162, 37.766575524599709 ], [ -122.438555364477878, 37.766297386980668 ], [ -122.438386133953244, 37.766664738151036 ], [ -122.438291383601225, 37.766725780787596 ], [ -122.438219625977609, 37.766701399454838 ], [ -122.437879374385105, 37.76661079550852 ], [ -122.437684727134425, 37.766587115085294 ], [ -122.4374853951944, 37.766644323028956 ], [ -122.437333800177683, 37.766762171805773 ], [ -122.437288601235366, 37.766922046842083 ], [ -122.437291829491301, 37.767045826510717 ], [ -122.43729899343451, 37.767221930124791 ], [ -122.436980399947345, 37.767244348801164 ], [ -122.436478247038266, 37.767274662557512 ], [ -122.436625219679314, 37.768918977544402 ], [ -122.436588267341477, 37.76900080227221 ], [ -122.435794213398353, 37.769058453615109 ], [ -122.43489319213792, 37.769113797429938 ], [ -122.433572207534368, 37.769178369516744 ], [ -122.432464341208131, 37.769249650838944 ], [ -122.431570380896062, 37.769307161387864 ], [ -122.431356624058139, 37.76932091157898 ], [ -122.430247361256178, 37.769392261627225 ], [ -122.429905643091914, 37.769407921549679 ], [ -122.429127985682982, 37.769456128057627 ], [ -122.428991181191208, 37.769394223715665 ], [ -122.428218351470321, 37.769440923680406 ], [ -122.426683978032827, 37.769533626427062 ], [ -122.426309438735913, 37.769602597220121 ], [ -122.426902347012131, 37.769049368265463 ], [ -122.426693183304053, 37.767869018742559 ], [ -122.426693183296933, 37.76786901846797 ], [ -122.426615944414863, 37.767069730096857 ], [ -122.426572006355102, 37.766615035704866 ], [ -122.426538465047457, 37.766267922745747 ], [ -122.426518991136163, 37.766066400051031 ], [ -122.426490697526233, 37.765773605772118 ], [ -122.426381708477521, 37.764645690891633 ], [ -122.426381708399177, 37.764645687871273 ], [ -122.426317477898522, 37.763970002371671 ], [ -122.426228478902843, 37.763030870557735 ], [ -122.426224290129298, 37.762962298008539 ], [ -122.426204067323269, 37.762631239367813 ], [ -122.426191463523168, 37.762538363286502 ], [ -122.426149283375466, 37.762227539381186 ], [ -122.426149283368346, 37.762227539106618 ], [ -122.426145984060597, 37.762160358437526 ], [ -122.426076501815189, 37.761427133937481 ], [ -122.426076501462219, 37.761427133668562 ], [ -122.425985721165645, 37.760498692937027 ], [ -122.425920302092379, 37.759829613405913 ], [ -122.425900090784694, 37.759619242549249 ], [ -122.425843422635126, 37.759029397589842 ], [ -122.425766807348751, 37.758226828975253 ], [ -122.425766807341631, 37.758226828700685 ], [ -122.425689459367419, 37.757429672933782 ], [ -122.42568945931761, 37.757429671011749 ], [ -122.425645855643012, 37.756979041458848 ], [ -122.425612216172169, 37.756631383038098 ], [ -122.425491892915787, 37.755387845874338 ], [ -122.425457179889037, 37.755029078716305 ], [ -122.425425666412067, 37.754703378159874 ], [ -122.425302616947704, 37.753431591109177 ], [ -122.425302616566313, 37.753431589741957 ], [ -122.425152541686245, 37.751841785894676 ], [ -122.4251525416649, 37.751841785070944 ], [ -122.425122809405835, 37.751528900123922 ], [ -122.425075700414453, 37.751033151258099 ], [ -122.424999224155329, 37.750232718354916 ], [ -122.424999224133984, 37.75023271753119 ], [ -122.424922999639648, 37.749434901505936 ], [ -122.427200037712353, 37.749295720374967 ], [ -122.429422761644645, 37.749157853016314 ], [ -122.431639579453815, 37.749028214467948 ], [ -122.433851103876819, 37.748895972089151 ], [ -122.436067172923103, 37.748762035575652 ], [ -122.438139804541592, 37.748636730271706 ], [ -122.438246126408771, 37.748664500736062 ], [ -122.440402009224243, 37.748642072742477 ], [ -122.440693299152798, 37.748639039270962 ], [ -122.4414080949674, 37.748610013081198 ], [ -122.441477149443557, 37.748591599630018 ], [ -122.441916701553239, 37.748474391279807 ], [ -122.442519008868075, 37.748183215938361 ], [ -122.442584207288078, 37.748079345098553 ], [ -122.443161821262549, 37.747504352694399 ], [ -122.443453448246288, 37.747477579218923 ], [ -122.443473512241141, 37.748002572121706 ], [ -122.443473812008847, 37.74801042178742 ], [ -122.443486020026867, 37.748345516454542 ], [ -122.443434635522365, 37.749091646853778 ], [ -122.44259888979461, 37.749156165729936 ], [ -122.442599224378554, 37.749160242994655 ], [ -122.442583534001741, 37.749266790173017 ], [ -122.442693363008104, 37.750413947729008 ], [ -122.442776988488347, 37.750697651678763 ], [ -122.442782695565214, 37.750773110847675 ], [ -122.442782889125965, 37.750775670827849 ], [ -122.442832455660607, 37.751431039472649 ], [ -122.442817470436609, 37.751454127059596 ], [ -122.442982766064986, 37.751545025906275 ], [ -122.442775383396778, 37.752377050296218 ], [ -122.442775038632988, 37.752378432471772 ], [ -122.442524333279991, 37.752382565152622 ], [ -122.442492558984341, 37.752606697266998 ], [ -122.442239114579749, 37.752829681730105 ], [ -122.442056693562165, 37.753070846058556 ], [ -122.441886398393621, 37.753365106672398 ], [ -122.441807410207034, 37.753470934450007 ], [ -122.441501225348532, 37.753721419417111 ], [ -122.441307496038533, 37.753879905149773 ], [ -122.441162634059779, 37.754090414508028 ], [ -122.44107583131526, 37.754178484324051 ], [ -122.440897310558796, 37.754492600197032 ], [ -122.440449630137792, 37.755065428273227 ], [ -122.440344935902942, 37.755227929193452 ], [ -122.440113197925641, 37.755606296679595 ], [ -122.440032113187002, 37.755796618022245 ], [ -122.440028760145466, 37.755956541681734 ], [ -122.440133892987774, 37.756422684783992 ], [ -122.440296908436025, 37.756652260712109 ], [ -122.440975109290761, 37.756855155327102 ], [ -122.441311420390406, 37.75688501757589 ], [ -122.441891917804512, 37.756707900118627 ], [ -122.442226754965375, 37.756642418026821 ], [ -122.442229654337552, 37.756643729156551 ], [ -122.442234277014876, 37.756645819486522 ], [ -122.442241604390318, 37.756649132680884 ], [ -122.442338618241578, 37.756692996803793 ], [ -122.442524865881779, 37.756832757000566 ], [ -122.442618313376656, 37.756939880143335 ], [ -122.442822513313288, 37.757228212937811 ], [ -122.442914855315252, 37.757360460271151 ], [ -122.443513115466942, 37.757015898193345 ], [ -122.44359095735247, 37.756973190948777 ], [ -122.443933292768804, 37.756707199362893 ], [ -122.44469570432544, 37.75722410905459 ], [ -122.444812173070659, 37.757253442709903 ], [ -122.444964327713464, 37.757272877138014 ], [ -122.444969690519684, 37.757271714308636 ], [ -122.444978623456407, 37.757199356159234 ], [ -122.44531471170977, 37.756562327523987 ], [ -122.445646089047287, 37.756449470405634 ], [ -122.445946403378542, 37.756413329216429 ], [ -122.446950354992993, 37.75655039856936 ], [ -122.446777335972257, 37.756299129719707 ], [ -122.446339300582281, 37.75591138652841 ], [ -122.446125719389443, 37.755803738269194 ], [ -122.445929097870021, 37.755830086405965 ], [ -122.445464111666666, 37.75598407248431 ], [ -122.445268371613437, 37.755920565713375 ], [ -122.445221502655059, 37.755736527336694 ], [ -122.445347807952828, 37.755618935076164 ], [ -122.44578153535943, 37.755506535020608 ], [ -122.446152412695255, 37.755464475455021 ], [ -122.446560265846969, 37.755346452369793 ], [ -122.446809203706863, 37.755349269900414 ], [ -122.447004077099621, 37.75543789136227 ], [ -122.447530410096462, 37.755821232451311 ], [ -122.447682922964361, 37.755868400984937 ], [ -122.447851945395087, 37.755820566236046 ], [ -122.447961600338971, 37.755673235404537 ], [ -122.44794315940031, 37.755531524105997 ], [ -122.447698643463639, 37.754829811793044 ], [ -122.447375994048841, 37.754217662794012 ], [ -122.44720983000947, 37.754042891582813 ], [ -122.447450790660298, 37.753903429730649 ], [ -122.447546138718849, 37.753815754469287 ], [ -122.447656226877982, 37.753773037573623 ], [ -122.447842792647691, 37.753750582173005 ], [ -122.447974401539952, 37.753701051764345 ], [ -122.448075396501437, 37.753621892463592 ], [ -122.448145439689242, 37.753500194902855 ], [ -122.448141772510084, 37.753360343523973 ], [ -122.448073149249666, 37.75322587034826 ], [ -122.44795103635677, 37.753120264118444 ], [ -122.447707056312382, 37.752702854501173 ], [ -122.447536095260375, 37.752481955041475 ], [ -122.447740900123705, 37.752288718875811 ], [ -122.448209648267067, 37.752018216178747 ], [ -122.448345547044426, 37.751925564530218 ], [ -122.44842671498688, 37.751814445339285 ], [ -122.448475010516702, 37.751690954837258 ], [ -122.448479024859196, 37.751533756090204 ], [ -122.448535342970942, 37.751302507611712 ], [ -122.448730034866358, 37.750901860878599 ], [ -122.448837529908516, 37.750828266590112 ], [ -122.449185119457937, 37.750637403226534 ], [ -122.449304804219054, 37.750547171075254 ], [ -122.449423303862474, 37.750411755760133 ], [ -122.449497860416159, 37.750255542747738 ], [ -122.449681795644992, 37.749823083722987 ], [ -122.449716548818643, 37.74953978039732 ], [ -122.449640314591349, 37.749314114769071 ], [ -122.449543092528529, 37.749181799119881 ], [ -122.449400479496887, 37.749106035740034 ], [ -122.449245295819139, 37.74910598186397 ], [ -122.449051151579454, 37.749182809813966 ], [ -122.448885055528038, 37.749338875396077 ], [ -122.448264206892432, 37.750168319632976 ], [ -122.448133451017753, 37.75025012344306 ], [ -122.447957681483132, 37.750270249048668 ], [ -122.447060946228802, 37.749998786557995 ], [ -122.446924377309614, 37.749962298069669 ], [ -122.445803050365413, 37.749296324298363 ], [ -122.445657849639957, 37.749137284365275 ], [ -122.445634816186484, 37.748982685093061 ], [ -122.445696556781456, 37.748854668447294 ], [ -122.445900228666389, 37.74876090078547 ], [ -122.446146312903167, 37.748733159469879 ], [ -122.446321171479013, 37.748781931740275 ], [ -122.446513423639288, 37.748873466020136 ], [ -122.44714942379963, 37.749338660628091 ], [ -122.447347720899344, 37.749453771264633 ], [ -122.447558108041335, 37.749512717159995 ], [ -122.447695695115499, 37.749484613169258 ], [ -122.447794029968421, 37.749407650434719 ], [ -122.448271537838281, 37.748586113005615 ], [ -122.448649270998317, 37.747987545863559 ], [ -122.44873793021948, 37.747816100622572 ], [ -122.449048273698679, 37.747075129958219 ], [ -122.449145702641545, 37.746860421020024 ], [ -122.449310056560847, 37.746715637417083 ], [ -122.44944655863172, 37.746660402786539 ], [ -122.449658366925917, 37.746790485969299 ], [ -122.449829421216677, 37.7468448367704 ], [ -122.449121036812883, 37.748486108456696 ], [ -122.450376213037472, 37.748836617132255 ], [ -122.450378440966844, 37.74915691493446 ], [ -122.450359832675659, 37.74936931962273 ], [ -122.450278577377304, 37.749812923634934 ], [ -122.450120041484055, 37.750377135131941 ], [ -122.450039762259507, 37.750789548444018 ], [ -122.450020192405731, 37.751134853236394 ], [ -122.449818467802629, 37.751170814837231 ], [ -122.44965771853829, 37.751260239674203 ], [ -122.449537611901278, 37.75139818204417 ], [ -122.449421587723563, 37.751919823116488 ], [ -122.449322640472062, 37.752393440459898 ], [ -122.449260062142201, 37.752640188644804 ], [ -122.449222626079077, 37.752826418335388 ], [ -122.44920235250531, 37.75298761609767 ], [ -122.449195253073, 37.753141525321581 ], [ -122.44921167048372, 37.753342773463253 ], [ -122.449250446345715, 37.75354718765756 ], [ -122.449338624202724, 37.75376669417966 ], [ -122.449567372082669, 37.754139767157625 ], [ -122.449714539832698, 37.754072287920813 ], [ -122.45001235604478, 37.753935733822416 ], [ -122.450708861489431, 37.753616367449496 ], [ -122.450797400040912, 37.753766170392268 ], [ -122.450940567642817, 37.75387933530601 ], [ -122.451110760292124, 37.753931215767722 ], [ -122.451360262589361, 37.75396141724395 ], [ -122.451594424355719, 37.753898832915297 ], [ -122.452570281407503, 37.75354206761132 ], [ -122.452736650019233, 37.753666208179531 ], [ -122.453410821175368, 37.753818557980566 ], [ -122.454229599548796, 37.754062132001749 ], [ -122.454309928578283, 37.75416682276385 ], [ -122.454154362960978, 37.755029376887862 ], [ -122.454089386335994, 37.755285428850698 ], [ -122.453643273006946, 37.755857139298925 ], [ -122.453512429965073, 37.756126075057203 ], [ -122.453345167458252, 37.756697980973108 ], [ -122.453533591760348, 37.756819465356074 ], [ -122.453617386887871, 37.756948631540013 ], [ -122.453769459328285, 37.75746785416225 ], [ -122.453652871332849, 37.757570195093017 ], [ -122.453594261080696, 37.757621283813904 ], [ -122.453326709060633, 37.757812928758618 ], [ -122.453317408957801, 37.757819578594621 ], [ -122.452876092298638, 37.758073671104697 ], [ -122.45283476350059, 37.758097464572913 ], [ -122.45229781656198, 37.758277073170099 ], [ -122.452047941226652, 37.758343705002019 ], [ -122.451408535854284, 37.758561502025017 ], [ -122.45136693942257, 37.758575661196261 ], [ -122.451366939667807, 37.758575670531805 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":21,"ZIP_CODE":94131,"ID":94131},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.453769459328285, 37.75746785416225 ], [ -122.453617386887871, 37.756948631540013 ], [ -122.453533591760348, 37.756819465356074 ], [ -122.453345167458252, 37.756697980973108 ], [ -122.453512429965073, 37.756126075057203 ], [ -122.453643273006946, 37.755857139298925 ], [ -122.454089386335994, 37.755285428850698 ], [ -122.454154362960978, 37.755029376887862 ], [ -122.454309928578283, 37.75416682276385 ], [ -122.454229599548796, 37.754062132001749 ], [ -122.453410821175368, 37.753818557980566 ], [ -122.452736650019233, 37.753666208179531 ], [ -122.452570281407503, 37.75354206761132 ], [ -122.451594424355719, 37.753898832915297 ], [ -122.451360262589361, 37.75396141724395 ], [ -122.451110760292124, 37.753931215767722 ], [ -122.450940567642817, 37.75387933530601 ], [ -122.450797400040912, 37.753766170392268 ], [ -122.450708861489431, 37.753616367449496 ], [ -122.45001235604478, 37.753935733822416 ], [ -122.449714539832698, 37.754072287920813 ], [ -122.449567372082669, 37.754139767157625 ], [ -122.449338624202724, 37.75376669417966 ], [ -122.449250446345715, 37.75354718765756 ], [ -122.44921167048372, 37.753342773463253 ], [ -122.449195253073, 37.753141525321581 ], [ -122.44920235250531, 37.75298761609767 ], [ -122.449222626079077, 37.752826418335388 ], [ -122.449260062142201, 37.752640188644804 ], [ -122.449322640472062, 37.752393440459898 ], [ -122.449421587723563, 37.751919823116488 ], [ -122.449537611901278, 37.75139818204417 ], [ -122.44965771853829, 37.751260239674203 ], [ -122.449818467802629, 37.751170814837231 ], [ -122.450020192405731, 37.751134853236394 ], [ -122.450039762259507, 37.750789548444018 ], [ -122.450120041484055, 37.750377135131941 ], [ -122.450278577377304, 37.749812923634934 ], [ -122.450359832675659, 37.74936931962273 ], [ -122.450378440966844, 37.74915691493446 ], [ -122.450376213037472, 37.748836617132255 ], [ -122.449121036812883, 37.748486108456696 ], [ -122.449829421216677, 37.7468448367704 ], [ -122.449658366925917, 37.746790485969299 ], [ -122.44944655863172, 37.746660402786539 ], [ -122.449310056560847, 37.746715637417083 ], [ -122.449145702641545, 37.746860421020024 ], [ -122.449048273698679, 37.747075129958219 ], [ -122.44873793021948, 37.747816100622572 ], [ -122.448649270998317, 37.747987545863559 ], [ -122.448271537838281, 37.748586113005615 ], [ -122.447794029968421, 37.749407650434719 ], [ -122.447695695115499, 37.749484613169258 ], [ -122.447558108041335, 37.749512717159995 ], [ -122.447347720899344, 37.749453771264633 ], [ -122.44714942379963, 37.749338660628091 ], [ -122.446513423639288, 37.748873466020136 ], [ -122.446321171479013, 37.748781931740275 ], [ -122.446146312903167, 37.748733159469879 ], [ -122.445900228666389, 37.74876090078547 ], [ -122.445696556781456, 37.748854668447294 ], [ -122.445634816186484, 37.748982685093061 ], [ -122.445657849639957, 37.749137284365275 ], [ -122.445803050365413, 37.749296324298363 ], [ -122.446924377309614, 37.749962298069669 ], [ -122.447060946228802, 37.749998786557995 ], [ -122.447957681483132, 37.750270249048668 ], [ -122.448133451017753, 37.75025012344306 ], [ -122.448264206892432, 37.750168319632976 ], [ -122.448885055528038, 37.749338875396077 ], [ -122.449051151579454, 37.749182809813966 ], [ -122.449245295819139, 37.74910598186397 ], [ -122.449400479496887, 37.749106035740034 ], [ -122.449543092528529, 37.749181799119881 ], [ -122.449640314591349, 37.749314114769071 ], [ -122.449716548818643, 37.74953978039732 ], [ -122.449681795644992, 37.749823083722987 ], [ -122.449497860416159, 37.750255542747738 ], [ -122.449423303862474, 37.750411755760133 ], [ -122.449304804219054, 37.750547171075254 ], [ -122.449185119457937, 37.750637403226534 ], [ -122.448837529908516, 37.750828266590112 ], [ -122.448730034866358, 37.750901860878599 ], [ -122.448535342970942, 37.751302507611712 ], [ -122.448479024859196, 37.751533756090204 ], [ -122.448475010516702, 37.751690954837258 ], [ -122.44842671498688, 37.751814445339285 ], [ -122.448345547044426, 37.751925564530218 ], [ -122.448209648267067, 37.752018216178747 ], [ -122.447740900123705, 37.752288718875811 ], [ -122.447536095260375, 37.752481955041475 ], [ -122.447707056312382, 37.752702854501173 ], [ -122.44795103635677, 37.753120264118444 ], [ -122.448073149249666, 37.75322587034826 ], [ -122.448141772510084, 37.753360343523973 ], [ -122.448145439689242, 37.753500194902855 ], [ -122.448075396501437, 37.753621892463592 ], [ -122.447974401539952, 37.753701051764345 ], [ -122.447842792647691, 37.753750582173005 ], [ -122.447656226877982, 37.753773037573623 ], [ -122.447546138718849, 37.753815754469287 ], [ -122.447450790660298, 37.753903429730649 ], [ -122.44720983000947, 37.754042891582813 ], [ -122.447375994048841, 37.754217662794012 ], [ -122.447698643463639, 37.754829811793044 ], [ -122.44794315940031, 37.755531524105997 ], [ -122.447961600338971, 37.755673235404537 ], [ -122.447851945395087, 37.755820566236046 ], [ -122.447682922964361, 37.755868400984937 ], [ -122.447530410096462, 37.755821232451311 ], [ -122.447004077099621, 37.75543789136227 ], [ -122.446809203706863, 37.755349269900414 ], [ -122.446560265846969, 37.755346452369793 ], [ -122.446152412695255, 37.755464475455021 ], [ -122.44578153535943, 37.755506535020608 ], [ -122.445347807952828, 37.755618935076164 ], [ -122.445221502655059, 37.755736527336694 ], [ -122.445268371613437, 37.755920565713375 ], [ -122.445464111666666, 37.75598407248431 ], [ -122.445929097870021, 37.755830086405965 ], [ -122.446125719389443, 37.755803738269194 ], [ -122.446339300582281, 37.75591138652841 ], [ -122.446777335972257, 37.756299129719707 ], [ -122.446950354992993, 37.75655039856936 ], [ -122.445946403378542, 37.756413329216429 ], [ -122.445646089047287, 37.756449470405634 ], [ -122.44531471170977, 37.756562327523987 ], [ -122.444978623456407, 37.757199356159234 ], [ -122.444969690519684, 37.757271714308636 ], [ -122.444964327713464, 37.757272877138014 ], [ -122.444812173070659, 37.757253442709903 ], [ -122.44469570432544, 37.75722410905459 ], [ -122.443933292768804, 37.756707199362893 ], [ -122.44359095735247, 37.756973190948777 ], [ -122.443513115466942, 37.757015898193345 ], [ -122.442914855315252, 37.757360460271151 ], [ -122.442822513313288, 37.757228212937811 ], [ -122.442618313376656, 37.756939880143335 ], [ -122.442524865881779, 37.756832757000566 ], [ -122.442338618241578, 37.756692996803793 ], [ -122.442241604390318, 37.756649132680884 ], [ -122.442234277014876, 37.756645819486522 ], [ -122.442229654337552, 37.756643729156551 ], [ -122.442226754965375, 37.756642418026821 ], [ -122.441891917804512, 37.756707900118627 ], [ -122.441311420390406, 37.75688501757589 ], [ -122.440975109290761, 37.756855155327102 ], [ -122.440296908436025, 37.756652260712109 ], [ -122.440133892987774, 37.756422684783992 ], [ -122.440028760145466, 37.755956541681734 ], [ -122.440032113187002, 37.755796618022245 ], [ -122.440113197925641, 37.755606296679595 ], [ -122.440344935902942, 37.755227929193452 ], [ -122.440449630137792, 37.755065428273227 ], [ -122.440897310558796, 37.754492600197032 ], [ -122.44107583131526, 37.754178484324051 ], [ -122.441162634059779, 37.754090414508028 ], [ -122.441307496038533, 37.753879905149773 ], [ -122.441501225348532, 37.753721419417111 ], [ -122.441807410207034, 37.753470934450007 ], [ -122.441886398393621, 37.753365106672398 ], [ -122.442056693562165, 37.753070846058556 ], [ -122.442239114579749, 37.752829681730105 ], [ -122.442492558984341, 37.752606697266998 ], [ -122.442524333279991, 37.752382565152622 ], [ -122.442775038632988, 37.752378432471772 ], [ -122.442775383396778, 37.752377050296218 ], [ -122.442982766064986, 37.751545025906275 ], [ -122.442817470436609, 37.751454127059596 ], [ -122.442832455660607, 37.751431039472649 ], [ -122.442782889125965, 37.750775670827849 ], [ -122.442782695565214, 37.750773110847675 ], [ -122.442776988488347, 37.750697651678763 ], [ -122.442693363008104, 37.750413947729008 ], [ -122.442583534001741, 37.749266790173017 ], [ -122.442599224378554, 37.749160242994655 ], [ -122.44259888979461, 37.749156165729936 ], [ -122.443434635522365, 37.749091646853778 ], [ -122.443486020026867, 37.748345516454542 ], [ -122.443473812008847, 37.74801042178742 ], [ -122.443473512241141, 37.748002572121706 ], [ -122.443453448246288, 37.747477579218923 ], [ -122.443161821262549, 37.747504352694399 ], [ -122.442584207288078, 37.748079345098553 ], [ -122.442519008868075, 37.748183215938361 ], [ -122.441916701553239, 37.748474391279807 ], [ -122.441477149443557, 37.748591599630018 ], [ -122.4414080949674, 37.748610013081198 ], [ -122.440693299152798, 37.748639039270962 ], [ -122.440402009224243, 37.748642072742477 ], [ -122.438246126408771, 37.748664500736062 ], [ -122.438139804541592, 37.748636730271706 ], [ -122.436067172923103, 37.748762035575652 ], [ -122.433851103876819, 37.748895972089151 ], [ -122.431639579453815, 37.749028214467948 ], [ -122.429422761644645, 37.749157853016314 ], [ -122.427200037712353, 37.749295720374967 ], [ -122.424922999639648, 37.749434901505936 ], [ -122.424845024283727, 37.748632587554638 ], [ -122.424845018024243, 37.748632519532975 ], [ -122.424841979744244, 37.748600757493776 ], [ -122.424768284589831, 37.747830340365347 ], [ -122.424768280884535, 37.747830304166378 ], [ -122.424689793548367, 37.747033402901096 ], [ -122.424602793343411, 37.746241400149849 ], [ -122.424538964982034, 37.745435717069675 ], [ -122.424459208282684, 37.744635998834639 ], [ -122.424384862816794, 37.743838216035606 ], [ -122.424309369085989, 37.7430347552692 ], [ -122.424233277120777, 37.742236301639601 ], [ -122.424233272287097, 37.742236301993223 ], [ -122.424233472639315, 37.742235957277522 ], [ -122.424233478510288, 37.742235956906946 ], [ -122.424301394893192, 37.742119600447609 ], [ -122.42417135664968, 37.740713439585669 ], [ -122.42413709700044, 37.740335654620864 ], [ -122.424258152196032, 37.739934707389949 ], [ -122.42414746787631, 37.739869414698418 ], [ -122.424147154546787, 37.739869230001858 ], [ -122.424147154179678, 37.739869229183775 ], [ -122.424063599996956, 37.739784297520274 ], [ -122.424284283357963, 37.738949691036076 ], [ -122.424531564221411, 37.738368292265967 ], [ -122.424696469855888, 37.738101223886673 ], [ -122.424711669489241, 37.738076607801148 ], [ -122.424904804743889, 37.737763817504508 ], [ -122.425110714349969, 37.737550673136937 ], [ -122.425230653676863, 37.737426519232308 ], [ -122.425439441891498, 37.737210392933726 ], [ -122.425832974995387, 37.736873263301263 ], [ -122.426500890836181, 37.73630106743056 ], [ -122.426544994076067, 37.736269396547655 ], [ -122.42729729676671, 37.735729149898575 ], [ -122.427738169173168, 37.735412543347451 ], [ -122.42783624298761, 37.735347761815902 ], [ -122.428436951461066, 37.734950968784666 ], [ -122.42843713263963, 37.734951046304573 ], [ -122.428766264762999, 37.73481932892178 ], [ -122.429365174143101, 37.734579643964238 ], [ -122.429606994304805, 37.734482866043706 ], [ -122.429797927680781, 37.734406452684077 ], [ -122.429799382942633, 37.734405632509876 ], [ -122.430400796753801, 37.734118700718604 ], [ -122.430928172484656, 37.733867087971888 ], [ -122.430931197463138, 37.733865940717834 ], [ -122.43132522808267, 37.733716495194997 ], [ -122.432572047381726, 37.733243596430682 ], [ -122.432720773871381, 37.733187185661393 ], [ -122.434440716858973, 37.732534804028113 ], [ -122.434512093568429, 37.732323526771246 ], [ -122.434644432402948, 37.732322139093768 ], [ -122.434823956379304, 37.732249430441868 ], [ -122.434989951388332, 37.732296516038524 ], [ -122.434992781477959, 37.732295287547394 ], [ -122.435457687984979, 37.732093484109448 ], [ -122.436668162612392, 37.731543298105045 ], [ -122.436678949019353, 37.731538395224071 ], [ -122.436835967120587, 37.731467212874229 ], [ -122.437166749161392, 37.731365897534992 ], [ -122.438692929843569, 37.730737998359416 ], [ -122.439686065703896, 37.730325720705899 ], [ -122.43969146797258, 37.730323477880063 ], [ -122.440664990612632, 37.729919329476168 ], [ -122.442010214558891, 37.729910949382834 ], [ -122.442006614261629, 37.729375267903364 ], [ -122.442082956691792, 37.729308363921405 ], [ -122.442595296877187, 37.729101680603421 ], [ -122.442954953118544, 37.728915555981267 ], [ -122.443973112888827, 37.728379877183251 ], [ -122.444131311025359, 37.72831838217401 ], [ -122.444276984301908, 37.728261755504967 ], [ -122.44427751391413, 37.728322242080615 ], [ -122.444284269547836, 37.729093639959018 ], [ -122.444291303797655, 37.729896860703782 ], [ -122.444298409699798, 37.730708221303239 ], [ -122.444294941941365, 37.731069863889161 ], [ -122.444288854528963, 37.731568915105107 ], [ -122.444299518643774, 37.732277163251723 ], [ -122.44431434932487, 37.732346901474607 ], [ -122.444320397855094, 37.733087687518228 ], [ -122.444320121334613, 37.733811072362919 ], [ -122.445605378551107, 37.733800711254226 ], [ -122.445782219446897, 37.733850288395629 ], [ -122.445695180894745, 37.733970768223749 ], [ -122.445385609625191, 37.734245207403205 ], [ -122.445350300553969, 37.734322189420951 ], [ -122.445353637361492, 37.734548793463254 ], [ -122.444336617762318, 37.734557437927307 ], [ -122.442971182760076, 37.734564427784264 ], [ -122.44298838327488, 37.734915120161688 ], [ -122.443241645458286, 37.734935120886668 ], [ -122.443498916758756, 37.735041781619209 ], [ -122.443868794328736, 37.73522293273804 ], [ -122.444190291728404, 37.735407445883219 ], [ -122.444280987817251, 37.735484218369663 ], [ -122.444414926545633, 37.735547154436588 ], [ -122.444456723960371, 37.735604611251425 ], [ -122.444478073435704, 37.735720552668923 ], [ -122.444433832419023, 37.736070356056409 ], [ -122.444405709994072, 37.736218559056141 ], [ -122.444306066715512, 37.736409368208768 ], [ -122.444187688286519, 37.736528330103852 ], [ -122.444038854214782, 37.736575290313169 ], [ -122.443842427221611, 37.736579809812575 ], [ -122.443683487927487, 37.73653803376142 ], [ -122.443602235926093, 37.736502583404238 ], [ -122.442657322787326, 37.737118881702763 ], [ -122.442488947503193, 37.737289169592358 ], [ -122.442421017736137, 37.737438198043598 ], [ -122.442403843641571, 37.737639851367689 ], [ -122.44244617419956, 37.737799536516135 ], [ -122.442579349780331, 37.738171569110513 ], [ -122.442625226229453, 37.738313911390271 ], [ -122.442627783322195, 37.738564600951854 ], [ -122.44250398997913, 37.739238469269011 ], [ -122.442525191527608, 37.739448400155375 ], [ -122.442597107319372, 37.739547858254923 ], [ -122.44271760477325, 37.739682237717481 ], [ -122.442856748556963, 37.739767263698369 ], [ -122.443019593631774, 37.739814475654143 ], [ -122.44341918472557, 37.739902333376541 ], [ -122.443694223373313, 37.739971345925731 ], [ -122.443922038304507, 37.740088462716592 ], [ -122.444098337188322, 37.740234069945657 ], [ -122.444209640252396, 37.740380617798955 ], [ -122.444366170223589, 37.740575544006177 ], [ -122.444518249198694, 37.740692998244214 ], [ -122.444681667799003, 37.740793092051724 ], [ -122.444911120433531, 37.740872114678645 ], [ -122.445195592772691, 37.740920623913645 ], [ -122.445523457193502, 37.740972470791057 ], [ -122.445897881975142, 37.741116602917764 ], [ -122.445964326755799, 37.741198730714288 ], [ -122.445964300022951, 37.741198753406074 ], [ -122.44605943275991, 37.741274575873817 ], [ -122.44609965968975, 37.741357693405078 ], [ -122.446156199006268, 37.741535311478742 ], [ -122.44619443459527, 37.741872554265036 ], [ -122.446256735689062, 37.742072052701658 ], [ -122.446323687641325, 37.742184944882247 ], [ -122.446410971977912, 37.742281706494659 ], [ -122.446516770315029, 37.742358933848621 ], [ -122.446657325560608, 37.742442453734959 ], [ -122.446840940400392, 37.742519081676662 ], [ -122.447110638216571, 37.742580552169777 ], [ -122.447384659150103, 37.742608987228614 ], [ -122.44848892294759, 37.742704730693937 ], [ -122.448820428983325, 37.742748693538836 ], [ -122.44913731277687, 37.742828607669701 ], [ -122.449355958412127, 37.74292182098899 ], [ -122.449582834428256, 37.743065029012413 ], [ -122.449790244582587, 37.743257317336237 ], [ -122.449918612648133, 37.7432716748716 ], [ -122.450592179132485, 37.744090792307063 ], [ -122.450586742649079, 37.744213121547148 ], [ -122.451624634588612, 37.745534387540218 ], [ -122.45169226258335, 37.745606748366605 ], [ -122.45181666119403, 37.745671246259803 ], [ -122.451828632556612, 37.745671851179097 ], [ -122.452091117231191, 37.74568511552728 ], [ -122.45222754649042, 37.74569200904012 ], [ -122.452386953750349, 37.745691424670198 ], [ -122.453376023619995, 37.74568779337109 ], [ -122.453495886255311, 37.745691252478657 ], [ -122.453645157964232, 37.745695560010326 ], [ -122.453916002908102, 37.745699915076791 ], [ -122.453916429980183, 37.745699922279499 ], [ -122.454184426826714, 37.745845539203287 ], [ -122.454664096869323, 37.746106168082655 ], [ -122.454664097215115, 37.746106168076913 ], [ -122.455466732538028, 37.746327980692172 ], [ -122.455687935660293, 37.746380796419501 ], [ -122.456314708164584, 37.746530446031059 ], [ -122.457089836487938, 37.746682896092409 ], [ -122.457166741019165, 37.746698021157933 ], [ -122.457301186299645, 37.746714064689691 ], [ -122.457457161051892, 37.746732677593577 ], [ -122.457582024204598, 37.746744476612157 ], [ -122.457949639713704, 37.746779214661537 ], [ -122.458499844031735, 37.746781514247793 ], [ -122.458509634961302, 37.746778882011192 ], [ -122.458610345848541, 37.746751806518411 ], [ -122.45872851739027, 37.746755429911865 ], [ -122.459174375277186, 37.74728632007151 ], [ -122.459174106111192, 37.747286620942795 ], [ -122.458970102890007, 37.747514391535915 ], [ -122.458856680033747, 37.7476570668547 ], [ -122.458785941599359, 37.747811900102363 ], [ -122.458816156308444, 37.748040115735854 ], [ -122.458941590023073, 37.748201275736406 ], [ -122.459200706652084, 37.748504001538066 ], [ -122.459625716264128, 37.748941671345293 ], [ -122.459724182852014, 37.749021140146965 ], [ -122.459910557162914, 37.749171866124314 ], [ -122.460150106375522, 37.749394963907797 ], [ -122.460488100882344, 37.749710225074402 ], [ -122.460574698392477, 37.749816963786891 ], [ -122.460646032705213, 37.749905429557089 ], [ -122.460872188804359, 37.750377416930355 ], [ -122.461130726036544, 37.75091814728394 ], [ -122.461357402458418, 37.751255115112428 ], [ -122.461523490818323, 37.75150339365527 ], [ -122.461523490133942, 37.751503393941363 ], [ -122.461523602837886, 37.75150356127773 ], [ -122.461621806880288, 37.751517360697065 ], [ -122.461851812215116, 37.751624201717213 ], [ -122.462014174664134, 37.751745235464952 ], [ -122.462176783557467, 37.751866685725204 ], [ -122.462467214248704, 37.7521873638808 ], [ -122.462572755978741, 37.752277690485144 ], [ -122.462772959403608, 37.752449458308092 ], [ -122.463129733530764, 37.752716425489766 ], [ -122.463165176689103, 37.75274298458443 ], [ -122.463398089008777, 37.752981523058104 ], [ -122.463399006031565, 37.752981452291863 ], [ -122.463640406958334, 37.753310851043111 ], [ -122.463777683069083, 37.753601657228067 ], [ -122.463842129576008, 37.753808596342253 ], [ -122.463838893966539, 37.75414750585891 ], [ -122.463722821262465, 37.754601920791259 ], [ -122.46367889740506, 37.754738571878264 ], [ -122.463627289771182, 37.754788065181785 ], [ -122.463580718915097, 37.755014148901829 ], [ -122.463554499932727, 37.755298102249476 ], [ -122.463651620775778, 37.756677450683235 ], [ -122.463781528402038, 37.758538181378015 ], [ -122.463911891482155, 37.760405344350922 ], [ -122.46284191307069, 37.760452254741963 ], [ -122.461770200794135, 37.760499231230455 ], [ -122.461770397151241, 37.760502041661596 ], [ -122.460684658382874, 37.760546523892096 ], [ -122.46084509456081, 37.762627108799968 ], [ -122.460842964058216, 37.762627642539876 ], [ -122.459790374597731, 37.762925938047687 ], [ -122.457827081738984, 37.763482288038738 ], [ -122.45765013969168, 37.76353311613984 ], [ -122.456669912105653, 37.763814688946653 ], [ -122.455781065686594, 37.764070070210742 ], [ -122.455466091062405, 37.764160565952579 ], [ -122.454217265424234, 37.764310945798535 ], [ -122.454179864833876, 37.763912200042988 ], [ -122.454845151642289, 37.763732313486969 ], [ -122.454945541962573, 37.76366305305779 ], [ -122.454946081907835, 37.7631787014639 ], [ -122.454009611320302, 37.762667869264533 ], [ -122.453744673977482, 37.761878784498755 ], [ -122.453114639516684, 37.762361563728888 ], [ -122.45351591398105, 37.764395394431268 ], [ -122.452569575903098, 37.764509334437378 ], [ -122.452569519449398, 37.764509056008684 ], [ -122.452400386663143, 37.763669233221897 ], [ -122.45223333012629, 37.762842423991209 ], [ -122.452096203587132, 37.762166887302627 ], [ -122.451957007208804, 37.761478336720671 ], [ -122.45155310706329, 37.759472203369178 ], [ -122.45136693770776, 37.758575661774039 ], [ -122.451408535854284, 37.758561502025017 ], [ -122.452047941226652, 37.758343705002019 ], [ -122.45229781656198, 37.758277073170099 ], [ -122.45283476350059, 37.758097464572913 ], [ -122.452876092298638, 37.758073671104697 ], [ -122.453317408957801, 37.757819578594621 ], [ -122.453326709060633, 37.757812928758618 ], [ -122.453652871332849, 37.757570195093017 ], [ -122.453769459328285, 37.75746785416225 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":22,"ZIP_CODE":94122,"ID":94122},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.463399006031565, 37.752981452291863 ], [ -122.464461497345539, 37.752899248258529 ], [ -122.464461497323754, 37.752899247434819 ], [ -122.464462034791779, 37.752899228037201 ], [ -122.464462034762747, 37.752899226938901 ], [ -122.465533177566329, 37.752851071595934 ], [ -122.46660049988607, 37.752803078204508 ], [ -122.467642627702773, 37.752756208616617 ], [ -122.467804242122298, 37.752723264514827 ], [ -122.467915171465805, 37.752734664618352 ], [ -122.468031369650532, 37.75278739056494 ], [ -122.468181079371874, 37.752955569756089 ], [ -122.468335071492149, 37.753243730756957 ], [ -122.468440863346331, 37.753541228150766 ], [ -122.46853368295227, 37.753778395652951 ], [ -122.468629004224212, 37.753985873398783 ], [ -122.46875232271276, 37.754192126033097 ], [ -122.468837396357713, 37.754298754678686 ], [ -122.468949194118821, 37.754383817642378 ], [ -122.469043420308736, 37.754428685878558 ], [ -122.469187312711114, 37.754478429881637 ], [ -122.469229538348586, 37.754492641945887 ], [ -122.469359681800768, 37.754536443616175 ], [ -122.469719537880266, 37.754630546382018 ], [ -122.470018818714578, 37.754692394187302 ], [ -122.470075601814969, 37.754705621480454 ], [ -122.470428100059209, 37.754750285613063 ], [ -122.470916907310823, 37.75477064959378 ], [ -122.471016758783364, 37.754797170870887 ], [ -122.471049094699751, 37.75451479556704 ], [ -122.471019321832557, 37.754265617625428 ], [ -122.471016495996267, 37.754217122306045 ], [ -122.471036498728921, 37.754100284913058 ], [ -122.471079638048607, 37.753995444111091 ], [ -122.471132268263645, 37.753877430013475 ], [ -122.471171093123701, 37.753733616626192 ], [ -122.471190660490961, 37.753605743703318 ], [ -122.471187692098596, 37.753493865266243 ], [ -122.471174197654705, 37.753356133265093 ], [ -122.471122146869178, 37.753216025593119 ], [ -122.470907529168414, 37.752615836450325 ], [ -122.472007574280582, 37.752569817871482 ], [ -122.473133075589757, 37.752519603580488 ], [ -122.474205182950101, 37.752471761013865 ], [ -122.474740669236724, 37.752447861779451 ], [ -122.475276421588944, 37.752423947680597 ], [ -122.476291890529794, 37.752378614900692 ], [ -122.476291890478677, 37.752378612978674 ], [ -122.476292239846927, 37.752378597780194 ], [ -122.476292240229284, 37.752378599147249 ], [ -122.4774149778289, 37.752329102778496 ], [ -122.478486061226221, 37.752281873458429 ], [ -122.479557564859533, 37.752234616335052 ], [ -122.480628878786973, 37.752187357305665 ], [ -122.48170210782861, 37.752140004119113 ], [ -122.48276958366516, 37.752092894785363 ], [ -122.483844155588841, 37.75204546291927 ], [ -122.48491485069583, 37.751998192013865 ], [ -122.48598818277614, 37.751950794949664 ], [ -122.487053067380344, 37.751903269835523 ], [ -122.488143190546495, 37.751854042116229 ], [ -122.48919356840311, 37.751806869260896 ], [ -122.490270381873529, 37.751758499707634 ], [ -122.491344845233968, 37.751710225381885 ], [ -122.492417458516726, 37.751662024433998 ], [ -122.493488045146222, 37.751613904571322 ], [ -122.49456080780611, 37.751568259028382 ], [ -122.495098259533435, 37.751544767553312 ], [ -122.49509879355503, 37.751544749172808 ], [ -122.495630257074851, 37.751526822572394 ], [ -122.49581055415868, 37.751518288226762 ], [ -122.496702184257288, 37.751476079301845 ], [ -122.497770415009455, 37.751426327287128 ], [ -122.497770416046876, 37.751426327269549 ], [ -122.498442545251379, 37.751398004902029 ], [ -122.498842248697912, 37.751381160579498 ], [ -122.49937768349335, 37.751357494487337 ], [ -122.499914122812314, 37.751333781439868 ], [ -122.499914456955352, 37.751333766429582 ], [ -122.500987488435712, 37.75128639412403 ], [ -122.502060320882052, 37.751239765057655 ], [ -122.503133002600279, 37.751190357338089 ], [ -122.504203312772219, 37.751143789774702 ], [ -122.505276576525688, 37.751093151070108 ], [ -122.506347526734444, 37.751051944046772 ], [ -122.507416228284868, 37.751003284446853 ], [ -122.507286887279179, 37.749140090258685 ], [ -122.507286886587565, 37.749140090270473 ], [ -122.50728687853443, 37.749139971463322 ], [ -122.507286878880223, 37.749139971457424 ], [ -122.50729515180268, 37.749139604462776 ], [ -122.507539948063609, 37.749128748547342 ], [ -122.507941547211104, 37.749110937340276 ], [ -122.507940323213063, 37.749101694546454 ], [ -122.508363946491727, 37.74907680068609 ], [ -122.509705738305371, 37.748997941669188 ], [ -122.509710663420336, 37.749052110606286 ], [ -122.509713246503537, 37.749083657142556 ], [ -122.509729549623728, 37.749110848942742 ], [ -122.509729362100501, 37.749167851780079 ], [ -122.509735273166726, 37.749194534062582 ], [ -122.509750516130779, 37.749246466794162 ], [ -122.509778567561426, 37.749324277699941 ], [ -122.509789628452893, 37.749349498384071 ], [ -122.509798960033251, 37.749374748835095 ], [ -122.509811768849048, 37.749400627001869 ], [ -122.509822811194553, 37.749425161253306 ], [ -122.509835600759672, 37.749450352725269 ], [ -122.509848372456204, 37.749474857754677 ], [ -122.509862872798479, 37.749499333300058 ], [ -122.509875644166641, 37.74952383833223 ], [ -122.509890144527432, 37.749548313874023 ], [ -122.509938776915888, 37.749619592731861 ], [ -122.50997116142004, 37.749665739100415 ], [ -122.509989082682068, 37.749688783065459 ], [ -122.51000698537004, 37.749711140049378 ], [ -122.510074896863927, 37.74979170473398 ], [ -122.510112524214264, 37.749839821874914 ], [ -122.510150170185028, 37.749888625432611 ], [ -122.510222041423717, 37.749987664081871 ], [ -122.510254537700391, 37.750037928944337 ], [ -122.510319567532292, 37.750139831499247 ], [ -122.510350372089775, 37.750191498687315 ], [ -122.510379447689871, 37.750243195362941 ], [ -122.510406812903227, 37.750295607956453 ], [ -122.510434196383827, 37.75034870697808 ], [ -122.510450965102024, 37.750393059386766 ], [ -122.51046407081715, 37.750429920079867 ], [ -122.510475448231503, 37.75046681025696 ], [ -122.510486843547952, 37.750504387148105 ], [ -122.510515843893401, 37.750617205185918 ], [ -122.510523781572246, 37.750654840788101 ], [ -122.510529990248557, 37.75069250588782 ], [ -122.510536217506655, 37.75073085741591 ], [ -122.510540697183259, 37.750768552012921 ], [ -122.510545195439974, 37.750806933038461 ], [ -122.510549675125716, 37.750844627634628 ], [ -122.510552444030878, 37.750883038163828 ], [ -122.510555546179489, 37.75099767207351 ], [ -122.510554168969648, 37.751074611106283 ], [ -122.510551732248842, 37.751112423700818 ], [ -122.510547585771619, 37.751150952210686 ], [ -122.510543420361202, 37.751188794022582 ], [ -122.510539273529616, 37.751227322537567 ], [ -122.510534624806738, 37.751247317477244 ], [ -122.51052982817599, 37.751261821248107 ], [ -122.510526778782435, 37.751276981406193 ], [ -122.510523710819541, 37.75129145540982 ], [ -122.510522371541924, 37.751305900195682 ], [ -122.510519303915359, 37.751320373918666 ], [ -122.510517983550216, 37.751335504852847 ], [ -122.510514915590633, 37.75134997913068 ], [ -122.510513595216636, 37.751365109790179 ], [ -122.510513985300733, 37.75137952479723 ], [ -122.510512664933444, 37.751394655731197 ], [ -122.510513055017512, 37.751409070738212 ], [ -122.510511734303734, 37.751424201677992 ], [ -122.510512533054808, 37.751453718395311 ], [ -122.510514671081651, 37.751468790052584 ], [ -122.510515061166473, 37.751483205059415 ], [ -122.51051719886371, 37.751498277271601 ], [ -122.510519317971443, 37.751512662505696 ], [ -122.510521455317175, 37.751527734449049 ], [ -122.510523574787243, 37.751542120226226 ], [ -122.510527441503768, 37.751557162390775 ], [ -122.51052956027678, 37.751571547905016 ], [ -122.510541105080137, 37.751614615928503 ], [ -122.510546682275447, 37.751628942714049 ], [ -122.51055053042532, 37.751643298448748 ], [ -122.510567261661492, 37.751686277985172 ], [ -122.51057282063698, 37.751699918334559 ], [ -122.510580126864298, 37.751714215070294 ], [ -122.510587414533077, 37.751727825925812 ], [ -122.510592973154687, 37.751741465730937 ], [ -122.510600260828497, 37.751755076585596 ], [ -122.510609277525731, 37.751768657391231 ], [ -122.510616565205183, 37.751782268244845 ], [ -122.510623834295913, 37.751795192119978 ], [ -122.510632850671371, 37.75180877347875 ], [ -122.510650847293675, 37.751834562495105 ], [ -122.510666910213118, 37.751852830846786 ], [ -122.510679329278858, 37.751864293359795 ], [ -122.510690018971971, 37.751875785652558 ], [ -122.510697288092032, 37.751888709797527 ], [ -122.510704575791962, 37.751902320370817 ], [ -122.51070842433974, 37.751916676368367 ], [ -122.510710543503862, 37.751931061872575 ], [ -122.51070920459685, 37.751945506653065 ], [ -122.510724225875535, 37.751989202088765 ], [ -122.510730100360817, 37.752014511176412 ], [ -122.510737685321715, 37.752039104608144 ], [ -122.510743559477149, 37.752064413975368 ], [ -122.510825714104442, 37.752223710988055 ], [ -122.510880260867467, 37.752321671638327 ], [ -122.510889277338805, 37.75233525242713 ], [ -122.51089827594069, 37.752348147323836 ], [ -122.510919693380217, 37.752372504437815 ], [ -122.510932112233405, 37.752383967203627 ], [ -122.510956913829162, 37.752405519856168 ], [ -122.510971006350204, 37.752414893821253 ], [ -122.510979967462688, 37.75242641558544 ], [ -122.510987199526895, 37.75243796685389 ], [ -122.510992721122207, 37.752450234055644 ], [ -122.510999971778375, 37.752462472026544 ], [ -122.511005493370178, 37.752474738953069 ], [ -122.511011033205719, 37.752487692588488 ], [ -122.511014844689754, 37.752500675991762 ], [ -122.511020366286843, 37.752512942917527 ], [ -122.511024177420595, 37.752525926051767 ], [ -122.511026259163927, 37.752538938971881 ], [ -122.511028360165199, 37.752552637759649 ], [ -122.511032524332322, 37.752578663038605 ], [ -122.511033248973078, 37.752605433757282 ], [ -122.511030496930232, 37.752631577332984 ], [ -122.511029139131608, 37.75264533514347 ], [ -122.511030233600934, 37.752813569447106 ], [ -122.511027591948121, 37.752907698414738 ], [ -122.511023202651316, 37.753001170732233 ], [ -122.511017102857721, 37.753095358982122 ], [ -122.511007544911607, 37.753189606240724 ], [ -122.511045097099611, 37.75342657943726 ], [ -122.511071439929921, 37.753568973002693 ], [ -122.511099511595958, 37.7537113370581 ], [ -122.511110666857206, 37.753739990285347 ], [ -122.51113816393935, 37.753797207403004 ], [ -122.511167297244739, 37.753850963138049 ], [ -122.511191001766875, 37.753895883818785 ], [ -122.511212977231722, 37.753940834002691 ], [ -122.511234971305953, 37.753986470610634 ], [ -122.511275501018872, 37.754077803112054 ], [ -122.511285596295252, 37.754131196705785 ], [ -122.511275500500716, 37.754141670188282 ], [ -122.511267152377243, 37.754152800589303 ], [ -122.511258841417288, 37.754165303846627 ], [ -122.51125398864481, 37.754177748360249 ], [ -122.511249154438758, 37.754190878752958 ], [ -122.511246439571536, 37.754218394908946 ], [ -122.511248521739574, 37.754231407540907 ], [ -122.511252351238468, 37.754245077098325 ], [ -122.511256162847417, 37.754258060215321 ], [ -122.511263413723356, 37.754270298166247 ], [ -122.511270646011127, 37.75428184941368 ], [ -122.511281336136037, 37.754293341373469 ], [ -122.511290279285674, 37.754304176676023 ], [ -122.511297511580892, 37.754315727921757 ], [ -122.511301304272081, 37.754328024614594 ], [ -122.51130511555543, 37.7543410080103 ], [ -122.511305450050784, 37.754353363447571 ], [ -122.511302344945619, 37.754366464607017 ], [ -122.511299221255896, 37.754378879337885 ], [ -122.511292620796496, 37.754390666933737 ], [ -122.511284272301779, 37.754401797341401 ], [ -122.511274158225476, 37.754411584114365 ], [ -122.511262296127953, 37.754420714247495 ], [ -122.51124864918124, 37.754427814602913 ], [ -122.511234965066222, 37.754433542099882 ], [ -122.511205457998457, 37.754493792524343 ], [ -122.511174612954918, 37.754504620093513 ], [ -122.511188723552863, 37.754578547809551 ], [ -122.511196847828685, 37.754623047899784 ], [ -122.511172119152874, 37.754668108364662 ], [ -122.511186378431859, 37.754747527231643 ], [ -122.511164047430796, 37.754817269614293 ], [ -122.511168079798153, 37.754966224575647 ], [ -122.511187639253137, 37.754985806682214 ], [ -122.511182209413036, 37.755040838983689 ], [ -122.511152553395789, 37.755095597687138 ], [ -122.511140988488648, 37.755115710660888 ], [ -122.511131170290469, 37.755200347899923 ], [ -122.511137026593502, 37.755224970799595 ], [ -122.511151546101601, 37.755313999934657 ], [ -122.511172052652412, 37.755368589625292 ], [ -122.511185234625046, 37.75540819590843 ], [ -122.511212230658316, 37.755446879976844 ], [ -122.511220633780624, 37.755501676208965 ], [ -122.511245788883045, 37.755536270664308 ], [ -122.511246718045257, 37.755570592079458 ], [ -122.511273603014288, 37.755605157557042 ], [ -122.511268303269489, 37.755664994580059 ], [ -122.511302921291062, 37.755793511928204 ], [ -122.51129135632344, 37.755813625188885 ], [ -122.511297751657864, 37.755858154497574 ], [ -122.51132993529248, 37.755896749458273 ], [ -122.511344307286322, 37.755916419796833 ], [ -122.51135098142602, 37.755971245525423 ], [ -122.511358975860517, 37.756010940596234 ], [ -122.511372157693486, 37.756050546585421 ], [ -122.51138067251722, 37.756109461644371 ], [ -122.51138760653366, 37.756173897095294 ], [ -122.511415290932803, 37.756237978675102 ], [ -122.51144193355438, 37.756327487882515 ], [ -122.511450857327816, 37.756401503804241 ], [ -122.511444739922965, 37.756431138262307 ], [ -122.511465507194529, 37.756495337885667 ], [ -122.511475248786056, 37.756599556916427 ], [ -122.511489639220827, 37.756683781260584 ], [ -122.511510945933878, 37.756767887008252 ], [ -122.511505516202988, 37.756822919307787 ], [ -122.511507114604001, 37.756881952399702 ], [ -122.511540803935873, 37.756976147977831 ], [ -122.51151021846853, 37.756996585892097 ], [ -122.511537215240679, 37.757035269600948 ], [ -122.511550805913657, 37.75708997726138 ], [ -122.511552014025696, 37.757134594811419 ], [ -122.51153474073044, 37.7571994439623 ], [ -122.511545151615906, 37.757328374109882 ], [ -122.511565380212119, 37.7573726672926 ], [ -122.511548775980131, 37.757462227577349 ], [ -122.511570621660383, 37.757566239995974 ], [ -122.511588991755985, 37.757605757952987 ], [ -122.511636236094873, 37.757689420961349 ], [ -122.511627217721312, 37.75780357460139 ], [ -122.511645866365058, 37.757853388698848 ], [ -122.511694113049955, 37.758229588585031 ], [ -122.511742993592506, 37.758437524775317 ], [ -122.511846760303001, 37.759011245676845 ], [ -122.511857097632088, 37.75913743032006 ], [ -122.511865631081335, 37.759260898772276 ], [ -122.511870706825988, 37.759384426245269 ], [ -122.511867805759621, 37.759468945686322 ], [ -122.511886956563586, 37.759537293011533 ], [ -122.511894319592614, 37.759553649204342 ], [ -122.511899972344324, 37.759570721336786 ], [ -122.511907335379505, 37.759587077528693 ], [ -122.511912969200509, 37.759603463238605 ], [ -122.511924273692642, 37.75963760779338 ], [ -122.511928197239044, 37.759654709442891 ], [ -122.511933831069797, 37.759671095151603 ], [ -122.511941677473203, 37.759705298186844 ], [ -122.511943890051924, 37.759723115788141 ], [ -122.511947812915679, 37.759740217448552 ], [ -122.511954395243222, 37.75979161123707 ], [ -122.511954878597919, 37.75980945808243 ], [ -122.51195707224619, 37.759826589261372 ], [ -122.511958020381513, 37.759861597073268 ], [ -122.511956756283539, 37.759878787553092 ], [ -122.511957221055894, 37.759895948245067 ], [ -122.511955975187334, 37.759913824609214 ], [ -122.511953445935674, 37.759948205037048 ], [ -122.511904504571447, 37.760440750181104 ], [ -122.511896527982401, 37.760465608886555 ], [ -122.511890205925951, 37.76048769264321 ], [ -122.511883865275365, 37.760509089971798 ], [ -122.511879272104622, 37.760531144215527 ], [ -122.511874661032579, 37.760552512019558 ], [ -122.511865475369248, 37.760596620493857 ], [ -122.511856884580055, 37.760662694650442 ], [ -122.511852347147268, 37.760750675453501 ], [ -122.51185415039285, 37.760817258929578 ], [ -122.51185647452489, 37.76083919509459 ], [ -122.511857069411604, 37.760861160777161 ], [ -122.511859412136133, 37.760883783369522 ], [ -122.511863465519539, 37.760905690016429 ], [ -122.511865789657108, 37.760927626180887 ], [ -122.511869842698943, 37.760949532833308 ], [ -122.511875625684155, 37.760971409955765 ], [ -122.511879679077154, 37.760993316601748 ], [ -122.511885442786451, 37.761014507307813 ], [ -122.511897008433721, 37.761058261556201 ], [ -122.511926981734348, 37.761142906550255 ], [ -122.511936204314608, 37.76116403793533 ], [ -122.511954649505725, 37.76120630125228 ], [ -122.511963853517884, 37.761226746482016 ], [ -122.511996653008623, 37.761287993613372 ], [ -122.51202705467847, 37.761324558853467 ], [ -122.512064168550651, 37.761353455306384 ], [ -122.512085012456453, 37.761420400744697 ], [ -122.512126086793671, 37.761531638678171 ], [ -122.51214611271017, 37.76156838129576 ], [ -122.512202471774316, 37.761605190090663 ], [ -122.51220306676943, 37.761627155768551 ], [ -122.512286833872011, 37.761909350986301 ], [ -122.512330121233489, 37.762102273976545 ], [ -122.512359816513452, 37.762176622160425 ], [ -122.512400687481886, 37.762280309551663 ], [ -122.512412755489066, 37.762406464549109 ], [ -122.512472852658917, 37.762517377837653 ], [ -122.51242023100265, 37.762682408319826 ], [ -122.512395388918449, 37.762787217676667 ], [ -122.5123251575382, 37.763004741639399 ], [ -122.512318128822102, 37.763064608432281 ], [ -122.512275063725824, 37.763199258620396 ], [ -122.512347657434475, 37.763452114765002 ], [ -122.512370305614013, 37.763585643570899 ], [ -122.51245827791935, 37.763703634850181 ], [ -122.51249862900157, 37.763851969475809 ], [ -122.512536692779477, 37.763915873550189 ], [ -122.512547533618658, 37.763932857061576 ], [ -122.512582157093107, 37.763997506608895 ], [ -122.512647704491329, 37.764117941165772 ], [ -122.512695196290764, 37.764146660498668 ], [ -122.512734264345909, 37.764183764321103 ], [ -122.512737091420831, 37.764288101230889 ], [ -122.512775416013923, 37.764361614927097 ], [ -122.512777034178313, 37.764421334077248 ], [ -122.512751987430036, 37.764518593055108 ], [ -122.512781479493952, 37.764585390130065 ], [ -122.512774860188117, 37.764660358327284 ], [ -122.51278551563432, 37.764734344784699 ], [ -122.512761491760273, 37.764869356967338 ], [ -122.512743882579386, 37.764921850254765 ], [ -122.512717422071987, 37.76496694049434 ], [ -122.512684621435739, 37.765161162553468 ], [ -122.512669634563863, 37.765310442023306 ], [ -122.512654461644431, 37.765452857218328 ], [ -122.512646410035117, 37.765474970525723 ], [ -122.51263958593637, 37.765542388282462 ], [ -122.512631627607334, 37.765631800678314 ], [ -122.512652064044445, 37.76568364430058 ], [ -122.512693345840233, 37.765802432929902 ], [ -122.512704615499302, 37.765899071734495 ], [ -122.512725051707562, 37.765950915073049 ], [ -122.512700618145246, 37.766070825824592 ], [ -122.512768157254058, 37.76613697348678 ], [ -122.512789393732405, 37.766218333432967 ], [ -122.512782253924286, 37.766337948881301 ], [ -122.512802690660749, 37.766389792471095 ], [ -122.512831774306832, 37.766441488397447 ], [ -122.512880476379308, 37.766514825114292 ], [ -122.512887749430135, 37.76678321796404 ], [ -122.512892604360289, 37.766962375332177 ], [ -122.512931655400493, 37.766998792918841 ], [ -122.512961259283941, 37.767005841271946 ], [ -122.513017009002525, 37.767019997837075 ], [ -122.513065321321278, 37.767078919504563 ], [ -122.513078915989027, 37.767197493825428 ], [ -122.513107814109816, 37.767242325410123 ], [ -122.513081743662724, 37.767301830672046 ], [ -122.51310340834894, 37.767398978362927 ], [ -122.513123716454487, 37.7675098841043 ], [ -122.513078250436607, 37.767555985727952 ], [ -122.513071017262462, 37.76760830182581 ], [ -122.513091249913373, 37.767652594661705 ], [ -122.513076058720628, 37.767794323426109 ], [ -122.513058653709876, 37.76785436770038 ], [ -122.513040634413983, 37.767891759352018 ], [ -122.513052220422765, 37.767936200135772 ], [ -122.513081118807335, 37.767981031446666 ], [ -122.513072546502798, 37.768047792039297 ], [ -122.513084307659341, 37.768800949561466 ], [ -122.513105545245466, 37.768882309412746 ], [ -122.513112428659511, 37.76913628718308 ], [ -122.513087380753205, 37.769233545877434 ], [ -122.51312531757408, 37.76929264499158 ], [ -122.513091827049578, 37.769397602054994 ], [ -122.513085691671151, 37.769554284209093 ], [ -122.513145317112162, 37.770030553014749 ], [ -122.513104072344461, 37.770232473669928 ], [ -122.513083675037265, 37.770501338904026 ], [ -122.513146087813496, 37.77076123543462 ], [ -122.513127217898258, 37.771214121925311 ], [ -122.51313192303401, 37.771260053409627 ], [ -122.511055400217217, 37.771347479926334 ], [ -122.510495195112867, 37.771371059784514 ], [ -122.509894781266311, 37.771396329054475 ], [ -122.509894749698645, 37.771396032095495 ], [ -122.508867990729883, 37.771443447055226 ], [ -122.508823330922013, 37.771445496187766 ], [ -122.508780633594597, 37.771447480819759 ], [ -122.507750665782908, 37.771495034103232 ], [ -122.507750664399296, 37.771495034126787 ], [ -122.506991972993774, 37.771528822999358 ], [ -122.506685577396198, 37.771542340610623 ], [ -122.505610663486351, 37.771591537709703 ], [ -122.504544396347384, 37.771640577944709 ], [ -122.503472690942445, 37.771689380369601 ], [ -122.503472688521128, 37.771689380410749 ], [ -122.502399732131124, 37.771738148994636 ], [ -122.502399595949868, 37.771738155153713 ], [ -122.501328271899965, 37.77178724800941 ], [ -122.50025681025997, 37.771836337560785 ], [ -122.499183617695707, 37.771885446705888 ], [ -122.498113882732468, 37.771934487449556 ], [ -122.497047586931203, 37.771982773731914 ], [ -122.495972660610278, 37.77203188267292 ], [ -122.495971990075716, 37.772031913255347 ], [ -122.495972015995989, 37.772032015003532 ], [ -122.494903299427449, 37.772080795311069 ], [ -122.494902921073546, 37.772080894286702 ], [ -122.493833180817205, 37.772129896182108 ], [ -122.493832498174271, 37.772129926957135 ], [ -122.493832479293559, 37.77212966191987 ], [ -122.493316307377469, 37.772153213706439 ], [ -122.492761690869486, 37.772178231184974 ], [ -122.491688488076463, 37.772227272380952 ], [ -122.490617013718605, 37.772276274046327 ], [ -122.489539486385709, 37.772325343661755 ], [ -122.489539480863627, 37.772325473411478 ], [ -122.488471323394165, 37.772374169626119 ], [ -122.488470602075608, 37.772374307055074 ], [ -122.487399123482518, 37.77242327974907 ], [ -122.487398306387334, 37.772423316873983 ], [ -122.487398288926627, 37.772423078182946 ], [ -122.486678527930636, 37.772455879683093 ], [ -122.486334543235188, 37.772471439976606 ], [ -122.485261332297384, 37.772520422109807 ], [ -122.485152053625171, 37.772525429693054 ], [ -122.484194201052048, 37.772569061919981 ], [ -122.484194219251819, 37.772569315707138 ], [ -122.483119139145145, 37.772618264154566 ], [ -122.483119121668807, 37.772618024364625 ], [ -122.482048961146063, 37.772667157434498 ], [ -122.481947659007389, 37.77267180789157 ], [ -122.480978851643016, 37.772716079930653 ], [ -122.479904580478745, 37.772765580938412 ], [ -122.478848714480989, 37.772814028910268 ], [ -122.47883762078969, 37.772814536530767 ], [ -122.477766129509902, 37.772863421949047 ], [ -122.477069824745385, 37.772895630732648 ], [ -122.476694205661246, 37.772912858094969 ], [ -122.475613625589148, 37.772962410314676 ], [ -122.475613644972711, 37.772962670675476 ], [ -122.475612802305008, 37.772962709520556 ], [ -122.47455168367884, 37.773011391539193 ], [ -122.474550931211951, 37.773011425844139 ], [ -122.474550910293516, 37.773011133644289 ], [ -122.473737577092777, 37.773048416620476 ], [ -122.473427836194134, 37.773062613687692 ], [ -122.472297341321692, 37.773114423074823 ], [ -122.472219951938214, 37.773117969260745 ], [ -122.471762122569857, 37.773138947752848 ], [ -122.47124006836178, 37.773161981865066 ], [ -122.471240089434815, 37.773162280380667 ], [ -122.470162712316579, 37.773209791534974 ], [ -122.470162692059887, 37.773209510586071 ], [ -122.469517084069324, 37.773237987003441 ], [ -122.469092496140973, 37.773256712542192 ], [ -122.468348575135167, 37.773289518371953 ], [ -122.468023916207073, 37.773303833556405 ], [ -122.466952500298319, 37.773351323464517 ], [ -122.466951728424362, 37.773351356945881 ], [ -122.466373346760548, 37.773376599548058 ], [ -122.465883163277454, 37.773398204721545 ], [ -122.465331676538511, 37.773422509669793 ], [ -122.464811670328331, 37.773488744378348 ], [ -122.463755675044126, 37.773623241600568 ], [ -122.463749210177951, 37.773624065149079 ], [ -122.462683796526321, 37.773759751788596 ], [ -122.462535340858068, 37.773778657528119 ], [ -122.461620188227315, 37.77389548164836 ], [ -122.461619775372085, 37.773895534117642 ], [ -122.461619755154771, 37.7738952534419 ], [ -122.460552661960989, 37.774031133779268 ], [ -122.460552700773292, 37.774031358657659 ], [ -122.459486938645284, 37.774167197254911 ], [ -122.459486145343419, 37.77416729779403 ], [ -122.459486118442314, 37.77416693399686 ], [ -122.458795325509186, 37.774254885425997 ], [ -122.458371099123696, 37.774308895694055 ], [ -122.457134751103212, 37.774454490912483 ], [ -122.456283917173579, 37.774554834704738 ], [ -122.456283671603558, 37.774554866249353 ], [ -122.456283639851293, 37.774554711848936 ], [ -122.455898178089939, 37.774604132119862 ], [ -122.45525254468275, 37.774686906456331 ], [ -122.455033749574639, 37.77471323536281 ], [ -122.454683295611602, 37.774755406979118 ], [ -122.45468264773983, 37.77475548474694 ], [ -122.454642052912618, 37.774646438033749 ], [ -122.454474386066082, 37.77382381381878 ], [ -122.454383433186777, 37.773377561015685 ], [ -122.454285116857562, 37.772895177759331 ], [ -122.454083217765842, 37.771930404296491 ], [ -122.454018233133866, 37.771616238745679 ], [ -122.453979522461594, 37.771428395389663 ], [ -122.453902454621286, 37.771053837806122 ], [ -122.453902388799008, 37.771053479872258 ], [ -122.453726227138517, 37.770098080109292 ], [ -122.45361853828534, 37.769567547950977 ], [ -122.453536875229432, 37.769165225996225 ], [ -122.453536875207789, 37.7691652251725 ], [ -122.453445551985865, 37.76871045824668 ], [ -122.453352918070834, 37.768246336273791 ], [ -122.453352855873561, 37.76824602387866 ], [ -122.453165568246916, 37.767306553969036 ], [ -122.453075053112784, 37.766861619151193 ], [ -122.452996675368553, 37.766476342546461 ], [ -122.452947274458694, 37.766374150789915 ], [ -122.454592351139084, 37.766165584782662 ], [ -122.454592931223331, 37.766165511159706 ], [ -122.455121527013688, 37.766098468178491 ], [ -122.456616092088495, 37.765909015262118 ], [ -122.456823880275138, 37.765884275950789 ], [ -122.456913422826119, 37.76587361486397 ], [ -122.457189364808954, 37.765880549298529 ], [ -122.457438759694597, 37.76592231265932 ], [ -122.457489671310725, 37.765930838098136 ], [ -122.45751185755033, 37.765937046103922 ], [ -122.457789624362519, 37.766014767234282 ], [ -122.457788627971766, 37.765820072733575 ], [ -122.457756133601251, 37.765354151194842 ], [ -122.457718187977903, 37.764810068512688 ], [ -122.457700034267219, 37.764549766072378 ], [ -122.457702640928829, 37.764546749210723 ], [ -122.45765013969168, 37.76353311613984 ], [ -122.457827081738984, 37.763482288038738 ], [ -122.459790374597731, 37.762925938047687 ], [ -122.460842964058216, 37.762627642539876 ], [ -122.46084509456081, 37.762627108799968 ], [ -122.460684658382874, 37.760546523892096 ], [ -122.461770397151241, 37.760502041661596 ], [ -122.461770200794135, 37.760499231230455 ], [ -122.46284191307069, 37.760452254741963 ], [ -122.463911891482155, 37.760405344350922 ], [ -122.463781528402038, 37.758538181378015 ], [ -122.463651620775778, 37.756677450683235 ], [ -122.463554499932727, 37.755298102249476 ], [ -122.463580718915097, 37.755014148901829 ], [ -122.463627289771182, 37.754788065181785 ], [ -122.46367889740506, 37.754738571878264 ], [ -122.463722821262465, 37.754601920791259 ], [ -122.463838893966539, 37.75414750585891 ], [ -122.463842129576008, 37.753808596342253 ], [ -122.463777683069083, 37.753601657228067 ], [ -122.463640406958334, 37.753310851043111 ], [ -122.463399006031565, 37.752981452291863 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":23,"ZIP_CODE":94127,"ID":94127},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.458688935885434, 37.730751520241796 ], [ -122.459193144317396, 37.730602954490251 ], [ -122.459352156941819, 37.730515761910091 ], [ -122.459563710785162, 37.730368588301999 ], [ -122.459783802497654, 37.730109540441724 ], [ -122.459878403068345, 37.729884503080157 ], [ -122.459930163903692, 37.729706628889033 ], [ -122.459983752683073, 37.729522472170189 ], [ -122.460023966205156, 37.729195728883113 ], [ -122.460002483633559, 37.728739437629635 ], [ -122.460412720770037, 37.728739179843977 ], [ -122.460815517748841, 37.728680936862041 ], [ -122.460816315573013, 37.728681144164341 ], [ -122.460816314413918, 37.72868110023223 ], [ -122.460815856121073, 37.72868098095028 ], [ -122.46142222273329, 37.728330263725837 ], [ -122.461824751209633, 37.728118912555594 ], [ -122.462068476892256, 37.72804961327914 ], [ -122.462089038987699, 37.728047063364642 ], [ -122.462378284725844, 37.728011300874932 ], [ -122.462703368909061, 37.728024299159358 ], [ -122.462888197868679, 37.72805558978888 ], [ -122.46288814852555, 37.72805550243347 ], [ -122.462888304160828, 37.72805552868347 ], [ -122.462735876702908, 37.727784058577058 ], [ -122.462714226912738, 37.727738412010282 ], [ -122.462615761322709, 37.727529244060726 ], [ -122.462547067236983, 37.727225353979733 ], [ -122.462546035395761, 37.727106268284892 ], [ -122.462545638153259, 37.726997475605309 ], [ -122.46262180837526, 37.726335258944708 ], [ -122.462686726995429, 37.725774916753664 ], [ -122.462815474472038, 37.725482412532848 ], [ -122.462561310804759, 37.725391067720956 ], [ -122.46221285915388, 37.725265563681397 ], [ -122.462212628293415, 37.725265491161082 ], [ -122.462280269039496, 37.725147301470763 ], [ -122.462279803400207, 37.725042766873585 ], [ -122.462279017236384, 37.724866230039204 ], [ -122.462276854232826, 37.724380477322995 ], [ -122.462276505002905, 37.72427060589213 ], [ -122.462276504226139, 37.724270445482276 ], [ -122.46227362197132, 37.723637318172813 ], [ -122.462271183905713, 37.723021052793868 ], [ -122.462431367748181, 37.72300886812026 ], [ -122.462654991355222, 37.722947907918154 ], [ -122.46284032675716, 37.72280173266644 ], [ -122.463189003103793, 37.722604614839412 ], [ -122.463751413929884, 37.722395206040865 ], [ -122.463981569397532, 37.722327034291936 ], [ -122.464293670852172, 37.722113739171022 ], [ -122.464434759676408, 37.721907819106278 ], [ -122.464484214240997, 37.721680008850619 ], [ -122.465390989272279, 37.721673877359507 ], [ -122.46556367354151, 37.721672709140641 ], [ -122.4659783260431, 37.721669902411627 ], [ -122.466277766029194, 37.721667874912988 ], [ -122.46658847710232, 37.721665769467251 ], [ -122.467028877336375, 37.721662784936917 ], [ -122.467185158975667, 37.721661725062667 ], [ -122.467615322899292, 37.721658807641923 ], [ -122.467922730856742, 37.721656721708847 ], [ -122.468076091423683, 37.72165575669883 ], [ -122.468660023251203, 37.721651832680671 ], [ -122.468660429184538, 37.721651830291869 ], [ -122.468975070634144, 37.721649661930378 ], [ -122.469739202269693, 37.721644441148221 ], [ -122.469739672850537, 37.721644437949429 ], [ -122.469877506730057, 37.721643501943454 ], [ -122.470778213987501, 37.721637364239811 ], [ -122.47077894458495, 37.721637359433757 ], [ -122.47167373604637, 37.72163130643554 ], [ -122.471759517799796, 37.721671075214203 ], [ -122.471759949192219, 37.721671054807977 ], [ -122.471760271986454, 37.721671203510112 ], [ -122.471983398728909, 37.721660603850793 ], [ -122.472161906508475, 37.721641204494453 ], [ -122.472321961375684, 37.721623810905996 ], [ -122.472322354823248, 37.721623768058436 ], [ -122.472214746614711, 37.723731792113433 ], [ -122.472056885104323, 37.726824049746483 ], [ -122.471915497296948, 37.728810174564472 ], [ -122.47190716730239, 37.728927188202036 ], [ -122.471594286340178, 37.728902143540118 ], [ -122.47154865397853, 37.729783977184617 ], [ -122.471866468726006, 37.729784522464136 ], [ -122.471849871701991, 37.730103151702181 ], [ -122.471838445445158, 37.730322499137451 ], [ -122.471797435951885, 37.731032354724164 ], [ -122.471741907147091, 37.731926920887339 ], [ -122.471660927786132, 37.733231459533314 ], [ -122.47162189337304, 37.733860262567148 ], [ -122.471569341481938, 37.734706810815084 ], [ -122.471400819161929, 37.735001415396148 ], [ -122.471068098407827, 37.73560670794447 ], [ -122.470574087980822, 37.736589028767121 ], [ -122.470679955794623, 37.736646992229609 ], [ -122.470805946330771, 37.736773656566506 ], [ -122.470869802376484, 37.736951620802394 ], [ -122.470924096654457, 37.737574149498428 ], [ -122.470962730039105, 37.737648904688974 ], [ -122.471094271054184, 37.739515149668783 ], [ -122.471225939871744, 37.741383106823285 ], [ -122.470104939284042, 37.741425112172415 ], [ -122.46903011455143, 37.741472060437133 ], [ -122.468671688881855, 37.741487738762387 ], [ -122.468561098363182, 37.741503345390441 ], [ -122.467747743753378, 37.743412622582262 ], [ -122.4668594971902, 37.743490862582995 ], [ -122.466043187720601, 37.743555382675872 ], [ -122.465806989998114, 37.743574050343277 ], [ -122.464736798394597, 37.743658625608425 ], [ -122.463685995946705, 37.743749409879626 ], [ -122.461381097416904, 37.745569497508143 ], [ -122.459174375277186, 37.74728632007151 ], [ -122.45872851739027, 37.746755429911865 ], [ -122.458610345848541, 37.746751806518411 ], [ -122.458509634961302, 37.746778882011192 ], [ -122.458499844031735, 37.746781514247793 ], [ -122.457949639713704, 37.746779214661537 ], [ -122.457582024204598, 37.746744476612157 ], [ -122.457457161051892, 37.746732677593577 ], [ -122.457301186299645, 37.746714064689691 ], [ -122.457166741019165, 37.746698021157933 ], [ -122.457089836487938, 37.746682896092409 ], [ -122.456314708164584, 37.746530446031059 ], [ -122.455687935660293, 37.746380796419501 ], [ -122.455466732538028, 37.746327980692172 ], [ -122.454664097215115, 37.746106168076913 ], [ -122.454664096869323, 37.746106168082655 ], [ -122.454184426826714, 37.745845539203287 ], [ -122.453916429980183, 37.745699922279499 ], [ -122.453916002908102, 37.745699915076791 ], [ -122.453645157964232, 37.745695560010326 ], [ -122.453495886255311, 37.745691252478657 ], [ -122.453376023619995, 37.74568779337109 ], [ -122.452386953750349, 37.745691424670198 ], [ -122.45222754649042, 37.74569200904012 ], [ -122.452091117231191, 37.74568511552728 ], [ -122.451828632556612, 37.745671851179097 ], [ -122.45181666119403, 37.745671246259803 ], [ -122.45169226258335, 37.745606748366605 ], [ -122.451624634588612, 37.745534387540218 ], [ -122.451624359716789, 37.745534037461439 ], [ -122.450586742649079, 37.744213121547148 ], [ -122.450592179132485, 37.744090792307063 ], [ -122.449918612648133, 37.7432716748716 ], [ -122.449790244582587, 37.743257317336237 ], [ -122.449582834428256, 37.743065029012413 ], [ -122.449355958412127, 37.74292182098899 ], [ -122.44913731277687, 37.742828607669701 ], [ -122.448820428983325, 37.742748693538836 ], [ -122.44848892294759, 37.742704730693937 ], [ -122.447384659150103, 37.742608987228614 ], [ -122.447110638216571, 37.742580552169777 ], [ -122.446840940400392, 37.742519081676662 ], [ -122.446657325560608, 37.742442453734959 ], [ -122.446516770315029, 37.742358933848621 ], [ -122.446410971977912, 37.742281706494659 ], [ -122.446323687641325, 37.742184944882247 ], [ -122.446256735689062, 37.742072052701658 ], [ -122.44619443459527, 37.741872554265036 ], [ -122.446156199006268, 37.741535311478742 ], [ -122.44609965968975, 37.741357693405078 ], [ -122.44605943275991, 37.741274575873817 ], [ -122.445964300022951, 37.741198753406074 ], [ -122.445964326755799, 37.741198730714288 ], [ -122.445897881975142, 37.741116602917764 ], [ -122.445523457193502, 37.740972470791057 ], [ -122.445195592772691, 37.740920623913645 ], [ -122.444911120433531, 37.740872114678645 ], [ -122.444681667799003, 37.740793092051724 ], [ -122.444518249198694, 37.740692998244214 ], [ -122.444366170223589, 37.740575544006177 ], [ -122.444209640252396, 37.740380617798955 ], [ -122.444098337188322, 37.740234069945657 ], [ -122.443922038304507, 37.740088462716592 ], [ -122.443694223373313, 37.739971345925731 ], [ -122.44341918472557, 37.739902333376541 ], [ -122.443019593631774, 37.739814475654143 ], [ -122.442856748556963, 37.739767263698369 ], [ -122.44271760477325, 37.739682237717481 ], [ -122.442597107319372, 37.739547858254923 ], [ -122.442525191527608, 37.739448400155375 ], [ -122.44250398997913, 37.739238469269011 ], [ -122.442627783322195, 37.738564600951854 ], [ -122.442625226229453, 37.738313911390271 ], [ -122.442579349780331, 37.738171569110513 ], [ -122.44244617419956, 37.737799536516135 ], [ -122.442403843641571, 37.737639851367689 ], [ -122.442421017736137, 37.737438198043598 ], [ -122.442488947503193, 37.737289169592358 ], [ -122.442657322787326, 37.737118881702763 ], [ -122.443602235926093, 37.736502583404238 ], [ -122.443683487927487, 37.73653803376142 ], [ -122.443842427221611, 37.736579809812575 ], [ -122.444038854214782, 37.736575290313169 ], [ -122.444187688286519, 37.736528330103852 ], [ -122.444306066715512, 37.736409368208768 ], [ -122.444405709994072, 37.736218559056141 ], [ -122.444433832419023, 37.736070356056409 ], [ -122.444478073435704, 37.735720552668923 ], [ -122.444456723960371, 37.735604611251425 ], [ -122.444414926545633, 37.735547154436588 ], [ -122.444280987817251, 37.735484218369663 ], [ -122.444190291728404, 37.735407445883219 ], [ -122.443868794328736, 37.73522293273804 ], [ -122.443498916758756, 37.735041781619209 ], [ -122.443241645458286, 37.734935120886668 ], [ -122.44298838327488, 37.734915120161688 ], [ -122.442971182760076, 37.734564427784264 ], [ -122.444336617762318, 37.734557437927307 ], [ -122.445353637361492, 37.734548793463254 ], [ -122.445350300553969, 37.734322189420951 ], [ -122.445385609625191, 37.734245207403205 ], [ -122.445695180894745, 37.733970768223749 ], [ -122.445782219446897, 37.733850288395629 ], [ -122.445605378551107, 37.733800711254226 ], [ -122.444320121334613, 37.733811072362919 ], [ -122.444320397855094, 37.733087687518228 ], [ -122.44431434932487, 37.732346901474607 ], [ -122.444299518643774, 37.732277163251723 ], [ -122.444288854528963, 37.731568915105107 ], [ -122.446578400413941, 37.7315490470612 ], [ -122.447291821211039, 37.731547153756608 ], [ -122.448866265260094, 37.731542959168735 ], [ -122.451146666771351, 37.731536846888879 ], [ -122.453411343594681, 37.731530646828205 ], [ -122.453590911574565, 37.731488405776453 ], [ -122.454915878760758, 37.731464997636976 ], [ -122.455762555159509, 37.731348802743547 ], [ -122.456607498028021, 37.731187733113579 ], [ -122.457474238952088, 37.730997495241198 ], [ -122.458222500186622, 37.73077738189027 ], [ -122.458472470688633, 37.730752827866375 ], [ -122.458688935885434, 37.730751520241796 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":24,"ZIP_CODE":94117,"ID":94117},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.456669912105653, 37.763814688946653 ], [ -122.45765013969168, 37.76353311613984 ], [ -122.457702640928829, 37.764546749210723 ], [ -122.457700034267219, 37.764549766072378 ], [ -122.457718187977903, 37.764810068512688 ], [ -122.457756133601251, 37.765354151194842 ], [ -122.457788627971766, 37.765820072733575 ], [ -122.457789624362519, 37.766014767234282 ], [ -122.45751185755033, 37.765937046103922 ], [ -122.457489349789753, 37.765930717627668 ], [ -122.457438759694597, 37.76592231265932 ], [ -122.457189364808954, 37.765880549298529 ], [ -122.456913422826119, 37.76587361486397 ], [ -122.456823880275138, 37.765884275950789 ], [ -122.456616092088495, 37.765909015262118 ], [ -122.455121527013688, 37.766098468178491 ], [ -122.454592923214804, 37.766165469813686 ], [ -122.452947253369459, 37.766374046206209 ], [ -122.452946199816822, 37.766368851617294 ], [ -122.452945976378615, 37.766368855319321 ], [ -122.452947033686613, 37.766374074293772 ], [ -122.452996080750566, 37.76647606094825 ], [ -122.453164789642727, 37.767306895129927 ], [ -122.453352288400112, 37.768246025041712 ], [ -122.453445551985865, 37.76871045824668 ], [ -122.453536875207789, 37.7691652251725 ], [ -122.453536875229432, 37.769165225996225 ], [ -122.45361853828534, 37.769567547950977 ], [ -122.453726227138517, 37.770098080109292 ], [ -122.453902388799008, 37.771053479872258 ], [ -122.453902454621286, 37.771053837806122 ], [ -122.453979522461594, 37.771428395389663 ], [ -122.454018233133866, 37.771616238745679 ], [ -122.454083217765842, 37.771930404296491 ], [ -122.454285116857562, 37.772895177759331 ], [ -122.454383433186777, 37.773377561015685 ], [ -122.454474386066082, 37.77382381381878 ], [ -122.454642052912618, 37.774646438033749 ], [ -122.45468264773983, 37.77475548474694 ], [ -122.453003330637316, 37.774970754669006 ], [ -122.452810237317621, 37.774995318605924 ], [ -122.452963825070867, 37.775750129254348 ], [ -122.45318832797058, 37.776853425180988 ], [ -122.453384996187339, 37.777826863341367 ], [ -122.452431111623397, 37.777939652339285 ], [ -122.451543139139602, 37.778052106408275 ], [ -122.450826415883952, 37.778142868140662 ], [ -122.450654812483819, 37.778164598609756 ], [ -122.449767079183658, 37.778277008331997 ], [ -122.448885763577039, 37.778388598994987 ], [ -122.448879206948348, 37.778389428728616 ], [ -122.447997721370214, 37.778501033647089 ], [ -122.447039806751391, 37.778622307248391 ], [ -122.446846469920573, 37.777669108909684 ], [ -122.445155752336433, 37.777886506805444 ], [ -122.443506919728407, 37.778089213415292 ], [ -122.441865967226732, 37.778299511701405 ], [ -122.441865967212379, 37.778299511152262 ], [ -122.441865640558632, 37.778299552792262 ], [ -122.441865640580161, 37.778299553615973 ], [ -122.440213334218711, 37.778511463388014 ], [ -122.43855227772093, 37.778724107938281 ], [ -122.437707163233824, 37.778832380147421 ], [ -122.436884629197735, 37.778937753600381 ], [ -122.435241012398947, 37.779144878458894 ], [ -122.433595938040227, 37.779354585436536 ], [ -122.431951802315041, 37.779564148987781 ], [ -122.430233236584385, 37.779782794230314 ], [ -122.430047265291023, 37.778850928515844 ], [ -122.429849199803343, 37.777919295570904 ], [ -122.429686883301301, 37.776976022351889 ], [ -122.429626330769736, 37.776513151917612 ], [ -122.429622603726443, 37.776331628240193 ], [ -122.42955405641294, 37.77604428584678 ], [ -122.429365859793393, 37.775111180032617 ], [ -122.429272630354163, 37.774648924607646 ], [ -122.429178384487102, 37.774181626717471 ], [ -122.429178383795261, 37.774181626728783 ], [ -122.42917834319843, 37.774181422747475 ], [ -122.428990051967787, 37.773247800757233 ], [ -122.428802101899663, 37.772315846507482 ], [ -122.428708105393241, 37.771849753810166 ], [ -122.428614043687816, 37.771383330257258 ], [ -122.428520173517541, 37.770917853912216 ], [ -122.428426180541749, 37.770451760600665 ], [ -122.428428952948465, 37.770451409238284 ], [ -122.428218351470321, 37.769440923680406 ], [ -122.428991181191208, 37.769394223715665 ], [ -122.429127985682982, 37.769456128057627 ], [ -122.429905643091914, 37.769407921549679 ], [ -122.430247361256178, 37.769392261627225 ], [ -122.431356624058139, 37.76932091157898 ], [ -122.431570380896062, 37.769307161387864 ], [ -122.432464341208131, 37.769249650838944 ], [ -122.433572207534368, 37.769178369516744 ], [ -122.43489319213792, 37.769113797429938 ], [ -122.435794213398353, 37.769058453615109 ], [ -122.436588267341477, 37.76900080227221 ], [ -122.436625219679314, 37.768918977544402 ], [ -122.436478247038266, 37.767274662557512 ], [ -122.436980399947345, 37.767244348801164 ], [ -122.43729899343451, 37.767221930124791 ], [ -122.437291829491301, 37.767045826510717 ], [ -122.437288601235366, 37.766922046842083 ], [ -122.437333800177683, 37.766762171805773 ], [ -122.4374853951944, 37.766644323028956 ], [ -122.437684727134425, 37.766587115085294 ], [ -122.437879374385105, 37.76661079550852 ], [ -122.438219625977609, 37.766701399454838 ], [ -122.438291383601225, 37.766725780787596 ], [ -122.438386133953244, 37.766664738151036 ], [ -122.438555364477878, 37.766297386980668 ], [ -122.439501839688162, 37.766575524599709 ], [ -122.441241683591315, 37.765270858517731 ], [ -122.441931912880605, 37.765295099009755 ], [ -122.442086687309455, 37.765324419445463 ], [ -122.443210588891787, 37.765339994614024 ], [ -122.443347278899211, 37.765332794099429 ], [ -122.443263297846215, 37.765217752592115 ], [ -122.443278634379993, 37.764726164248771 ], [ -122.443215275433289, 37.764557545459958 ], [ -122.443199827408847, 37.764468898600072 ], [ -122.44294975946913, 37.764109072128207 ], [ -122.442951036556252, 37.763677959114567 ], [ -122.443247528217242, 37.763690608015906 ], [ -122.443434935848089, 37.763875622244342 ], [ -122.44441170822752, 37.76398692869914 ], [ -122.444663866724483, 37.763326501903514 ], [ -122.445692026290132, 37.762347953618033 ], [ -122.445825769194499, 37.762264137786076 ], [ -122.445930590545728, 37.762233223779305 ], [ -122.446167833254592, 37.762219287792306 ], [ -122.446246565080784, 37.762246873735464 ], [ -122.44628722735257, 37.762310164748847 ], [ -122.446391621016517, 37.76223195154369 ], [ -122.446401427721412, 37.762069683149655 ], [ -122.446384044294348, 37.761816426422072 ], [ -122.44642928686055, 37.76181245987528 ], [ -122.446783402935864, 37.761781413739634 ], [ -122.446783403627563, 37.761781413728215 ], [ -122.44652973647915, 37.761396213495424 ], [ -122.446409895656728, 37.761094344377824 ], [ -122.446433636964471, 37.761006719141555 ], [ -122.446579328750119, 37.76090155472 ], [ -122.446866213158088, 37.76042156830691 ], [ -122.446952816919733, 37.760170129150154 ], [ -122.447157396221257, 37.759660681065917 ], [ -122.447394862769713, 37.759372842727622 ], [ -122.447681986744499, 37.759189835272018 ], [ -122.448080121328474, 37.759090506458826 ], [ -122.448534508559618, 37.759045234831405 ], [ -122.448576884007139, 37.759648639321185 ], [ -122.449214958651069, 37.759610853827809 ], [ -122.451553087455522, 37.759472365763493 ], [ -122.451578365088082, 37.759597660221687 ], [ -122.451956989358152, 37.761478249938222 ], [ -122.451957007208804, 37.761478336720671 ], [ -122.452096188532394, 37.76216681475799 ], [ -122.452096203587132, 37.762166887302627 ], [ -122.452181289886042, 37.762586053251901 ], [ -122.452233043763783, 37.762842560862168 ], [ -122.452399889409662, 37.763669482365366 ], [ -122.452569353429794, 37.764509361471809 ], [ -122.452569580477117, 37.764510482582956 ], [ -122.452569807022613, 37.764510478830069 ], [ -122.452569575903098, 37.764509334437378 ], [ -122.45351591398105, 37.764395394431268 ], [ -122.453114639516684, 37.762361563728888 ], [ -122.453744673977482, 37.761878784498755 ], [ -122.454009611320302, 37.762667869264533 ], [ -122.454946081907835, 37.7631787014639 ], [ -122.454945541962573, 37.76366305305779 ], [ -122.454845151642289, 37.763732313486969 ], [ -122.454179864833876, 37.763912200042988 ], [ -122.454217265424234, 37.764310945798535 ], [ -122.455466091062405, 37.764160565952579 ], [ -122.455781065686594, 37.764070070210742 ], [ -122.456669912105653, 37.763814688946653 ] ] ] }},
{"type": "Feature", "properties": {"OBJECTID":25,"ZIP_CODE":94132,"ID":94132},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.508287627239582, 37.733266432915535 ], [ -122.508283610098232, 37.733309766760698 ], [ -122.508258422649121, 37.733337665998171 ], [ -122.50825465624375, 37.73339026610973 ], [ -122.508261381386347, 37.733447151520778 ], [ -122.508260632832361, 37.733547429417492 ], [ -122.508268595371646, 37.733586094926054 ], [ -122.508272540744613, 37.733668094001438 ], [ -122.508265010681669, 37.733709427205042 ], [ -122.508286802179072, 37.733747856989588 ], [ -122.508296363517715, 37.733781688010566 ], [ -122.508300683356651, 37.733813548133803 ], [ -122.508285681955428, 37.733834406267761 ], [ -122.508267344574577, 37.733859785121595 ], [ -122.508247213289522, 37.733882790933777 ], [ -122.508237692618366, 37.73429843541993 ], [ -122.508237373460645, 37.734350633938469 ], [ -122.5082471948962, 37.734394074716711 ], [ -122.508256635722688, 37.734423443934411 ], [ -122.508245332959405, 37.734453167005526 ], [ -122.50826415897464, 37.734509845871564 ], [ -122.508256016313609, 37.734528526845153 ], [ -122.50825693455738, 37.734562505189558 ], [ -122.508280334704608, 37.734596443696226 ], [ -122.508271010987045, 37.734635403850064 ], [ -122.508266062787172, 37.734708283416225 ], [ -122.508267732334318, 37.734770062222154 ], [ -122.508272423230224, 37.734815650964592 ], [ -122.508314825176313, 37.734912789977905 ], [ -122.508324461220354, 37.734949366434215 ], [ -122.508350693626355, 37.735024118117309 ], [ -122.508408601293198, 37.735055064766357 ], [ -122.508454835865138, 37.735102005566297 ], [ -122.508462371966132, 37.735124883136479 ], [ -122.508476933993705, 37.735151761694588 ], [ -122.508477796681021, 37.735183680465923 ], [ -122.508497058717865, 37.735256490973484 ], [ -122.508537000388259, 37.735326545054548 ], [ -122.508539031954456, 37.735401708981378 ], [ -122.508528202252251, 37.735448935792135 ], [ -122.506718399360096, 37.735463437562494 ], [ -122.506718392445464, 37.735463437680252 ], [ -122.506717419598758, 37.735469757763546 ], [ -122.506541776696594, 37.735470423847289 ], [ -122.506142139643117, 37.735471938745221 ], [ -122.505711404999388, 37.735473569905054 ], [ -122.505257352091178, 37.735475287872006 ], [ -122.504189206002195, 37.735470928034005 ], [ -122.503104759187963, 37.735466491452826 ], [ -122.50249812714712, 37.735433799348435 ], [ -122.50206735537283, 37.735396211199387 ], [ -122.502021315734993, 37.73539219398544 ], [ -122.501556481916552, 37.735330499723666 ], [ -122.501555214836827, 37.735330188314435 ], [ -122.501291847576297, 37.735265403511711 ], [ -122.501214897179494, 37.735242075875206 ], [ -122.501097483348147, 37.735206481207975 ], [ -122.501097483002411, 37.735206481213844 ], [ -122.500970549161394, 37.735174012383368 ], [ -122.500888239775747, 37.73515295885273 ], [ -122.500650675572956, 37.735059919015036 ], [ -122.500571951887039, 37.735029088020617 ], [ -122.500289079616721, 37.734896880574155 ], [ -122.500140914702612, 37.734827630984967 ], [ -122.499430330098079, 37.734471850699563 ], [ -122.499196335607635, 37.734311616338935 ], [ -122.499180283, 37.734301056816975 ], [ -122.499086082983126, 37.734239092175393 ], [ -122.498948533172893, 37.734128137325406 ], [ -122.498483756692679, 37.733969859923228 ], [ -122.49837749236211, 37.733942575660954 ], [ -122.498050148013945, 37.73385852689691 ], [ -122.497707486783483, 37.733793124978028 ], [ -122.497675024009141, 37.73378860832171 ], [ -122.497251243304476, 37.7337296478455 ], [ -122.4970611531011, 37.733738715676616 ], [ -122.496807213285692, 37.733750829171804 ], [ -122.496636264393828, 37.733770812006838 ], [ -122.496636262010625, 37.733770813420726 ], [ -122.496635997165527, 37.733770842906516 ], [ -122.496635997172902, 37.733770843181105 ], [ -122.496635991376749, 37.733770846301013 ], [ -122.496448643026866, 37.733877460645239 ], [ -122.494403119131789, 37.733960247035334 ], [ -122.493941605376719, 37.733981316545631 ], [ -122.493941607430031, 37.733981341508411 ], [ -122.494014877350082, 37.735023413250019 ], [ -122.4940149282546, 37.735024137316628 ], [ -122.493857150107345, 37.735028823489081 ], [ -122.493857076611491, 37.73502785037892 ], [ -122.493407285267097, 37.734856242527158 ], [ -122.493406966558723, 37.734856121008917 ], [ -122.493274340840912, 37.734785121286002 ], [ -122.492843999903116, 37.734842083695071 ], [ -122.492330945602859, 37.73504482611267 ], [ -122.492142715245791, 37.735181846965403 ], [ -122.491805731315921, 37.735279805981911 ], [ -122.491730212101302, 37.735301758325164 ], [ -122.491320518441114, 37.735327019185135 ], [ -122.490973609504408, 37.735348171552815 ], [ -122.490725734916396, 37.735399781312303 ], [ -122.490526224357907, 37.735470000646821 ], [ -122.490270108429897, 37.735606337180243 ], [ -122.490460674310157, 37.735842274774221 ], [ -122.490521485540071, 37.736028873151284 ], [ -122.490552748713441, 37.736251597078756 ], [ -122.490686267381363, 37.736541968564268 ], [ -122.491162508402653, 37.737157782139001 ], [ -122.491211452414888, 37.737221069184358 ], [ -122.491334899611488, 37.737293023539365 ], [ -122.491198309070924, 37.737311342176547 ], [ -122.491113859834144, 37.737397356998116 ], [ -122.490894410355324, 37.737610557460023 ], [ -122.490695166321217, 37.737732995785407 ], [ -122.490475969759899, 37.737832474268195 ], [ -122.490364187143001, 37.737929559098433 ], [ -122.489970938868055, 37.737956983380037 ], [ -122.489794342484018, 37.737821521499782 ], [ -122.489559638156635, 37.737725144708122 ], [ -122.489310346380378, 37.737544144541232 ], [ -122.48917282500021, 37.737387715271872 ], [ -122.488933343471572, 37.73715804150379 ], [ -122.488518054177234, 37.737001890327612 ], [ -122.488261361358497, 37.736979897727672 ], [ -122.487883946457515, 37.736972903025247 ], [ -122.487473746906744, 37.73696000969079 ], [ -122.486865148034397, 37.736893072836374 ], [ -122.486239320534182, 37.736758103009961 ], [ -122.485767077957547, 37.736757243866982 ], [ -122.485398323256604, 37.736886930845941 ], [ -122.485055057260084, 37.737081691563745 ], [ -122.484981330342137, 37.737106613405395 ], [ -122.481727269492282, 37.73717192680251 ], [ -122.480654887744791, 37.73721905491567 ], [ -122.479601690542523, 37.737266045133403 ], [ -122.478500149938654, 37.73731300537402 ], [ -122.477443897267278, 37.737360110526431 ], [ -122.476368270747585, 37.737407342172453 ], [ -122.475288554960258, 37.737454742960537 ], [ -122.474232714891599, 37.737476308128976 ], [ -122.47327754880429, 37.737518149435381 ], [ -122.473161338869033, 37.737550437503423 ], [ -122.472088826157801, 37.737598476381557 ], [ -122.470962730039105, 37.737648904688974 ], [ -122.470924096654457, 37.737574149498428 ], [ -122.470869802376484, 37.736951620802394 ], [ -122.470805946330771, 37.736773656566506 ], [ -122.470679955794623, 37.736646992229609 ], [ -122.470574087980822, 37.736589028767121 ], [ -122.471068098407827, 37.73560670794447 ], [ -122.471400819161929, 37.735001415396148 ], [ -122.471569341481938, 37.734706810815084 ], [ -122.47162189337304, 37.733860262567148 ], [ -122.471660927786132, 37.733231459533314 ], [ -122.471741907147091, 37.731926920887339 ], [ -122.471797435951885, 37.731032354724164 ], [ -122.471838445445158, 37.730322499137451 ], [ -122.471849871701991, 37.730103151702181 ], [ -122.471866468726006, 37.729784522464136 ], [ -122.47154865397853, 37.729783977184617 ], [ -122.471594286340178, 37.728902143540118 ], [ -122.47190716730239, 37.728927188202036 ], [ -122.471915497296948, 37.728810174564472 ], [ -122.472056885104323, 37.726824049746483 ], [ -122.472214746614711, 37.723731792113433 ], [ -122.472322354823248, 37.721623768058436 ], [ -122.472321961375684, 37.721623810905996 ], [ -122.472161906508475, 37.721641204494453 ], [ -122.471983398728909, 37.721660603850793 ], [ -122.471760271986454, 37.721671203510112 ], [ -122.471759949192219, 37.721671054807977 ], [ -122.471673586030391, 37.721631204836193 ], [ -122.470779028465699, 37.721637301442819 ], [ -122.469876768913451, 37.721643443134909 ], [ -122.469739691960783, 37.721644376097736 ], [ -122.46897449401726, 37.721649578720722 ], [ -122.468660059213846, 37.721651715058712 ], [ -122.46807558495307, 37.721655684399515 ], [ -122.467922730856742, 37.721656721708847 ], [ -122.467615322899292, 37.721658807641923 ], [ -122.467185158975667, 37.721661725062667 ], [ -122.467028877336375, 37.721662784936917 ], [ -122.46658847710232, 37.721665769467251 ], [ -122.466277766029194, 37.721667874912988 ], [ -122.4659783260431, 37.721669902411627 ], [ -122.465564132461637, 37.72167263116085 ], [ -122.465391251749992, 37.721673798812127 ], [ -122.465390987937923, 37.721673800741335 ], [ -122.46448421418296, 37.721680006654026 ], [ -122.464483630192618, 37.721680010624304 ], [ -122.464483033412463, 37.721680014807887 ], [ -122.464479920172778, 37.721680035685075 ], [ -122.464479920230843, 37.721680037881669 ], [ -122.464483033470529, 37.721680017004481 ], [ -122.464484214240997, 37.721680008850619 ], [ -122.464434759676408, 37.721907819106278 ], [ -122.464293670852172, 37.722113739171022 ], [ -122.463981569397532, 37.722327034291936 ], [ -122.463751413929884, 37.722395206040865 ], [ -122.463189003103793, 37.722604614839412 ], [ -122.46284032675716, 37.72280173266644 ], [ -122.462654991355222, 37.722947907918154 ], [ -122.462431367748181, 37.72300886812026 ], [ -122.462271183905713, 37.723021052793868 ], [ -122.462271183761132, 37.723021008020723 ], [ -122.462265621163738, 37.721827887159478 ], [ -122.46226557117231, 37.721695003479546 ], [ -122.462267174469247, 37.721694992704748 ], [ -122.462267173874807, 37.721694970189525 ], [ -122.462264896007014, 37.721694985883083 ], [ -122.462254399326852, 37.72000857322422 ], [ -122.46226246554707, 37.719928593578096 ], [ -122.462245294921956, 37.718767790464547 ], [ -122.462244936309219, 37.718219524954932 ], [ -122.46263854285489, 37.718211149542661 ], [ -122.462639625007327, 37.717936035524978 ], [ -122.462638771382373, 37.717866433871905 ], [ -122.462633312624419, 37.717421207682776 ], [ -122.46262477066405, 37.716570820282072 ], [ -122.462620481465109, 37.716143794339722 ], [ -122.462615213395566, 37.71561930379395 ], [ -122.462607827629938, 37.714883950429027 ], [ -122.462602039439204, 37.714307653173123 ], [ -122.462588724439357, 37.714029538822885 ], [ -122.462554985317752, 37.713903926321834 ], [ -122.46256899895387, 37.713150165038506 ], [ -122.462580658473911, 37.712523033743715 ], [ -122.462581299448402, 37.712273520359908 ], [ -122.462570051320355, 37.711370301468136 ], [ -122.462063256954337, 37.711372729296876 ], [ -122.462545712573657, 37.711171028559598 ], [ -122.462554670587338, 37.71117015272295 ], [ -122.462558461843784, 37.710567432270715 ], [ -122.462893196389857, 37.710562754126848 ], [ -122.464175624997623, 37.710548242222522 ], [ -122.464766855714529, 37.710481381431755 ], [ -122.465994326901708, 37.710153924678359 ], [ -122.466791287837083, 37.709825747176509 ], [ -122.467161376112116, 37.709634146029515 ], [ -122.467717389066479, 37.709282172736899 ], [ -122.468442186669975, 37.708710365091008 ], [ -122.468469108419114, 37.708682445380624 ], [ -122.468919327757234, 37.708227236298555 ], [ -122.468936765178938, 37.708230944115137 ], [ -122.469206218211681, 37.708201815905348 ], [ -122.469249900139204, 37.708201720375776 ], [ -122.469298321590273, 37.708202284245147 ], [ -122.470831636978247, 37.708197238849166 ], [ -122.471323400170547, 37.708198733212157 ], [ -122.471333181497599, 37.708198762882461 ], [ -122.471352032181699, 37.708198820402657 ], [ -122.472828567745367, 37.708203294119777 ], [ -122.475753134738511, 37.70818173979459 ], [ -122.478975890370975, 37.708191500643373 ], [ -122.481681250730091, 37.708183096324262 ], [ -122.482448808625776, 37.708181853858243 ], [ -122.484067695750653, 37.708165047020167 ], [ -122.485639305786634, 37.708148710071598 ], [ -122.485678792700227, 37.708148575886831 ], [ -122.485857818531997, 37.708147968478251 ], [ -122.493439707434533, 37.708121990011122 ], [ -122.498399514345707, 37.70810473139138 ], [ -122.502773696653762, 37.708089337426266 ], [ -122.502794335644097, 37.708342053909199 ], [ -122.502870002532575, 37.708519665129593 ], [ -122.502919824088835, 37.708764674445675 ], [ -122.502952891728171, 37.708965329397188 ], [ -122.502970627807798, 37.709110275269509 ], [ -122.503182081004425, 37.70964337370075 ], [ -122.503220569589601, 37.710045154472041 ], [ -122.503285115419118, 37.710323219970874 ], [ -122.503377921169559, 37.710623467751866 ], [ -122.503454573963339, 37.710901670868985 ], [ -122.50338876186548, 37.711025718699396 ], [ -122.503480367063446, 37.71128134783477 ], [ -122.503538681827621, 37.71139229600675 ], [ -122.503607152393855, 37.711815885652477 ], [ -122.50392442753342, 37.711977024740428 ], [ -122.50398926023928, 37.712137307747028 ], [ -122.504018884937224, 37.712338364595105 ], [ -122.504050960348835, 37.712566162951994 ], [ -122.504083766615167, 37.712821075451494 ], [ -122.50415623472351, 37.713008011664755 ], [ -122.504154839245047, 37.713276897967987 ], [ -122.504262407999079, 37.713483152309799 ], [ -122.504310222769533, 37.713717550242542 ], [ -122.504341216541519, 37.713905192080865 ], [ -122.504415861257201, 37.714172784107312 ], [ -122.504527957268053, 37.714546871585753 ], [ -122.504619249107378, 37.714854698366167 ], [ -122.504734681128681, 37.715160054242361 ], [ -122.50484307775433, 37.715396854580646 ], [ -122.504983687289311, 37.715738179098203 ], [ -122.505015183177221, 37.715944354142479 ], [ -122.505064940330996, 37.716122405267939 ], [ -122.505277983345735, 37.716713159786387 ], [ -122.505378665806077, 37.716920217389642 ], [ -122.50544954257559, 37.71711198714339 ], [ -122.505534236338548, 37.717303178231596 ], [ -122.505550939969169, 37.717537761949714 ], [ -122.505627533936476, 37.717813217613234 ], [ -122.505733499538735, 37.718087829999391 ], [ -122.505795361000153, 37.718329885441641 ], [ -122.50575895814147, 37.718518674479142 ], [ -122.505846981170734, 37.71870500140907 ], [ -122.505947348818779, 37.718836178428148 ], [ -122.50603889798937, 37.719089059528848 ], [ -122.50604605833162, 37.719354365984017 ], [ -122.506067045042258, 37.719619436964734 ], [ -122.506098310388239, 37.719752820508575 ], [ -122.506085112584401, 37.71990447335908 ], [ -122.506073138870676, 37.719973352141601 ], [ -122.506058509098679, 37.720136017347265 ], [ -122.506066050462266, 37.720287316996625 ], [ -122.506093067115529, 37.720455453693035 ], [ -122.506119272327297, 37.720657598256366 ], [ -122.506215620201345, 37.720895976024821 ], [ -122.50629167450829, 37.721023102978798 ], [ -122.506401700968937, 37.721383832251519 ], [ -122.506521510466683, 37.721658550935217 ], [ -122.507655277014294, 37.728423963999113 ], [ -122.507663331414165, 37.728466062015535 ], [ -122.507703574614794, 37.728547442310145 ], [ -122.507748947428013, 37.728626675201951 ], [ -122.507757146370523, 37.728738132019352 ], [ -122.507784794329567, 37.728865395952631 ], [ -122.50778664879924, 37.728934039418284 ], [ -122.507794848177895, 37.729045496221595 ], [ -122.507815341525188, 37.729163954079155 ], [ -122.50786205937635, 37.729292953229624 ], [ -122.507900514994574, 37.72943617151067 ], [ -122.507937978539388, 37.729542665673854 ], [ -122.507979524242614, 37.729608229023043 ], [ -122.508001314382625, 37.729646658611678 ], [ -122.508029211854279, 37.729655111115953 ], [ -122.5080286514508, 37.729698385786008 ], [ -122.508045757198687, 37.729755437677454 ], [ -122.508054266358684, 37.729814352687157 ], [ -122.508053396658397, 37.729910168841855 ], [ -122.508060436991443, 37.729978723905262 ], [ -122.508062096980282, 37.730040159271667 ], [ -122.508075550679465, 37.730090062827138 ], [ -122.508077646560039, 37.730167629612303 ], [ -122.508084862782624, 37.730242705229408 ], [ -122.508102701340974, 37.730326871159861 ], [ -122.508101275259605, 37.730402094356123 ], [ -122.508118432954731, 37.730525073140598 ], [ -122.508154289380698, 37.730636058484791 ], [ -122.508159291744406, 37.730757184482151 ], [ -122.508147188358009, 37.730821258058114 ], [ -122.508157490852682, 37.730882546377835 ], [ -122.508176687224534, 37.73095295419229 ], [ -122.508155505168105, 37.731001044217557 ], [ -122.508070616958207, 37.731059491187089 ], [ -122.508063151964294, 37.731103226906185 ], [ -122.50803827155984, 37.731142452222485 ], [ -122.508010240050936, 37.731193062852363 ], [ -122.508020236798259, 37.731243025052876 ], [ -122.508042824992458, 37.73131097145712 ], [ -122.508040601277514, 37.731356677807476 ], [ -122.508006517533232, 37.731439325082015 ], [ -122.508021273414599, 37.731473410969826 ], [ -122.50803497807641, 37.731532581064045 ], [ -122.508027744858111, 37.731584897172127 ], [ -122.508025706262629, 37.731637468116226 ], [ -122.508040152865036, 37.731724095470533 ], [ -122.508058978047401, 37.731780774943978 ], [ -122.508063043647368, 37.731867235581163 ], [ -122.508091810132555, 37.731971817943496 ], [ -122.508115264680967, 37.732007815523275 ], [ -122.508158104591416, 37.732057217905187 ], [ -122.508170145127792, 37.732118820238121 ], [ -122.508180754565259, 37.732191434375828 ], [ -122.508206800359858, 37.732259321810233 ], [ -122.508252110705484, 37.732336151955884 ], [ -122.508247422336822, 37.732418641589092 ], [ -122.508261368501763, 37.73248673525643 ], [ -122.508297786010743, 37.732554445876552 ], [ -122.50831883177085, 37.732629285992957 ], [ -122.508349701883319, 37.732683699580726 ], [ -122.508381054023317, 37.73275596038183 ], [ -122.508401673597731, 37.732815012827984 ], [ -122.508412291945035, 37.732887970164001 ], [ -122.508377095537298, 37.732929431631767 ], [ -122.50834351603902, 37.732966745040173 ], [ -122.508312026503646, 37.733017414665078 ], [ -122.508294180910255, 37.733060983682996 ], [ -122.508292383963067, 37.733122478220693 ], [ -122.508302816757165, 37.733188571798578 ], [ -122.50828645856835, 37.733223187740961 ], [ -122.508287627239582, 37.733266432915535 ] ] ] }}
]}
================================================
FILE: bindings/python/package.json
================================================
{
"name": "keplergl-jupyter",
"version": "0.0.0",
"scripts": {
"build": "node esbuild.config.mjs",
"dev": "node esbuild.config.mjs --watch",
"typecheck": "tsc --noEmit",
"lint": "eslint src/",
"prettier": "prettier --write 'src/**/*.{ts,tsx}'"
},
"devDependencies": {
"@anywidget/types": "^0.2.0",
"@types/react": "^18.2.0",
"@types/react-dom": "^18.2.0",
"esbuild": "^0.20.0",
"typescript": "^5.4.0",
"eslint": "^8.57.0",
"@typescript-eslint/eslint-plugin": "^7.0.0",
"@typescript-eslint/parser": "^7.0.0",
"prettier": "^3.2.0"
},
"dependencies": {
"@kepler.gl/actions": "^3.2.0",
"@kepler.gl/components": "^3.2.0",
"@kepler.gl/processors": "^3.2.0",
"@kepler.gl/reducers": "^3.2.0",
"@kepler.gl/schemas": "^3.2.0",
"@kepler.gl/styles": "^3.2.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"redux": "^4.2.1",
"react-redux": "^8.0.5",
"styled-components": "^6.1.8",
"apache-arrow": "^21.0.0",
"assert": "^2.1.0",
"events": "^3.3.0"
}
}
================================================
FILE: bindings/python/pyproject.toml
================================================
[project]
name = "keplergl"
version = "0.4.0rc1"
description = "Kepler.gl Jupyter Widget"
readme = "README.md"
requires-python = ">=3.9"
license = {text = "MIT"}
authors = [{name = "Uber Technologies, Inc."}]
classifiers = [
"Framework :: Jupyter",
"Programming Language :: Python :: 3",
]
dependencies = [
"anywidget>=0.9.0",
"traitlets>=5.0",
"geopandas>=0.14.3",
"pyarrow>=16.0.0",
"geoarrow-pyarrow>=0.1.2",
"geoarrow-pandas>=0.1.1",
]
[project.optional-dependencies]
dev = [
"pytest>=8.0",
"pytest-cov>=4.0",
"jupyterlab>=4.0",
"notebook>=7.0",
]
[build-system]
requires = ["hatchling", "hatch-jupyter-builder>=0.9.0"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["keplergl"]
[tool.hatch.build.targets.wheel.shared-data]
"keplergl/static" = "share/jupyter/nbextensions/keplergl-jupyter"
[tool.hatch.build.hooks.jupyter-builder]
dependencies = ["hatch-jupyter-builder>=0.9.0"]
build-function = "hatch_jupyter_builder.npm_builder"
ensured-targets = ["keplergl/static/widget.js", "keplergl/static/widget.css"]
[tool.hatch.build.hooks.jupyter-builder.build-kwargs]
npm = ["npm"]
build_cmd = "build"
[tool.uv]
dev-dependencies = [
"pytest>=8.0",
"pytest-cov>=4.0",
"jupyterlab>=4.0",
"notebook>=7.0",
]
================================================
FILE: bindings/python/src/components/App.tsx
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React, {useEffect, useState, useRef} from 'react';
import {injectComponents} from '@kepler.gl/components';
import {KEPLER_ID} from '../store';
import type {WidgetModel} from '../types';
// Get the KeplerGl container component via dependency injection
const KeplerGl = injectComponents();
interface AppProps {
model: WidgetModel;
}
export function App({model}: AppProps) {
const [height, setHeight] = useState(model.get('height'));
const [width, setWidth] = useState(800);
const containerRef = useRef(null);
useEffect(() => {
const handleHeightChange = () => setHeight(model.get('height'));
model.on('change:height', handleHeightChange);
return () => model.off('change:height', handleHeightChange);
}, [model]);
// Observe container width changes
useEffect(() => {
if (!containerRef.current) return;
const resizeObserver = new ResizeObserver(entries => {
for (const entry of entries) {
if (entry.contentRect.width > 0) {
setWidth(entry.contentRect.width);
}
}
});
resizeObserver.observe(containerRef.current);
return () => resizeObserver.disconnect();
}, []);
return (
);
}
================================================
FILE: bindings/python/src/index.ts
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import type {WidgetModel} from './types';
import {KeplerGlWidget} from './widget';
import './styles.css';
export default {
initialize({model}: {model: WidgetModel}) {
return () => {};
},
render({model, el}: {model: WidgetModel; el: HTMLElement}) {
const widget = new KeplerGlWidget(model, el);
widget.mount();
model.on('change:data', () => widget.onDataChange());
model.on('change:config', () => widget.onConfigChange());
model.on('change:height', () => widget.onHeightChange());
return () => {
widget.unmount();
};
}
};
================================================
FILE: bindings/python/src/process-shim.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
export const process = {
env: {
NODE_ENV: typeof window !== 'undefined' ? 'production' : 'development'
},
browser: true,
version: '',
platform: 'browser',
nextTick: (fn, ...args) => queueMicrotask(() => fn(...args)),
cwd: () => '/',
argv: []
};
================================================
FILE: bindings/python/src/store.ts
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {createStore as createReduxStore, combineReducers, applyMiddleware, compose} from 'redux';
import {keplerGlReducer, enhanceReduxMiddleware} from '@kepler.gl/reducers';
export const KEPLER_ID = 'jupyter_kepler';
const customizedKeplerGlReducer = keplerGlReducer.initialState({
uiState: {
currentModal: null,
activeSidePanel: null
}
});
const reducers = combineReducers({
keplerGl: customizedKeplerGlReducer
});
export function createStore() {
const middlewares = enhanceReduxMiddleware([]);
const enhancers = [applyMiddleware(...middlewares)];
// @ts-expect-error Redux types are not compatible with TypeScript
return createReduxStore(reducers, {}, compose(...enhancers));
}
================================================
FILE: bindings/python/src/styles.css
================================================
.kepler-gl {
font-family: ff-clan-web-pro, "Helvetica Neue", Helvetica, sans-serif;
width: 100%;
height: 100%;
}
/* Ensure the map container has proper dimensions */
.kepler-gl .map-container {
width: 100%;
height: 100%;
}
/* Fix for maplibre-gl canvas */
.maplibregl-canvas {
position: absolute;
top: 0;
left: 0;
}
.maplibregl-map {
width: 100%;
height: 100%;
}
================================================
FILE: bindings/python/src/types.ts
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import type {AnyModel} from '@anywidget/types';
export interface KeplerGlWidgetModel {
data: Record;
config: KeplerGlConfig;
height: number;
}
export interface DatasetPayload {
id: string;
data: unknown;
format: 'csv' | 'json' | 'df' | 'arrow' | 'geojson' | 'geoarrow';
}
export interface KeplerGlConfig {
version?: string;
config?: {
visState?: Record;
mapState?: Record;
mapStyle?: Record;
};
}
export type WidgetModel = AnyModel;
================================================
FILE: bindings/python/src/utils/data.ts
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {tableFromIPC} from 'apache-arrow';
import {processCsvData, processGeojson} from '@kepler.gl/processors';
import type {ProcessorResult} from '@kepler.gl/types';
import {ALL_FIELD_TYPES} from '@kepler.gl/constants';
import type {DatasetPayload} from '../types';
const DEBUG = true;
function debug(...args: unknown[]) {
if (DEBUG) {
console.log('[keplergl-data]', ...args);
}
}
// GeoArrow extension metadata key
const GEOARROW_METADATA_KEY = 'ARROW:extension:name';
export async function processDataset(payload: DatasetPayload): Promise {
const {id, data, format} = payload;
debug('processDataset called:', {id, format, dataType: typeof data});
try {
let result: ProcessorResult | null = null;
switch (format) {
case 'arrow':
case 'geoarrow':
debug('Processing as arrow/geoarrow');
result = processGeoArrowData(data as string);
break;
case 'csv':
debug('Processing as CSV');
result = processCsvData(data as string);
break;
case 'geojson':
debug('Processing as GeoJSON');
result = processGeojson(data as object);
break;
case 'json':
case 'df':
debug('Processing as JSON/DataFrame', data);
result = processJsonData(data);
break;
default:
throw new Error(`Unknown data format: ${format}`);
}
debug(
'processDataset result:',
result ? {fields: result.fields?.length, rows: result.rows?.length} : null
);
return result;
} catch (error) {
console.error('[keplergl-data] Error processing dataset:', error);
throw error;
}
}
/**
* Process GeoArrow data by converting to row-based format.
* This avoids Arrow version mismatch issues between our code and kepler.gl's internal Arrow.
*/
function processGeoArrowData(base64Data: string): ProcessorResult | null {
debug('processGeoArrowData: decoding base64 data, length:', base64Data.length);
const bytes = Uint8Array.from(atob(base64Data), c => c.charCodeAt(0));
debug('processGeoArrowData: decoded to', bytes.length, 'bytes');
const table = tableFromIPC(bytes);
debug('processGeoArrowData: created table with', table.numRows, 'rows and', table.numCols, 'columns');
if (table.numRows === 0) {
return null;
}
// Build fields from schema, detecting geoarrow columns from metadata
const fields = table.schema.fields.map((field, fieldIndex) => {
const extensionName = field.metadata?.get(GEOARROW_METADATA_KEY);
const isGeoArrow = extensionName?.startsWith('geoarrow');
debug(`Field ${field.name}: type=${field.type.toString()}, extensionName=${extensionName}, isGeoArrow=${isGeoArrow}`);
let type: string;
let analyzerType: string;
if (isGeoArrow) {
type = ALL_FIELD_TYPES.geoarrow;
analyzerType = 'GEOMETRY';
} else {
type = arrowTypeToKeplerType(field.type);
analyzerType = arrowTypeToAnalyzerType(field.type);
}
return {
name: field.name,
id: field.name,
displayName: field.name,
format: '',
fieldIdx: fieldIndex,
type,
analyzerType
};
});
// Convert Arrow table to row-based format
// For geometry columns, convert to GeoJSON strings that kepler.gl can parse
const rows: any[][] = [];
for (let rowIdx = 0; rowIdx < table.numRows; rowIdx++) {
const row: any[] = [];
for (let colIdx = 0; colIdx < table.numCols; colIdx++) {
const field = fields[colIdx];
const value = table.getChildAt(colIdx)?.get(rowIdx);
if (field.type === ALL_FIELD_TYPES.geoarrow && value !== null) {
// Convert geoarrow geometry to GeoJSON string
row.push(arrowGeometryToGeoJSON(value));
} else {
row.push(value);
}
}
rows.push(row);
}
debug('processGeoArrowData: converted to', rows.length, 'rows');
debug('processGeoArrowData: first row sample:', rows[0]?.slice(0, 3));
// Update field types for geometry columns to geojson since we converted them
const updatedFields = fields.map(f => {
if (f.type === ALL_FIELD_TYPES.geoarrow) {
return {...f, type: ALL_FIELD_TYPES.geojson, analyzerType: 'GEOMETRY'};
}
return f;
});
return {
fields: updatedFields,
rows
};
}
/**
* Convert Arrow geometry value to GeoJSON string.
* Handles various geoarrow geometry types (point, polygon, etc.)
*/
function arrowGeometryToGeoJSON(geom: any): string {
try {
// The geometry is stored as nested Arrow structures
// We need to extract coordinates and build GeoJSON
if (geom === null || geom === undefined) {
return '';
}
// For geoarrow polygon type, the structure is:
// List>> for polygon rings
// We need to recursively extract the coordinates
const coords = extractCoordinates(geom);
if (!coords || coords.length === 0) {
return '';
}
// Determine geometry type based on structure
let geojson: any;
if (typeof coords[0] === 'number') {
// Point: [x, y]
geojson = {type: 'Point', coordinates: coords};
} else if (typeof coords[0][0] === 'number') {
// LineString or Polygon ring: [[x, y], ...]
// Check if it's closed (polygon) or open (linestring)
const first = coords[0];
const last = coords[coords.length - 1];
if (coords.length >= 4 && first[0] === last[0] && first[1] === last[1]) {
geojson = {type: 'Polygon', coordinates: [coords]};
} else {
geojson = {type: 'LineString', coordinates: coords};
}
} else if (Array.isArray(coords[0][0])) {
// Polygon with rings or MultiLineString
if (typeof coords[0][0][0] === 'number') {
geojson = {type: 'Polygon', coordinates: coords};
} else {
geojson = {type: 'MultiPolygon', coordinates: coords};
}
} else {
// Fallback - try to make a polygon
geojson = {type: 'Polygon', coordinates: coords};
}
return JSON.stringify(geojson);
} catch (e) {
debug('arrowGeometryToGeoJSON error:', e);
return '';
}
}
/**
* Recursively extract coordinates from Arrow geometry structure
*/
function extractCoordinates(value: any): any {
if (value === null || value === undefined) {
return null;
}
// If it's a simple object with x, y properties (Point struct)
if (typeof value === 'object' && 'x' in value && 'y' in value) {
return [value.x, value.y];
}
// If it's an array-like structure (Arrow Vector or Array)
if (Array.isArray(value) || (typeof value === 'object' && typeof value.length === 'number')) {
const result: any[] = [];
const len = value.length;
for (let i = 0; i < len; i++) {
const item = Array.isArray(value) ? value[i] : value.get?.(i) ?? value[i];
const extracted = extractCoordinates(item);
if (extracted !== null) {
result.push(extracted);
}
}
return result;
}
// If it has a toArray method (Arrow Vector)
if (typeof value.toArray === 'function') {
return extractCoordinates(value.toArray());
}
// If it has a get method but no length (might be a struct)
if (typeof value.get === 'function') {
// Try to get x, y from struct
const x = value.get('x') ?? value.get(0);
const y = value.get('y') ?? value.get(1);
if (x !== undefined && y !== undefined) {
return [x, y];
}
}
return null;
}
/**
* Map Arrow data type to Kepler field type
*/
function arrowTypeToKeplerType(arrowType: any): string {
const typeStr = arrowType.toString();
if (typeStr.startsWith('Int') || typeStr.startsWith('Uint')) {
return ALL_FIELD_TYPES.integer;
}
if (typeStr.startsWith('Float') || typeStr === 'Decimal') {
return ALL_FIELD_TYPES.real;
}
if (typeStr === 'Bool') {
return ALL_FIELD_TYPES.boolean;
}
if (typeStr.startsWith('Timestamp') || typeStr.startsWith('Date')) {
return ALL_FIELD_TYPES.timestamp;
}
if (typeStr === 'Utf8' || typeStr === 'LargeUtf8') {
return ALL_FIELD_TYPES.string;
}
return ALL_FIELD_TYPES.string;
}
/**
* Map Arrow data type to type-analyzer type
*/
function arrowTypeToAnalyzerType(arrowType: any): string {
const typeStr = arrowType.toString();
if (typeStr.startsWith('Int') || typeStr.startsWith('Uint')) {
return 'INT';
}
if (typeStr.startsWith('Float') || typeStr === 'Decimal') {
return 'FLOAT';
}
if (typeStr === 'Bool') {
return 'BOOLEAN';
}
if (typeStr.startsWith('Timestamp') || typeStr.startsWith('Date')) {
return 'DATETIME';
}
return 'STRING';
}
function processJsonData(data: unknown): ProcessorResult | null {
debug('processJsonData input:', data);
if (typeof data === 'object' && data !== null && 'columns' in data) {
const {columns, data: rows} = data as {columns: string[]; data: unknown[][]};
debug('processJsonData parsed:', {columns, rowCount: rows?.length, firstRow: rows?.[0]});
const result = {
fields: columns.map(name => ({name})),
rows: rows as any[][]
};
debug('processJsonData result:', {
fieldCount: result.fields.length,
rowCount: result.rows.length
});
return result;
}
debug('processJsonData: data does not have expected structure');
return null;
}
================================================
FILE: bindings/python/src/utils/serialization.ts
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
export function decodeBase64ToBytes(base64: string): Uint8Array {
const binaryString = atob(base64);
const bytes = new Uint8Array(binaryString.length);
for (let i = 0; i < binaryString.length; i++) {
bytes[i] = binaryString.charCodeAt(i);
}
return bytes;
}
export function encodeToBase64(bytes: Uint8Array): string {
let binary = '';
for (let i = 0; i < bytes.byteLength; i++) {
binary += String.fromCharCode(bytes[i]);
}
return btoa(binary);
}
================================================
FILE: bindings/python/src/widget.ts
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {createRoot, Root} from 'react-dom/client';
import React from 'react';
import {Provider} from 'react-redux';
import {createStore, KEPLER_ID} from './store';
import {App} from './components/App';
import {processDataset} from './utils/data';
import type {WidgetModel, DatasetPayload} from './types';
import type {ParsedConfig} from '@kepler.gl/types';
import {addDataToMap, receiveMapConfig, wrapTo} from '@kepler.gl/actions';
const DEBUG = false;
function debug(...args: unknown[]) {
if (DEBUG) {
console.log('[keplergl-widget]', ...args);
}
}
export class KeplerGlWidget {
private model: WidgetModel;
private el: HTMLElement;
private root: Root | null = null;
private store: ReturnType;
constructor(model: WidgetModel, el: HTMLElement) {
debug('KeplerGlWidget constructor');
this.model = model;
this.el = el;
this.store = createStore();
}
mount() {
debug('mount() called');
this.el.style.height = `${this.model.get('height')}px`;
this.root = createRoot(this.el);
this.root.render(
React.createElement(Provider, {
store: this.store,
children: React.createElement(App, {model: this.model})
})
);
this.loadData();
this.loadConfig();
this.store.subscribe(() => this.syncConfigToPython());
}
unmount() {
debug('unmount() called');
this.root?.unmount();
this.root = null;
}
onDataChange() {
debug('onDataChange() called');
this.loadData();
}
onConfigChange() {
debug('onConfigChange() called');
this.loadConfig();
}
onHeightChange() {
this.el.style.height = `${this.model.get('height')}px`;
}
private async loadData() {
const data = this.model.get('data');
debug('loadData() called, data keys:', Object.keys(data));
debug('loadData() raw data:', JSON.stringify(data, null, 2));
// Wait for the KeplerGl component to register itself
await this.waitForInstance();
for (const [name, payload] of Object.entries(data)) {
debug(`Processing dataset '${name}'...`);
try {
const processed = await processDataset(payload as DatasetPayload);
debug(
`Dataset '${name}' processed:`,
processed ? {fields: processed.fields, rowCount: processed.rows?.length} : null
);
if (!processed) {
debug(`Dataset '${name}' returned null, skipping`);
continue;
}
const action = addDataToMap({
datasets: {
info: {id: name, label: name},
data: processed
}
});
// Wrap the action to target the specific kepler.gl instance
const wrappedAction = wrapTo(KEPLER_ID, action);
debug(`Dispatching addDataToMap for '${name}'`, wrappedAction);
this.store.dispatch(wrappedAction);
debug(`addDataToMap dispatched for '${name}'`);
} catch (error) {
console.error(`[keplergl-widget] Error processing dataset '${name}':`, error);
}
}
debug('loadData() complete, store state:', this.store.getState());
}
private waitForInstance(): Promise {
return new Promise(resolve => {
const checkInstance = () => {
const state = this.store.getState() as {keplerGl?: Record};
if (state.keplerGl && state.keplerGl[KEPLER_ID]) {
debug('Instance registered:', KEPLER_ID);
resolve();
return true;
}
return false;
};
// Check immediately
if (checkInstance()) return;
// Otherwise subscribe and wait
const unsubscribe = this.store.subscribe(() => {
if (checkInstance()) {
unsubscribe();
}
});
// Timeout after 5 seconds
setTimeout(() => {
unsubscribe();
console.warn('[keplergl-widget] Timeout waiting for instance registration');
resolve();
}, 5000);
});
}
private loadConfig() {
const config = this.model.get('config');
debug('loadConfig() called, config:', config);
if (config && Object.keys(config).length > 0) {
this.store.dispatch(wrapTo(KEPLER_ID, receiveMapConfig(config as ParsedConfig, {})));
}
}
private syncConfigToPython() {
// TODO: Extract config from store and sync back
}
}
================================================
FILE: bindings/python/tests/conftest.py
================================================
# SPDX-License-Identifier: MIT
# Copyright contributors to the kepler.gl project
"""Pytest configuration."""
import pytest
import pandas as pd
import geopandas as gpd
from shapely.geometry import Point
@pytest.fixture
def sample_df():
return pd.DataFrame({
"lat": [37.7749, 34.0522],
"lng": [-122.4194, -118.2437],
"value": [100, 200],
})
@pytest.fixture
def sample_gdf():
return gpd.GeoDataFrame(
{"name": ["SF", "LA"]},
geometry=[Point(-122.4194, 37.7749), Point(-118.2437, 34.0522)],
crs="EPSG:4326",
)
================================================
FILE: bindings/python/tests/test_serializers.py
================================================
# SPDX-License-Identifier: MIT
# Copyright contributors to the kepler.gl project
"""Serializer tests."""
import json
import pytest
import pandas as pd
import geopandas as gpd
from shapely.geometry import Point, Polygon
from keplergl.serializers import serialize_dataset
class TestDataFrameSerialization:
"""Tests for DataFrame serialization (from DataFrame.ipynb)."""
def test_serialize_dataframe(self, sample_df):
result = serialize_dataset(sample_df, "test")
assert result["id"] == "test"
assert result["format"] == "df"
assert "data" in result
def test_serialize_dataframe_with_cities(self):
"""Test DataFrame with city data (from DataFrame.ipynb)."""
df = pd.DataFrame({
'City': ['Buenos Aires', 'Brasilia', 'Santiago', 'Bogota', 'Caracas'],
'Country': ['Argentina', 'Brazil', 'Chile', 'Colombia', 'Venezuela'],
'Latitude': [-34.58, -15.78, -33.45, 4.60, 10.48],
'Longitude': [-58.66, -47.91, -70.66, -74.08, -66.86],
'Time': ['2019-09-01 08:00', '2019-09-01 09:00', '2019-09-01 10:00',
'2019-09-01 11:00', '2019-09-01 12:00'],
})
result = serialize_dataset(df, "data_1")
assert result["id"] == "data_1"
assert result["format"] == "df"
assert result["data"]["columns"] == ['City', 'Country', 'Latitude', 'Longitude', 'Time']
assert len(result["data"]["data"]) == 5
def test_serialize_dataframe_with_hex_data(self):
"""Test DataFrame with H3 hex IDs and mixed types (from Load kepler.gl.ipynb)."""
df = pd.DataFrame({
'hex_id': ['89283082c2fffff', '8928308288fffff', '89283082c07ffff'],
'value': [64, 73, 65],
'is_true': [True, True, True],
'float_value': [64.1, 73.1, 65.1],
'empty': ['', '', ''],
'time': ['11/1/17 11:00', '11/1/17 11:00', '11/1/17 11:00'],
})
result = serialize_dataset(df, "data_1")
assert result["id"] == "data_1"
assert result["format"] == "df"
assert 'hex_id' in result["data"]["columns"]
assert 'value' in result["data"]["columns"]
assert 'is_true' in result["data"]["columns"]
def test_serialize_dataframe_with_nan_filled(self):
"""Test DataFrame with NaN values filled with empty string."""
df = pd.DataFrame({
'col1': [1, 2, 3],
'col2': ['a', None, 'c'],
})
df = df.fillna('')
result = serialize_dataset(df, "test")
assert result["format"] == "df"
assert result["data"]["data"][1][1] == ''
class TestGeoDataFrameSerialization:
"""Tests for GeoDataFrame serialization (from GeoDataFrame.ipynb)."""
def test_serialize_geodataframe(self, sample_gdf):
result = serialize_dataset(sample_gdf, "test")
assert result["id"] == "test"
assert result["format"] == "geoarrow"
assert "data" in result
def test_serialize_geodataframe_with_timestamp(self):
"""Test GeoDataFrame with pd.Timestamp column.
Regression test for issue where GeoDataFrame containing Timestamp
columns would fail during Arrow serialization.
"""
df = pd.DataFrame({
'City': ['Buenos Aires'],
'Country': ['Argentina'],
'Latitude': [-34.58],
'Longitude': [-58.66],
'Timestamp': pd.Timestamp(2002, 3, 3),
})
gdf = gpd.GeoDataFrame(
df,
geometry=gpd.points_from_xy(df.Longitude, df.Latitude),
)
result = serialize_dataset(gdf, "cities")
assert result["id"] == "cities"
assert result["format"] == "geoarrow"
assert "data" in result
def test_serialize_geodataframe_points_from_xy(self):
"""Test GeoDataFrame created with points_from_xy (from GeoDataFrame.ipynb)."""
df = pd.DataFrame({
'City': ['Buenos Aires', 'Brasilia', 'Santiago', 'Bogota', 'Caracas'],
'Country': ['Argentina', 'Brazil', 'Chile', 'Colombia', 'Venezuela'],
'Latitude': [-34.58, -15.78, -33.45, 4.60, 10.48],
'Longitude': [-58.66, -47.91, -70.66, -74.08, -66.86],
})
gdf = gpd.GeoDataFrame(
df,
geometry=gpd.points_from_xy(df.Longitude, df.Latitude),
)
result = serialize_dataset(gdf, "cities")
assert result["id"] == "cities"
assert result["format"] == "geoarrow"
assert "data" in result
def test_serialize_geodataframe_with_polygons(self):
"""Test GeoDataFrame with Polygon geometries (like zipcode boundaries)."""
gdf = gpd.GeoDataFrame({
'ZIP_CODE': ['94107', '94105'],
'geometry': [
Polygon([(-122.40, 37.78), (-122.39, 37.78),
(-122.39, 37.77), (-122.40, 37.77)]),
Polygon([(-122.39, 37.79), (-122.38, 37.79),
(-122.38, 37.78), (-122.39, 37.78)]),
],
})
result = serialize_dataset(gdf, "zipcode")
assert result["id"] == "zipcode"
assert result["format"] == "geoarrow"
assert "data" in result
def test_serialize_geodataframe_with_crs(self):
"""Test GeoDataFrame with explicit CRS."""
gdf = gpd.GeoDataFrame(
{"name": ["SF", "LA"]},
geometry=[Point(-122.4194, 37.7749), Point(-118.2437, 34.0522)],
crs="EPSG:4326",
)
result = serialize_dataset(gdf, "test")
assert result["format"] == "geoarrow"
assert "data" in result
class TestGeoJSONSerialization:
"""Tests for GeoJSON serialization (from GeoJSON.ipynb)."""
def test_serialize_geojson_dict(self):
"""Test GeoJSON as dict."""
geojson = {"type": "FeatureCollection", "features": []}
result = serialize_dataset(geojson, "test")
assert result["format"] == "geojson"
assert result["data"] == geojson
def test_serialize_geojson_feature_collection(self):
"""Test GeoJSON FeatureCollection with features."""
geojson = {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {"type": "Point", "coordinates": [-122.4, 37.8]},
"properties": {"name": "San Francisco"},
},
{
"type": "Feature",
"geometry": {"type": "Point", "coordinates": [-118.2, 34.0]},
"properties": {"name": "Los Angeles"},
},
],
}
result = serialize_dataset(geojson, "geojson")
assert result["id"] == "geojson"
assert result["format"] == "geojson"
assert result["data"]["type"] == "FeatureCollection"
assert len(result["data"]["features"]) == 2
def test_serialize_geojson_string(self):
"""Test GeoJSON as string (from GeoJSON.ipynb - reading from file)."""
geojson_str = json.dumps({
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {"type": "Point", "coordinates": [-122.4, 37.8]},
"properties": {"name": "Test"},
},
],
})
result = serialize_dataset(geojson_str, "geojson")
assert result["id"] == "geojson"
assert result["format"] == "geojson"
assert result["data"]["type"] == "FeatureCollection"
def test_serialize_geojson_polygon(self):
"""Test GeoJSON with Polygon geometry."""
geojson = {
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [[
[-122.4, 37.8], [-122.3, 37.8],
[-122.3, 37.7], [-122.4, 37.7], [-122.4, 37.8],
]],
},
"properties": {"name": "Test Area"},
}
result = serialize_dataset(geojson, "polygon")
assert result["format"] == "geojson"
class TestCSVSerialization:
"""Tests for CSV string serialization."""
def test_serialize_csv(self):
csv_data = "lat,lng\n37.7749,-122.4194"
result = serialize_dataset(csv_data, "test")
assert result["format"] == "csv"
assert result["data"] == csv_data
def test_serialize_csv_multirow(self):
"""Test CSV with multiple rows."""
csv_data = "City,Latitude,Longitude\nSF,37.77,-122.42\nLA,34.05,-118.24"
result = serialize_dataset(csv_data, "cities")
assert result["id"] == "cities"
assert result["format"] == "csv"
assert result["data"] == csv_data
class TestEdgeCases:
"""Tests for edge cases and error handling."""
def test_serialize_unsupported_type(self):
"""Test that unsupported types raise ValueError."""
with pytest.raises(ValueError, match="Unsupported data type"):
serialize_dataset([1, 2, 3], "test")
def test_serialize_empty_dataframe(self):
"""Test serializing empty DataFrame."""
df = pd.DataFrame({'col1': [], 'col2': []})
result = serialize_dataset(df, "empty")
assert result["format"] == "df"
assert result["data"]["columns"] == ['col1', 'col2']
assert result["data"]["data"] == []
def test_serialize_single_row_dataframe(self):
"""Test serializing single-row DataFrame."""
df = pd.DataFrame({'lat': [37.77], 'lng': [-122.42]})
result = serialize_dataset(df, "single")
assert result["format"] == "df"
assert len(result["data"]["data"]) == 1
def test_serialize_dataframe_with_various_dtypes(self):
"""Test DataFrame with various data types."""
df = pd.DataFrame({
'int_col': [1, 2, 3],
'float_col': [1.1, 2.2, 3.3],
'str_col': ['a', 'b', 'c'],
'bool_col': [True, False, True],
})
result = serialize_dataset(df, "mixed")
assert result["format"] == "df"
assert len(result["data"]["columns"]) == 4
================================================
FILE: bindings/python/tests/test_widget.py
================================================
# SPDX-License-Identifier: MIT
# Copyright contributors to the kepler.gl project
"""Widget tests."""
import pytest
from keplergl import KeplerGl
def test_widget_creation():
widget = KeplerGl()
assert widget.height == 400
assert widget.data == {}
assert widget.config == {}
def test_widget_with_height():
widget = KeplerGl(height=600)
assert widget.height == 600
def test_widget_with_dataframe(sample_df):
widget = KeplerGl(data={"cities": sample_df})
assert "cities" in widget.data
def test_widget_with_geodataframe(sample_gdf):
widget = KeplerGl(data={"points": sample_gdf})
assert "points" in widget.data
def test_add_data(sample_df):
widget = KeplerGl()
widget.add_data(sample_df, name="test")
assert "test" in widget.data
def test_widget_with_config():
config = {"version": "v1", "config": {"mapState": {"zoom": 10}}}
widget = KeplerGl(config=config)
assert widget.config == config
================================================
FILE: bindings/python/tsconfig.json
================================================
{
"compilerOptions": {
"target": "ES2020",
"module": "ESNext",
"moduleResolution": "bundler",
"jsx": "react-jsx",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"declaration": true,
"outDir": "./dist",
"rootDir": "./src",
"resolveJsonModule": true,
"isolatedModules": true
},
"include": ["src/**/*"],
"exclude": ["node_modules", "keplergl/static"]
}
================================================
FILE: contributing/CODE_OF_CONDUCT.md
================================================
# Code of Conduct
kepler.gl is an [OpenJS Foundation](https://openjsf.org/) project. Please be mindful of and adhere to the OpenJS Foundation's [Code of Conduct](https://github.com/openjs-foundation/cross-project-council/blob/main/CODE_OF_CONDUCT.md) when contributing to kepler.gl.
================================================
FILE: contributing/DEVELOPERS.md
================================================
# Developing Kepler.gl
## Table of contents
- [Development Setup](./#development-setup)
- [Running Tests](./#running-tests)
- [Coding Rules](./#coding-rules)
- [Commit Message Guidelines](./#git-commit-guidelines)
- [Writing Documentation](./#writing-documentation-this-part-is-not-available-yet)
- [Developing kepler.gl Website](./#develop-the-kepler-gl-website)
- [Publish the website](./#publish-the-website)
- [Publish a new version](./#publish-kepler-gl-package-to-npm)
## Development Setup
This document describes how to set up your development environment to build and test Kepler.gl, and
explains the basic mechanics of using `git`, `node`, `yarn`.
### Installing Dependencies
Before you can build Kepler.gl, you must install and configure the following dependencies on your machine:
- [Git](http://git-scm.com/): The [Github Guide to Installing Git][git-setup] is a good source of information.
- [Node.js ^18.x](http://nodejs.org): We use Node to generate the documentation, run a
development web server, run tests, and generate distributable files. Depending on your system,
you can install Node either from source or as a pre-packaged bundle.
We recommend using [nvm](https://github.com/creationix/nvm) (or
[nvm-windows](https://github.com/coreybutler/nvm-windows))
to manage and install Node.js, which makes it easy to change the version of Node.js per project.
- [Yarn 4.4.0](https://yarnpkg.com): We use Yarn to install our Node.js module dependencies
(rather than using npm). See the detailed [installation instructions][yarn-install].
- [Volta](https://volta.sh/): We use Volta to manage Node and Yarn versions without you manually switching them
#### Fork Kepler.gl Repo
If you plan to contribute code to kepler.gl, you must have a [GitHub account](https://github.com/signup/free) so you can push code and open Pull Requests in the [GitHub Repository][github]. You must [fork](http://help.github.com/forking) the
[main kepler.gl repository][github] to [create a Pull Request][github-pr].
#### Developing kepler.gl
If you are using Windows then using `WSL (Windows Subsystem for Linux)` is recommended. You can download a Linux Distribution like e.g. `Ubuntu` and inside of that distribution you can follow along with the next steps. You can find the detailed instructions about `WSL` [here](https://learn.microsoft.com/en-us/windows/wsl/).
If you are using MacOS or Linux then you can follow along.
Also please make sure the code editor you are using it has proper support for [EditorConfig](https://editorconfig.org/).VSCode has the [EditorConfig for VS Code](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig) Plugin. Please install necessary support for EditorConfig for your editor so that other code formatters do not have an effect on the Kepler.GL code.
To develop features, debug code, run tests, we use webpack to start a local web server and serve the kepler.gl demo app from the src directory.
```bash
# Clone your kepler.gl fork repository:
git clone git@github.com:/kepler.gl.git
# Go to the kepler.gl directory:
cd kepler.gl
# Add the main kepler.gl repository as an upstream remote to your repository:
git remote add upstream "git@github.com:keplergl/kepler.gl.git"
```
Install [volta](https://docs.volta.sh/guide/getting-started)
On Unix, MacOS
```bash
# install Volta on Unix
curl https://get.volta.sh | bash
```
On Windows
```bash
winget install Volta.Volta
```
Install `nvm` to set the proper Node.js version for the project. Follow instructions to install nvm [here](https://github.com/nvm-sh/nvm).
```bash
# Install the proper Node.js version for the Kepler.gl project
nvm install
# Use the downloaded Node.js version for the Kepler.gl project
nvm use
# Enable Yarn
corepack enable
```
Install dependencies with Yarn
```bash
# Install Puppeteer
yarn dlx puppeteer
# Install JavaScript dependencies:
yarn install
yarn bootstrap
# Setup Mapbox access token locally
export MapboxAccessToken=
# Set up other environment variables
export DropboxClientId=
export MapboxExportToken=
export CartoClientId=
export FoursquareClientId=
export FoursquareDomain=
export FoursquareAPIURL=
export FoursquareUserMapsURL=
# Start the kepler.gl demo app
yarn start
```
An demo app will be served at `http://localhost:8080/`
This is the demo app we hosted on [http://kepler.gl/#/demo][demo-app]. By default, it serves non-minified source code inside the src directory.
#### Develop with deck.gl
When develop, upgrade, debug deck.gl, Demo app can load deck.gl directly from src
```
// load deck.gl from node_modules/deck.gl/src, sub-modules from node_modules/@deck.gl//src
npm run start:deck
// load deck.gl src from the deck.gl folder parallel to kepler.gl
npm run start:deck-src
```
## Running Tests
- We write node and browser tests with [Tape][tape], [Enzyme][enzyme], [jsDom](https://www.npmjs.com/package/jsdom) and [@probe.gl/test-util](https://uber-web.github.io/probe.gl/docs/modules/test-utils/browser-driver), and lint with [ESLint][eslint]. Make sure to run test before submitting your PR. To run all of the tests once
```bash
yarn test
```
- Yarn test runs lint and 3 tests in different env. To run them separately
```bash
# lint
yarn lint
# node tests
yarn test-node
# jsdom tests
yarn test-browser
# headless browser tests, uses probe.gl to run browser tests with puppeteer
yarn test-headless
```
- Here are some handy scripts / tricks for debugging tests
1. add `.only` to errored tests to only run 1 test at a time
```js
test.only('MapContainerFactory', t => {
// tests
}
```
2. run all tests in chromium browser. This runs node, browser and headless browser tests in chromium browser and logs the output, you can step through the code with chrome developer tools
```bash
yarn test-browser-drive
```
3. Fast tests, runs node and browser tests without tap-spec output
```bash
yarn test-fast
```
To generate a coverage report
```bash
yarn cover
```
## Test React components
Enzyme is no longer supported therefore we are now transitioning to [testing library](https://testing-library.com/).
We have introduced an eslint rule to deprecate the usage of enzyme so if you attempt to create new tests using enzyme
it will throw an error when running lint.
In order to create new tests cases please take advantage of [Testing Library](https://testing-library.com/).
All necessary dependencies are already installed, you can start testing your React components by following this
[doc](https://testing-library.com/docs/react-testing-library/intro);
### Migrating enzyme to React testing library
If you are interested in migrating enzyme tests to RTL (react testing library) feel free to check
the [official migration guidelines](https://testing-library.com/docs/react-testing-library/migrate-from-enzyme/)
## Coding Rules
To ensure consistency throughout the source code, keep these rules in mind as you are working:
- All features or bug fixes **must be tested** by one or more [specs][unit-testing].
- All public API methods **must be documented** with using jsdoc. To see how we document our APIs, please check
out the existing source code and see the section about [writing documentation](#documentation)
This project use Eslint together Prettier. The linter should automatically inform you if you break any rules (like incorrect indenting, line breaking or if you forget a semicolon). Before doing a pull request, make sure to run the linter.
```bash
# To run the linter
yarn lint
```
## Git Commit Guidelines
To commit your changes, please follow our rules over how our git commit messages can be formatted. This leads to **more readable and unified messages** that are easy to follow. But also,
we use the git commit messages to **generate the kepler.gl change log**.
### Commit Message Format
Each commit message consists of a **header** and a **body**. The header has a special
format that includes a **type** and a **subject**. The **PR** # will be auto-generated once the PR is merged.
```
[]()
#e.g.
[Enhancement] Upgrade type-analyzer to pass 0/1 as integer (#317)
* Upgrade to type-analyzer@0.2.1
* Add test
```
The **header** is mandatory and the **scope** of the header is optional.
Any line of the commit message cannot be longer 100 characters! This allows the message to be easier
to read on GitHub as well as in various git tools.
### Revert
If the commit reverts a previous commit, it should begin with `revert: `, followed by the header
of the reverted commit.
In the body it should say: `This reverts commit .`, where the hash is the SHA of the commit
being reverted.
A commit with this format is automatically created by the [`git revert`][git-revert] command.
### Type
Must be one of the following, capitalized.
- **[Feat]**: A new feature
- **[Enhancement]**: An update of a existing feature
- **[Bug]**: A bug fix
- **[Docs]**: Documentation only changes
- **[Style]**: Changes that do not affect the meaning of the code (white-space, formatting, missing
semi-colons, typos, etc)
- **[Refactor]**: A code change that neither fixes a bug nor adds a feature
- **[Perf]**: A code change that improves performance
- **[Test]**: Adding missing or correcting existing tests
- **[Chore]**: Changes to the build process or auxiliary tools and libraries such as documentation
generation
### Subject
The subject contains succinct description of the change:
- use the imperative, present tense: "change" not "changed" nor "changes"
- don't capitalize first letter
- no dot (.) at the end
### Body
Just as in the **subject**, use the imperative, present tense: "change" not "changed" nor "changes".
The body should include the motivation for the change and contrast this with previous behavior.
**Breaking Changes** should start with the word `BREAKING CHANGE:` with a space or two newlines.
The rest of the commit message is then used for this.
## Writing Documentation (THIS PART IS NOT AVAILABLE YET)
The Kepler.gl project uses [jsdoc](http://usejsdoc.org/)
This means that all the docs are stored inline in the source code and so are kept in sync as it
changes.
There is also extra content (the developer guide, error pages, the tutorial,
and misceallenous pages) that live inside the Kepler.gl repository as markdown files.
This means that since we generate the documentation from the source code, we can easily provide
version-specific documentation by simply checking out a version of Kepler.gl and running the build.
### Building and viewing the docs locally
We build Api docs from scratch using [documentation.js][documentationjs]. It generates docs from jsdoc:
```bash
yarn docs
```
### Writing jsdoc
You can find JSDoc instructions [here][jsDoc]. Documentation.js is interested in the following block tags:
- `@param {type} name description` - describes a parameter of a function
- `@returns {type} description` - describes what a function returns
- `@property` - describes a property of an object
- `@description` - used to provide a description of a component in markdown
- `@example` - specifies an example.
- `@public` - Only methods with @public tag will be included in the docs
The `type` in `@param` and `@returns` must be wrapped in `{}` curly braces, e.g. `{Object|Array}`.
Parameters can be made optional by _either_ appending a `=` to the type, e.g. `{Object=}`, _or_ by
putting the `[name]` in square brackets.
Default values are only possible with the second syntax by appending `=` to the parameter
name, e.g. `@param {boolean} [ownPropsOnly=false]`.
## Develop The kepler.gl Website
Make sure to export mapbox token in the same terminal before start the server.
```bash
$ export MapboxAccessToken=
```
In order to start
```bash
$ yarn web
```
To checkout the build
```bash
$ cd website && yarn build
```
## Publish the website
[Netlify](https://www.netlify.com/) is used to support kepler.gl demo website.
Netlify is connected to the following github triggers:
- Create a new PR
- Updated an existing PR
- Merge PR onto master
A new production version of kepler.gl website is automatically created and deployed every time a PR is merged onto master.
In order to support testing environment, Netlify is setup to generate build every time a PR is created or updated.
By generating builds for new and updated PRs we support CI/CD so developers can test their own build in a production like environment
### Publish kepler.gl package to NPM
#### Requirements
To prepare a new release you need the following tool:
- [gh-release](https://www.npmjs.com/package/gh-release): this tool facilitates the creation of a new git tag (using package.json version number) and a github release (different from npm release)
Setup `gh-release` with your github api token ([instructions](https://www.npmjs.com/package/gh-release#command-line-interface))
### Push a new release
In order to publish a new version of kepler.gl a developer must perform the following steps:
1. Update **package.json** file with the new version value. Run `npm version major | minor | patch` to update version accordingly.
2. Update **CHANGELOG.md** with the latest commit changes. Print commits with `git log --pretty=oneline --abbrev-commit`
3. Create a new PR for review.
4. Once the PR is reviewed and merged, pull the latest changes locally.
5. Run `gh-release`: this command will create a new Github Release with the new updated CHANGELOG.md section.
6. Once the new Github Release is created, Github will automatically trigger a new Github Action flow that will automatically build and publish the new package version to NPM registry.
**After Release is completed and pushed**
- Update each of the example folder package.json kepler.gl dependency with the newer. To update all examples, run
```bash
npm run example-version
```
This step is required after the new version is published otherwise it would fail.
## Gitbook documentation
Kepler.gl documentation is hosted on [gitbook](https://kepler-gl.gitbook.io/kepler-gl/). For more information [read here](https://docs.gitbook.com/)
### Documentation structure
The documentation layout is defined by **SUMMARY.md** file where the table of contents define each entry has the following structure
```markdown
- [ENTRY_LABEL](FILE_PATH)
e.g.
- [Welcome](README.md)
```
The above file is used by Gitbook to generate the doc navigation visible on the left-hand side of Kepler.gl doc website.
Gitbook also has the ability to show description for each folder/section of the documentation by creating an entry in **SUMMARY.md**
and create a new **README.md** file within said folder. The README.md file is a Gitbook convention that treats README files as if they were the main entry file for each folder.
The following is an example of doc section in SUMMARY.md file:
```markdown
- [User guides](docs/user-guides/README.md)
```
### Update Documentation
The integration with Gitbook allows to update the documentation in two different ways:
- Update doc files in the Kepler.gl repo. Follow the PR flow like any other changes
- Update documentation directly on Gitbook.
For both scenarios, changes will be propagated from one system to the other and vice versa. When updating Gitbook, a new git commit will be push to the Kepler.gl master branch.
[demo-app]: http://kepler.gl/#/demo
[documentationjs]: https://documentation.js.org/
[eslint]: https://eslint.org/
[enzyme]: https://airbnb.io/enzyme/
[git-revert]: https://git-scm.com/docs/git-revert
[git-setup]: https://help.github.com/articles/set-up-git
[github]: https://github.com/keplergl/kepler.gl
[github-pr]: https://help.github.com/articles/creating-a-pull-request/
[jsDoc]: http://usejsdoc.org/
[tape]: https://github.com/substack/tape
[yarn-install]: https://yarnpkg.com/getting-started/install
================================================
FILE: contributing/README.md
================================================
# CONTRIBUTING
Great to have you here. Here are a few ways you can help make kepler.gl even better!
* [Developer Certification of Origin \(DCO\)](./#developer-certification-of-origin-dco)
* [Code of Conduct](./#code-of-conduct)
* [Questions and Problems](./#questions-and-problems)
* [Issues and Bugs](./#issues-and-bugs)
* [Feature Requests](./#feature-requests)
* [Improving Documentation](./#improving-documentation)
* [Submitting Pull Request](./#submit-pr)
## Developer Certification of Origin (DCO)
When committing code, kepler.gl requires [Developer Certificate of Origin (DCO)][dco] process to be followed.
The DCO is a lightweight way for contributors to certify that they wrote or otherwise have the right to submit the code they are contributing to the project. Here is the full text of the DCO, reformatted for readability:
```
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or
(b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or
(c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.
(d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved.
```
### DCO Sign-Off Methods
Contributors sign-off that they adhere to these requirements by adding a Signed-off-by line to commit messages.
```
Signed-off-by: Shan He
```
Use the `-s` or `--signoff` command line to append this automatically to your commit message:
```
$ git commit -s -m 'This is my commit message'
```
## Code of Conduct
Help us keep kepler.gl open and inclusive. Please read and follow our [Code of Conduct](./CODE_OF_CONDUCT.md).
## Questions and Problems
We are trying to keep our Github page for issues, bugs and feature requests only. You've got much better chances of getting supports on [Stack Overflow][stack]. Many people including our engineers are ready to answer questions on Stack Overflow. Your question might already been answered there.
## Issues and Bugs
If you find a bug, you can help us by submitting an [Issue][git-iss] to our GitHub Repository. Please use the github [Bug Report Template][git-bug] and fill in as much as information as possible. Even better, you can submit a [Pull Request][git-pr] with a fix.
# Feature Requests
If you want to contribute or add new features, please use [Issue][git-iss] on github projects to start a new discussion using the [Feature Request Template][git-feature]. If this receive a Go ahead, you can submit your patch as PR to the repository.
If you would like to implement a new feature then consider what kind of change it is:
* **Take a look at our [roadmap][roadmap]** It lists out the items we are planning to work on
* **Pick your item** Pick an item to execute
* **Claim the item** Reply in the ticket linked in the roadmap to claim the item, one of the member of the technical team will respond
* **Major Changes** that you wish to contribute to the project should be discussed first in an
[GitHub issue][github-issues] that clearly outlines the changes and benefits of the feature.
* **Small Changes** can directly be crafted and submitted to the [GitHub Repository][github]
as a Pull Request. See the section about [Pull Request Submission Guidelines](#submit-pr), and
for detailed information the [core development documentation][developers].
* **Let's review your code** Create a pull request
## Improving Documentation
Questions about kepler.gl? you can checkout the examples and medium articles on [kepler.gl][website].
[User Guides][user-guide] and API Docs are saved in the [docs][api-docs] folder on Github. Help us improve documentation here by submitting a Pull Request.
## Submitting Pull Request
First, follow the [development documentation][developers] for detailed guidance on environment setup, code style, testing and commit message conventions.
* Search [GitHub][git-pr] for an open or closed Pull Request
that relates to your submission. You don't want to duplicate effort.
* Create the [development environment][developers.setup]
* Make your changes in a new git branch:
```bash
$ git checkout -b my-fix-branch master
```
* Create your patch commit, **including appropriate test cases**.
* If the changes affect public APIs, change or add relevant [documentation][developers.documentation].
* Run [tests][developers.tests], and ensure that all tests pass.
* Commit your changes using a descriptive commit message that follows our
[commit message conventions][developers.commits]. Adherence to the conventions is required, because release notes are automatically generated from these messages.
[cla]: https://cla-assistant.io/keplergl/kepler.gl
[github]: https://github.com/keplergl/kepler.gl
[git-iss]: https://github.com/keplergl/kepler.gl/issues
[git-pr]: https://github.com/keplergl/kepler.gl/pulls
[git-feature]: https://github.com/keplergl/kepler.gl/issues/new?template=feature_request.md
[git-bug]: https://github.com/keplergl/kepler.gl/issues/new?template=bug_report.md
[stack]: https://stackoverflow.com/questions/tagged/kepler.gl
[api-docs]: https://github.com/keplergl/kepler.gl/tree/master/docs
[website]: https://keplergl.github.io/kepler.gl
[user-guide]: https://github.com/keplergl/kepler.gl/blob/master/docs/a-introduction.md
[roadmap]: https://github.com/keplergl/kepler.gl/wiki/Roadmap
[developers]: DEVELOPERS.md
[developers.commits]: ./#commits
[developers.documentation]: ./#documentation
[developers.rules]: ./#rules
[developers.setup]: ./#setup
[developers.tests]: ./#tests
[dco]: https://probot.github.io/apps/dco/
================================================
FILE: docs/README.md
================================================
# Docs
## Table of contents
- [What's new?](./release-notes.md)
- [API References](./api-reference/README.md)
- [User Guides](./user-guides/README.md)
- [Jupyter Notebook](./keplergl-jupyter/README.md)
================================================
FILE: docs/RFC/table-class.md
================================================
Replace kepler.gl dataset with table class
## Current Dataset structure
```js
export type KeplerDataset = {
id: string;
label?: string;
color: RGBColor;
// fields and data
fields: KeplerField[];
dataContainer: DataContainer;
allIndexes: number[];
filteredIndex: number[];
filteredIdxCPU: number[];
filteredIndexForDomain: number[];
fieldPairs: {
defaultName: string;
pair: any;
suffix: string[];
}[];
gpuFilter: {
filterRange: number[][];
filterValueUpdateTriggers: any;
filterValueAccessor: any;
};
filterRecord: FilterRecord;
filterRecordCPU: FilterRecord;
changedFilters: any;
// table-injected metadata
sortColumn?: {
// column name: sorted idx
[key: string]: number[];
};
sortOrder?: string; // ASCENDING | DESCENDING | UNSORT
pinnedColumns?: string[];
// table-injected metadata
metadata?: object;
};
export type KeplerField = {
analyzerType: string;
id: string;
name: string;
format: string;
fieldIdx: number;
type: string;
// meta data, storing domain and mappedValues
filterProps?: any;
};
```
### Table class should handle:
#### Add and remove columns (partially supported)
Missing features
- Copy over column meta, if replacing an existing column
- Recompute fieldPairs
#### Current kepler.gl methods:
1. `initalize`
to replace utils/dataset-utils `createNewDataEntry` This table method takes a `ProtoTable` and returns a `Table` to be saved in kepler state.
```js
table.initalize(protoTable);
// following meta data should be initialized
table.allIndexes,
table.filteredIndex,
table.filteredIndexForDomain,
table.fieldPairs,
table.gpuFilter;
```
2. `getValue(columnName, rowIdx)`
Get the value of a cell
Should be a curried function
getValue(columName) = idx => value
3. `getColumnDomain(columnName)`
to replace `filter-utils.js` `getFieldDomain`
Get the value domain of a specific column used in filter
4. `getColumnScaleDomain(columnName, scaleType)`
to replace `base-layer.js` `layer.calculateLayerDomain`
Get the domain of this column based on scale type
5. `getSampleData(rows)`
Get a sample of rows to calculate layer boundaries
6. `parseFieldValue(value, type) => string`
Parse cell value based on column type and return a string representation
Value the field value, type the field type
7. `sortDatasetByColumn`
Sort a column, return an sorted index, assign to `sortColumn`, `sortOrder`
8. `filterDataset(filters, layers, opt)`
to replace `filter-utils.js` `filterDataset`
Apply filters to dataset, return the filtered dataset with updated `gpuFilter`, `filterRecord`, `filteredIndex`, `filteredIndexForDomain`
9. `filterDatasetCPU(filters)`
to replace `filter-utils.js` `filterDatasetCPU`
Apply filters to a dataset all on CPU, assign to `filteredIdxCPU`, `filterRecordCPU`
================================================
FILE: docs/api-reference/README.md
================================================
# API Reference
## Table of Contents
- [Overview](./#overview)
- [Ecosystem](./ecosystem.md)
- [Component](./ecosystem.md#component)
- [Reducer and Forward Dispatcher](./ecosystem.md#reducer-and-forward-dispatcher)
- [Actions and Updaters](./ecosystem.md#actions-and-updaters)
- [Processors and Schema Manager](./ecosystem.md#processors-and-schema-manager)
- [Get Started](./get-started.md)
- Advanced Usage
- [Using reducer plugin](./advanced-usages/reducer-plugin.md)
- [Custom reducer initial state](./advanced-usages/custom-initial-state.md)
- [Using updaters to modify kepler.gl state](./advanced-usages/using-updaters.md)
- [Forward actions](./advanced-usages/forward-actions.md)
- [Saving and loading maps with schema manager](./advanced-usages/saving-loading-w-schema.md)
- [Replace UI component](./advanced-usages/replace-ui-component.md)
- [Custom Mapbox Host](./advanced-usages/custom-mapbox-host.md)
- [Custom Map Styles](./advanced-usages/custom-map-styles.md)
- [Localization](./localization/README.md)
- API
- [Components](./components/README.md)
- [Reducers](./reducers/README.md)
- [Actions and Updaters](./actions/actions.md)
- [Data Processor](./processors/processors.md)
- [Schemas](./schemas/README.md)
## Overview
Kepler.gl is a __Redux-connected__ component. You can embed kepler.gl in your App, which uses redux to manage its state. The basic implementation of kepler.gl reducer is simple. However, to make the most of it, it's recommended to have basic knowledge on:
- [React](https://reactjs.org/)
- [Redux](https://redux.js.org/) state container
- [React Redux connect](https://react-redux.js.org/)
To start out with kepler.gl, you simply need to add the Kepler.gl UI component and mount the Kepler.gl reducer. To give the user full access of all the functionalities of kepler.gl, this package also includes actions, schema managers and a set of utilities to load and save map data.
================================================
FILE: docs/api-reference/actions/README.md
================================================
# Actions
...Coming soon
================================================
FILE: docs/api-reference/actions/actions.md
================================================
### Table of Contents
- [forwardActions][1]
- [forwardTo][2]
- [isForwardAction][5]
- [unwrap][7]
- [wrapTo][9]
- [ActionTypes][12]
- [mapStyleActions][14]
- [addCustomMapStyle][15]
- [inputMapStyle][16]
- [loadCustomMapStyle][18]
- [loadMapStyleErr][20]
- [loadMapStyles][22]
- [mapConfigChange][24]
- [mapStyleChange][26]
- [requestMapStyles][28]
- [set3dBuildingColor][30]
- [main][32]
- [addDataToMap][33]
- [keplerGlInit][36]
- [receiveMapConfig][38]
- [resetMapConfig][41]
- [visStateActions][42]
- [addFilter][43]
- [addLayer][45]
- [applyCPUFilter][47]
- [enlargeFilter][49]
- [interactionConfigChange][51]
- [layerConfigChange][53]
- [layerTextLabelChange][55]
- [layerTypeChange][57]
- [layerVisConfigChange][59]
- [layerVisualChannelConfigChange][61]
- [loadFiles][63]
- [loadFilesErr][65]
- [onLayerClick][67]
- [onLayerHover][69]
- [onMapClick][71]
- [onMouseMove][72]
- [removeDataset][74]
- [removeFilter][76]
- [removeLayer][78]
- [reorderLayer][80]
- [setEditorMode][83]
- [setFilter][86]
- [setFilterPlot][88]
- [setMapInfo][90]
- [showDatasetTable][92]
- [toggleFilterAnimation][94]
- [toggleLayerForMap][96]
- [updateAnimationTime][98]
- [updateFilterAnimationSpeed][100]
- [updateLayerAnimationSpeed][102]
- [updateLayerBlending][104]
- [updateVisData][106]
- [uiStateActions][108]
- [addNotification][109]
- [cleanupExportImage][111]
- [hideExportDropdown][112]
- [openDeleteModal][113]
- [removeNotification][115]
- [setExportData][117]
- [setExportDataType][118]
- [setExportFiltered][120]
- [setExportImageDataUri][122]
- [setExportImageSetting][124]
- [setExportSelectedDataset][126]
- [setUserMapboxAccessToken][128]
- [showExportDropdown][130]
- [startExportingImage][132]
- [toggleMapControl][133]
- [toggleModal][135]
- [toggleSidePanel][137]
- [rootActions][139]
- [deleteEntry][140]
- [registerEntry][142]
- [renameEntry][144]
- [mapStateActions][146]
- [fitBounds][147]
- [togglePerspective][150]
- [toggleSplitMap][152]
- [updateMap][155]
- [layerColorUIChange][158]
- [setExportMapFormat][160]
## forwardActions
A set of helpers to forward dispatch actions to a specific instance reducer
### forwardTo
Returns an action dispatcher that wraps and forwards the actions to a specific instance
**Parameters**
- `id` **[string][162]** instance id
- `dispatch` **[Function][163]** action dispatcher
**Examples**
```javascript
// action and forward dispatcher
import {toggleSplitMap, forwardTo} from '@kepler.gl/actions';
import {connect} from 'react-redux';
const MapContainer = props => (
props.keplerGlDispatch(toggleSplitMap())}/>
)
const mapDispatchToProps = (dispatch, props) => ({
dispatch,
keplerGlDispatch: forwardTo(‘foo’, dispatch)
});
export default connect(
state => state,
mapDispatchToProps
)(MapContainer);
```
### isForwardAction
Whether an action is a forward action
**Parameters**
- `action` **[Object][164]** the action object
Returns **[boolean][165]** boolean - whether the action is a forward action
### unwrap
Unwrap an action
**Parameters**
- `action` **[Object][164]** the action object
Returns **[Object][164]** unwrapped action
### wrapTo
Wrap an action into a forward action that only modify the state of a specific
kepler.gl instance. kepler.gl reducer will look for signatures in the action to
determine whether it needs to be forwarded to a specific instance reducer.
wrapTo can be curried. You can create a curried action wrapper by only supply the `id` argument
A forward action looks like this
```js
{
type: "@@kepler.gl/LAYER_CONFIG_CHANGE",
payload: {
type: '@@kepler.gl/LAYER_CONFIG_CHANGE',
payload: {},
meta: {
// id of instance
_id_: id
// other meta
}
},
meta: {
_forward_: '@redux-forward/FORWARD',
_addr_: '@@KG_id'
}
};
```
**Parameters**
- `id` **[string][162]** The id to forward to
- `action` **[Object][164]** the action object {type: string, payload: \*}
**Examples**
```javascript
import {wrapTo, togglePerspective} from '@kepler.gl/actions';
// This action will only dispatch to the KeplerGl instance with `id: map_1`
this.props.dispatch(wrapTo('map_1', togglePerspective()));
// You can also create a curried action for each instance
const wrapToMap1 = wrapTo('map_1');
this.props.dispatch(wrapToMap1(togglePerspective()));
```
## ActionTypes
Kepler.gl action types, can be listened by reducers to perform additional tasks whenever an action is called in kepler.gl
Type: [Object][164]
**Examples**
```javascript
// store.js
import {handleActions} from 'redux-actions';
import {createStore, combineReducers, applyMiddleware} from 'redux';
import {taskMiddleware} from 'react-palm/tasks';
import keplerGlReducer from '@kepler.gl/reducers';
import {ActionTypes} from '@kepler.gl/actions';
const appReducer = handleActions(
{
// listen on kepler.gl map update action to store a copy of viewport in app state
[ActionTypes.UPDATE_MAP]: (state, action) => ({
...state,
viewport: action.payload
})
},
{}
);
const reducers = combineReducers({
app: appReducer,
keplerGl: keplerGlReducer
});
export default createStore(reducers, {}, applyMiddleware(taskMiddleware));
```
## mapStyleActions
Actions handled mostly by `mapStyle` reducer.
They manage the display of base map, such as loading and receiving base map styles,
hiding and showing map layers, user input of custom map style url.
### addCustomMapStyle
Add map style from user input to reducer and set it to current style
This action is called when user click confirm after putting in a valid style url in the custom map style dialog.
It should not be called from outside kepler.gl without a valid `inputStyle` in the `mapStyle` reducer.
param {void}
- **ActionTypes**: [`ActionTypes.ADD_CUSTOM_MAP_STYLE`][12]
- **Updaters**: [`mapStyleUpdaters.addCustomMapStyleUpdater`][166]
### inputMapStyle
Input a custom map style object
- **ActionTypes**: [`ActionTypes.INPUT_MAP_STYLE`][12]
- **Updaters**: [`mapStyleUpdaters.inputMapStyleUpdater`][167]
**Parameters**
- `inputStyle` **[Object][164]**
- `inputStyle.url` **[string][162]** style url e.g. `'mapbox://styles/heshan/xxxxxyyyyzzz'`
- `inputStyle.id` **[string][162]** style url e.g. `'custom_style_1'`
- `inputStyle.style` **[Object][164]** actual mapbox style json
- `inputStyle.name` **[string][162]** style name
- `inputStyle.layerGroups` **[Object][164]** layer groups that can be used to set map layer visibility
- `inputStyle.icon` **[Object][164]** icon image data url
- `mapState` **[Object][164]** mapState is optional
### loadCustomMapStyle
Callback when a custom map style object is received
- **ActionTypes**: [`ActionTypes.LOAD_CUSTOM_MAP_STYLE`][12]
- **Updaters**: [`mapStyleUpdaters.loadCustomMapStyleUpdater`][168]
**Parameters**
- `customMapStyle` **[Object][164]**
- `customMapStyle.icon` **[string][162]**
- `customMapStyle.style` **[Object][164]**
- `customMapStyle.error` **any**
### loadMapStyleErr
Callback when load map style error
- **ActionTypes**: [`ActionTypes.LOAD_MAP_STYLE_ERR`][12]
- **Updaters**: [`mapStyleUpdaters.loadMapStyleErrUpdater`][169]
**Parameters**
- `error` **any**
### loadMapStyles
Callback when load map style success
- **ActionTypes**: [`ActionTypes.LOAD_MAP_STYLES`][12]
- **Updaters**: [`mapStyleUpdaters.loadMapStylesUpdater`][170]
**Parameters**
- `newStyles` **[Object][164]** a `{[id]: style}` mapping
### mapConfigChange
Update `visibleLayerGroups`to change layer group visibility
- **ActionTypes**: [`ActionTypes.MAP_CONFIG_CHANGE`][12]
- **Updaters**: [`mapStyleUpdaters.mapConfigChangeUpdater`][171]
**Parameters**
- `mapStyle` **[Object][164]** new config `{visibleLayerGroups: {label: false, road: true, background: true}}`
### mapStyleChange
Change to another map style. The selected style should already been loaded into `mapStyle.mapStyles`
- **ActionTypes**: [`ActionTypes.MAP_STYLE_CHANGE`][12]
- **Updaters**: [`mapStyleUpdaters.mapStyleChangeUpdater`][172]
**Parameters**
- `styleType` **[string][162]** the style to change to
### requestMapStyles
Request map style style object based on style.url.
- **ActionTypes**: [`ActionTypes.REQUEST_MAP_STYLES`][12]
- **Updaters**: [`mapStyleUpdaters.requestMapStylesUpdater`][173]
**Parameters**
- `mapStyles` **[Array][174]<[Object][164]>**
### set3dBuildingColor
Set 3d building layer group color
- **ActionTypes**: [`ActionTypes.SET_3D_BUILDING_COLOR`][12]
- **Updaters**: [`mapStyleUpdaters.set3dBuildingColorUpdater`][175]
**Parameters**
- `color` **[Array][174]** [r, g, b]
## main
Main kepler.gl actions, these actions handles loading data and config into kepler.gl reducer. These actions
is listened by all subreducers,
### addDataToMap
Add data to kepler.gl reducer, prepare map with preset configuration if config is passed.
Kepler.gl provides a handy set of utils to parse data from different formats to the `data` object required in dataset. You rarely need to manually format the data obejct.
Use `KeplerGlSchema.getConfigToSave` to generate a json blob of the currents instance config.
The config object value will always have higher precedence than the options properties.
Kepler.gl uses `dataId` in the config to match with loaded dataset. If you pass a config object, you need
to match the `info.id` of your dataset to the `dataId` in each `layer`, `filter` and `interactionConfig.tooltips.fieldsToShow`
- **ActionTypes**: [`ActionTypes.ADD_DATA_TO_MAP`][12]
- **Updaters**: [`combinedUpdaters.addDataToMapUpdater`][176]
**Parameters**
- `data` **[Object][164]**
- `data.datasets` **([Array][174]<[Object][164]> | [Object][164])** **\*required** datasets can be a dataset or an array of datasets
Each dataset object needs to have `info` and `data` property.
- `data.datasets.info` **[Object][164]** \-info of a dataset
- `data.datasets.info.id` **[string][162]** id of this dataset. If config is defined, `id` should matches the `dataId` in config.
- `data.datasets.info.label` **[string][162]** A display name of this dataset
- `data.datasets.data` **[Object][164]** **\*required** The data object, in a tabular format with 2 properties `fields` and `rows`
- `data.datasets.data.fields` **[Array][174]<[Object][164]>** **\*required** Array of fields,
- `data.datasets.data.fields.name` **[string][162]** **\*required** Name of the field,
- `data.datasets.data.rows` **[Array][174]<[Array][174]>** **\*required** Array of rows, in a tabular format with `fields` and `rows`
- `data.options` **[Object][164]**
- `data.options.centerMap` **[boolean][165]** `default: true` if `centerMap` is set to `true` kepler.gl will
place the map view within the data points boundaries. `options.centerMap` will override `config.mapState` if passed in.
- `data.options.readOnly` **[boolean][165]** `default: false` if `readOnly` is set to `true`
the left setting panel will be hidden
- `data.options.keepExistingConfig` **[boolean][165]** whether to keep exiting map data and associated layer filter interaction config `default: false`.
- `data.config` **[Object][164]** this object will contain the full kepler.gl instance configuration {mapState, mapStyle, visState}
**Examples**
```javascript
// app.js
import {addDataToMap} from '@kepler.gl/actions';
const sampleTripData = {
fields: [
{name: 'tpep_pickup_datetime', format: 'YYYY-M-D H:m:s', type: 'timestamp'},
{name: 'pickup_longitude', format: '', type: 'real'},
{name: 'pickup_latitude', format: '', type: 'real'}
],
rows: [
['2015-01-15 19:05:39 +00:00', -73.99389648, 40.75011063],
['2015-01-15 19:05:39 +00:00', -73.97642517, 40.73981094],
['2015-01-15 19:05:40 +00:00', -73.96870422, 40.75424576]
]
};
const sampleConfig = {
visState: {
filters: [
{
id: 'me',
dataId: 'test_trip_data',
name: 'tpep_pickup_datetime',
type: 'timeRange',
view: 'enlarged'
}
]
}
};
this.props.dispatch(
addDataToMap({
datasets: {
info: {
label: 'Sample Taxi Trips in New York City',
id: 'test_trip_data'
},
data: sampleTripData
},
options: {
centerMap: true,
readOnly: false,
keepExistingConfig: false
},
info: {
title: 'Taro and Blue',
description: 'This is my map'
},
config: sampleConfig
})
);
```
### keplerGlInit
Initialize kepler.gl reducer. It is used to pass in `mapboxApiAccessToken` to `mapStyle` reducer.
- **ActionTypes**: [`ActionTypes.INIT`][12]
- **Updaters**: [`mapStyleUpdaters.initMapStyleUpdater`][177]
**Parameters**
- `payload` **[Object][164]**
- `payload.mapboxApiAccessToken` **[string][162]** mapboxApiAccessToken to be saved to mapStyle reducer
- `payload.mapboxApiUrl` **[string][162]** mapboxApiUrl to be saved to mapStyle reducer.
- `payload.mapStylesReplaceDefault` **[Boolean][165]** mapStylesReplaceDefault to be saved to mapStyle reducer
### receiveMapConfig
Pass config to kepler.gl instance, prepare the state with preset configs.
Calling `KeplerGlSchema.parseSavedConfig` to convert saved config before passing it in is required.
You can call `receiveMapConfig` before passing in any data. The reducer will store layer and filter config, waiting for
data to come in. When data arrives, you can call `addDataToMap` without passing any config, and the reducer will try to match
preloaded configs. This behavior is designed to allow asynchronous data loading.
It is also useful when you want to prepare the kepler.gl instance with some preset layer and filter settings.
**Note** Sequence is important, `receiveMapConfig` needs to be called **before** data is loaded. Currently kepler.gl doesn't allow calling `receiveMapConfig` after data is loaded.
It will reset current configuration first then apply config to it.
- **ActionTypes**: [`ActionTypes.RECEIVE_MAP_CONFIG`][12]
- **Updaters**: [`mapStateUpdaters.receiveMapConfigUpdater`][178], [`mapStyleUpdaters.receiveMapConfigUpdater`][179], [`visStateUpdaters.receiveMapConfigUpdater`][180]
**Parameters**
- `config` **[Object][164]** **\*required** The Config Object
- `options` **[Object][164]** **\*optional** The Option object
- `options.centerMap` **[boolean][165]** `default: true` if `centerMap` is set to `true` kepler.gl will
place the map view within the data points boundaries
- `options.readOnly` **[boolean][165]** `default: false` if `readOnly` is set to `true`
the left setting panel will be hidden
- `options.keepExistingConfig` **[boolean][165]** whether to keep exiting layer filter and interaction config `default: false`.
**Examples**
```javascript
import {receiveMapConfig} from '@kepler.gl/actions';
import KeplerGlSchema from '@kepler.gl/schemas';
const parsedConfig = KeplerGlSchema.parseSavedConfig(config);
this.props.dispatch(receiveMapConfig(parsedConfig));
```
### resetMapConfig
Reset all sub-reducers to its initial state. This can be used to clear out all configuration in the reducer.
- **ActionTypes**: [`ActionTypes.RESET_MAP_CONFIG`][12]
- **Updaters**: [`mapStateUpdaters.resetMapConfigUpdater`][181], [`mapStyleUpdaters.resetMapConfigMapStyleUpdater`][182], [`mapStyleUpdaters.resetMapConfigMapStyleUpdater`][182], [`visStateUpdaters.resetMapConfigUpdater`][183]
## visStateActions
Actions handled mostly by `visState` reducer.
They manage how data is processed, filtered and displayed on the map by operates on layers,
filters and interaction settings.
### addFilter
Add a new filter
- **ActionTypes**: [`ActionTypes.ADD_FILTER`][12]
- **Updaters**: [`visStateUpdaters.addFilterUpdater`][184]
**Parameters**
- `dataId` **[string][162]** dataset `id` this new filter is associated with
Returns **{type: ActionTypes.ADD_FILTER, dataId: dataId}**
### addLayer
Add a new layer
- **ActionTypes**: [`ActionTypes.ADD_LAYER`][12]
- **Updaters**: [`visStateUpdaters.addLayerUpdater`][185]
**Parameters**
- `props` **[Object][164]** new layer props
Returns **{type: ActionTypes.ADD_LAYER, props: props}**
### applyCPUFilter
Trigger CPU filter of selected dataset
- **ActionTypes**: [`ActionTypes.APPLY_CPU_FILTER`][12]
- **Updaters**: [`visStateUpdaters.applyCPUFilterUpdater`][186]
**Parameters**
- `dataId` **([string][162] | Arrary<[string][162]>)** single dataId or an array of dataIds
Returns **{type: ActionTypes.APPLY_CPU_FILTER, dataId: [string][162]}**
### enlargeFilter
Show larger time filter at bottom for time playback (apply to time filter only)
- **ActionTypes**: [`ActionTypes.ENLARGE_FILTER`][12]
- **Updaters**: [`visStateUpdaters.enlargeFilterUpdater`][187]
**Parameters**
- `idx` **[Number][188]** index of filter to enlarge
Returns **{type: ActionTypes.ENLARGE_FILTER, idx: idx}**
### interactionConfigChange
Update `interactionConfig`
- **ActionTypes**: [`ActionTypes.INTERACTION_CONFIG_CHANGE`][12]
- **Updaters**: [`visStateUpdaters.interactionConfigChangeUpdater`][189]
**Parameters**
- `config` **[Object][164]** new config as key value map: `{tooltip: {enabled: true}}`
Returns **{type: ActionTypes.INTERACTION_CONFIG_CHANGE, config: config}**
### layerConfigChange
Update layer base config: dataId, label, column, isVisible
- **ActionTypes**: [`ActionTypes.LAYER_CONFIG_CHANGE`][12]
- **Updaters**: [`visStateUpdaters.layerConfigChangeUpdater`][190]
**Parameters**
- `oldLayer` **[Object][164]** layer to be updated
- `newConfig` **[Object][164]** new config
Returns **{type: ActionTypes.LAYER_CONFIG_CHANGE, oldLayer: oldLayer, newConfig: newConfig}**
### layerTextLabelChange
Update layer text label
- **ActionTypes**: [`ActionTypes.LAYER_TEXT_LABEL_CHANGE`][12]
- **Updaters**: [`visStateUpdaters.layerTextLabelChangeUpdater`][191]
**Parameters**
- `oldLayer` **[Object][164]** layer to be updated
- `idx` **[Number][188]** \-`idx` of text label to be updated
- `prop` **[string][162]** `prop` of text label, e,g, `anchor`, `alignment`, `color`, `size`, `field`
- `value` **any** new value
### layerTypeChange
Update layer type. Previews layer config will be copied if applicable.
- **ActionTypes**: [`ActionTypes.LAYER_TYPE_CHANGE`][12]
- **Updaters**: [`visStateUpdaters.layerTypeChangeUpdater`][192]
**Parameters**
- `oldLayer` **[Object][164]** layer to be updated
- `newType` **[string][162]** new type
Returns **{type: ActionTypes.LAYER_TYPE_CHANGE, oldLayer: oldLayer, newType: newType}**
### layerVisConfigChange
Update layer `visConfig`
- **ActionTypes**: [`ActionTypes.LAYER_VIS_CONFIG_CHANGE`][12]
- **Updaters**: [`visStateUpdaters.layerVisConfigChangeUpdater`][193]
**Parameters**
- `oldLayer` **[Object][164]** layer to be updated
- `newVisConfig` **[Object][164]** new visConfig as a key value map: e.g. `{opacity: 0.8}`
Returns **{type: ActionTypes.LAYER_VIS_CONFIG_CHANGE, oldLayer: oldLayer, newVisConfig: newVisConfig}**
### layerVisualChannelConfigChange
Update layer visual channel
- **ActionTypes**: [`ActionTypes.LAYER_VISUAL_CHANNEL_CHANGE`][12]
- **Updaters**: [`visStateUpdaters.layerVisualChannelChangeUpdater`][194]
**Parameters**
- `oldLayer` **[Object][164]** layer to be updated
- `newConfig` **[Object][164]** new visual channel config
- `channel` **[string][162]** channel to be updated
Returns **{type: ActionTypes.LAYER_VISUAL_CHANNEL_CHANGE, oldLayer: oldLayer, newConfig: newConfig, channel: channel}**
### loadFiles
Trigger file loading dispatch `addDataToMap` if succeed, or `loadFilesErr` if failed
- **ActionTypes**: [`ActionTypes.LOAD_FILES`][12]
- **Updaters**: [`uiStateUpdaters.loadFilesUpdater`][195], [`visStateUpdaters.loadFilesUpdater`][196]
**Parameters**
- `files` **[Array][174]<[Object][164]>** array of fileblob
Returns **{type: ActionTypes.LOAD_FILES, files: any}**
### loadFilesErr
Trigger loading file error
- **ActionTypes**: [`ActionTypes.LOAD_FILES_ERR`][12]
- **Updaters**: [`uiStateUpdaters.loadFilesErrUpdater`][197], [`visStateUpdaters.loadFilesErrUpdater`][198]
**Parameters**
- `error` **any**
Returns **{type: ActionTypes.LOAD_FILES_ERR, error: [Object][164]}**
### onLayerClick
Trigger layer click event with clicked object
- **ActionTypes**: [`ActionTypes.LAYER_CLICK`][12]
- **Updaters**: [`visStateUpdaters.layerClickUpdater`][199]
**Parameters**
- `info` **[Object][164]** Object clicked, returned by deck.gl
Returns **{type: ActionTypes.LAYER_CLICK, info: info}**
### onLayerHover
Trigger layer hover event with hovered object
- **ActionTypes**: [`ActionTypes.LAYER_HOVER`][12]
- **Updaters**: [`visStateUpdaters.layerHoverUpdater`][200]
**Parameters**
- `info` **[Object][164]** Object hovered, returned by deck.gl
Returns **{type: ActionTypes.LAYER_HOVER, info: info}**
### onMapClick
Trigger map click event, unselect clicked object
- **ActionTypes**: [`ActionTypes.MAP_CLICK`][12]
- **Updaters**: [`visStateUpdaters.mapClickUpdater`][201]
Returns **{type: ActionTypes.MAP_CLICK}**
### onMouseMove
Trigger map mouse moveevent, payload would be
React-map-gl MapLayerMouseEvent
[https://visgl.github.io/react-map-gl/docs/api-reference/types#maplayermouseevent][202]
- **ActionTypes**: [`ActionTypes.MOUSE_MOVE`][12]
- **Updaters**: [`visStateUpdaters.mouseMoveUpdater`][203]
**Parameters**
- `evt` **[Object][164]** MapLayerMouseEvent
Returns **{type: ActionTypes.MAP_CLICK}**
### removeDataset
Remove a dataset and all layers, filters, tooltip configs that based on it
- **ActionTypes**: [`ActionTypes.REMOVE_DATASET`][12]
- **Updaters**: [`visStateUpdaters.removeDatasetUpdater`][204]
**Parameters**
- `key` **[string][162]** dataset id
Returns **{type: ActionTypes.REMOVE_DATASET, key: key}**
### removeFilter
Remove a filter from `visState.filters`, once a filter is removed, data will be re-filtered and layer will be updated
- **ActionTypes**: [`ActionTypes.REMOVE_FILTER`][12]
- **Updaters**: [`visStateUpdaters.removeFilterUpdater`][205]
**Parameters**
- `idx` **[Number][188]** idx of filter to be removed
Returns **{type: ActionTypes.REMOVE_FILTER, idx: idx}**
### removeLayer
Remove a layer
- **ActionTypes**: [`ActionTypes.REMOVE_LAYER`][12]
- **Updaters**: [`visStateUpdaters.removeLayerUpdater`][206]
**Parameters**
- `idx` **[Number][188]** idx of layer to be removed
Returns **{type: ActionTypes.REMOVE_LAYER, idx: idx}**
### reorderLayer
Reorder layer, order is an array of layer indexes, index 0 will be the one at the bottom
- **ActionTypes**: [`ActionTypes.REORDER_LAYER`][12]
- **Updaters**: [`visStateUpdaters.reorderLayerUpdater`][207]
**Parameters**
- `order` **[Array][174]<[Number][188]>** an array of layer indexes
**Examples**
```javascript
// bring `layers[1]` below `layers[0]`, the sequence layers will be rendered is `1`, `0`, `2`, `3`.
// `1` will be at the bottom, `3` will be at the top.
this.props.dispatch(reorderLayer([1, 0, 2, 3]));
```
Returns **{type: ActionTypes.REORDER_LAYER, order: order}**
### setEditorMode
Set the map mode
- **ActionTypes**: [`ActionTypes.SET_EDITOR_MODE`][12]
- **Updaters**: [`visStateUpdaters.setEditorModeUpdater`][208]
**Parameters**
- `mode` **[string][162]** one of EDITOR_MODES
**Examples**
```javascript
import {setMapMode} from '@kepler.gl/actions';
import {EDITOR_MODES} from '@kepler.gl/constants';
this.props.dispatch(setMapMode(EDITOR_MODES.DRAW_POLYGON));
```
### setFilter
Update filter property
- **ActionTypes**: [`ActionTypes.SET_FILTER`][12]
- **Updaters**: [`visStateUpdaters.setFilterUpdater`][209]
**Parameters**
- `idx` **[Number][188]** \-`idx` of filter to be updated
- `prop` **[string][162]** `prop` of filter, e,g, `dataId`, `name`, `value`
- `value` **any** new value
- `valueIndex` **[Number][188]** array properties like dataset require index in order to improve performance
Returns **{type: ActionTypes.SET_FILTER, idx: idx, prop: prop, value: value}**
### setFilterPlot
Set the property of a filter plot
- **ActionTypes**: [`ActionTypes.SET_FILTER_PLOT`][12]
- **Updaters**: [`visStateUpdaters.setFilterPlotUpdater`][210]
**Parameters**
- `idx` **[Number][188]**
- `newProp` **[Object][164]** key value mapping of new prop `{yAxis: 'histogram'}`
Returns **{type: ActionTypes.SET_FILTER_PLOT, idx: any, newProp: any}**
### setMapInfo
Set the property of a filter plot
- **ActionTypes**: [`ActionTypes.SET_MAP_INFO`][12]
- **Updaters**: [`visStateUpdaters.setMapInfoUpdater`][211]
**Parameters**
- `info`
- `idx` **[Number][188]**
- `newProp` **[Object][164]** key value mapping of new prop `{yAxis: 'histogram'}`
Returns **{type: ActionTypes.SET_FILTER_PLOT, idx: any, newProp: any}**
### showDatasetTable
Display dataset table in a modal
- **ActionTypes**: [`ActionTypes.SHOW_DATASET_TABLE`][12]
- **Updaters**: [`visStateUpdaters.showDatasetTableUpdater`][212]
**Parameters**
- `dataId` **[string][162]** dataset id to show in table
Returns **{type: ActionTypes.SHOW_DATASET_TABLE, dataId: dataId}**
### toggleFilterAnimation
Start and end filter animation
- **ActionTypes**: [`ActionTypes.TOGGLE_FILTER_ANIMATION`][12]
- **Updaters**: [`visStateUpdaters.toggleFilterAnimationUpdater`][213]
**Parameters**
- `idx` **[Number][188]** idx of filter
Returns **{type: ActionTypes.TOGGLE_FILTER_ANIMATION, idx: idx}**
### toggleLayerForMap
Toggle visibility of a layer in a split map
- **ActionTypes**: [`ActionTypes.TOGGLE_LAYER_FOR_MAP`][12]
- **Updaters**: [`visStateUpdaters.toggleLayerForMapUpdater`][214]
**Parameters**
- `mapIndex` **[Number][188]** index of the split map
- `layerId` **[string][162]** id of the layer
Returns **{type: ActionTypes.TOGGLE_LAYER_FOR_MAP, mapIndex: any, layerId: any}**
### updateAnimationTime
Reset animation
- **ActionTypes**: [`ActionTypes.UPDATE_ANIMATION_TIME`][12]
- **Updaters**: [`visStateUpdaters.updateAnimationTimeUpdater`][215]
**Parameters**
- `value` **[Number][188]** Current value of the slider
Returns **{type: ActionTypes.UPDATE_ANIMATION_TIME, value: value}**
### updateFilterAnimationSpeed
Change filter animation speed
- **ActionTypes**: [`ActionTypes.UPDATE_FILTER_ANIMATION_SPEED`][12]
- **Updaters**: [`visStateUpdaters.updateFilterAnimationSpeedUpdater`][216]
**Parameters**
- `idx` **[Number][188]** `idx` of filter
- `speed` **[Number][188]** `speed` to change it to. `speed` is a multiplier
Returns **{type: ActionTypes.UPDATE_FILTER_ANIMATION_SPEED, idx: idx, speed: speed}**
### updateLayerAnimationSpeed
update trip layer animation speed
- **ActionTypes**: [`ActionTypes.UPDATE_LAYER_ANIMATION_SPEED`][12]
- **Updaters**: [`visStateUpdaters.updateLayerAnimationSpeedUpdater`][217]
**Parameters**
- `speed` **[Number][188]** `speed` to change it to. `speed` is a multiplier
Returns **{type: ActionTypes.UPDATE_LAYER_ANIMATION_SPEED, speed: speed}**
### updateLayerBlending
Update layer blending mode
- **ActionTypes**: [`ActionTypes.UPDATE_LAYER_BLENDING`][12]
- **Updaters**: [`visStateUpdaters.updateLayerBlendingUpdater`][218]
**Parameters**
- `mode` **[string][162]** one of `additive`, `normal` and `subtractive`
Returns **{type: ActionTypes.UPDATE_LAYER_BLENDING, mode: mode}**
### updateVisData
Add new dataset to `visState`, with option to load a map config along with the datasets
- **ActionTypes**: [`ActionTypes.UPDATE_VIS_DATA`][12]
- **Updaters**: [`visStateUpdaters.updateVisDataUpdater`][219]
**Parameters**
- `datasets` **([Array][174]<[Object][164]> | [Object][164])** **\*required** datasets can be a dataset or an array of datasets
Each dataset object needs to have `info` and `data` property.
- `datasets.info` **[Object][164]** \-info of a dataset
- `datasets.info.id` **[string][162]** id of this dataset. If config is defined, `id` should matches the `dataId` in config.
- `datasets.info.label` **[string][162]** A display name of this dataset
- `datasets.data` **[Object][164]** **\*required** The data object, in a tabular format with 2 properties `fields` and `rows`
- `datasets.data.fields` **[Array][174]<[Object][164]>** **\*required** Array of fields,
- `datasets.data.fields.name` **[string][162]** **\*required** Name of the field,
- `datasets.data.rows` **[Array][174]<[Array][174]>** **\*required** Array of rows, in a tabular format with `fields` and `rows`
- `options` **[Object][164]**
- `options.centerMap` **[boolean][165]** `default: true` if `centerMap` is set to `true` kepler.gl will
place the map view within the data points boundaries
- `options.readOnly` **[boolean][165]** `default: false` if `readOnly` is set to `true`
the left setting panel will be hidden
- `config` **[Object][164]** this object will contain the full kepler.gl instance configuration {mapState, mapStyle, visState}
Returns **{type: ActionTypes.UPDATE_VIS_DATA, datasets: datasets, options: options, config: config}**
## uiStateActions
Actions handled mostly by `uiState` reducer.
They manage UI changes in tha app, such as open and close side panel,
switch between tabs in the side panel, open and close modal dialog for exporting data / images etc.
It also manges which settings are selected during image and map export
### addNotification
Add a notification to be displayed.
Existing notification is going to be updated in case of matching ids.
- **ActionTypes**: [`ActionTypes.ADD_NOTIFICATION`][12]
- **Updaters**: [`uiStateUpdaters.addNotificationUpdater`][220]
**Parameters**
- `notification` **[Object][164]** The `notification` object to be added
### cleanupExportImage
Delete cached export image
- **ActionTypes**: [`ActionTypes.CLEANUP_EXPORT_IMAGE`][12]
- **Updaters**: [`uiStateUpdaters.cleanupExportImage`][221]
### hideExportDropdown
Hide side panel header dropdown, activated by clicking the share link on top of the side panel
- **ActionTypes**: [`ActionTypes.HIDE_EXPORT_DROPDOWN`][12]
- **Updaters**: [`uiStateUpdaters.hideExportDropdownUpdater`][222]
### openDeleteModal
Toggle active map control panel
- **ActionTypes**: [`ActionTypes.OPEN_DELETE_MODAL`][12]
- **Updaters**: [`uiStateUpdaters.openDeleteModalUpdater`][223]
**Parameters**
- `datasetId` **[string][162]** `id` of the dataset to be deleted
### removeNotification
Remove a notification
- **ActionTypes**: [`ActionTypes.REMOVE_NOTIFICATION`][12]
- **Updaters**: [`uiStateUpdaters.removeNotificationUpdater`][224]
**Parameters**
- `id` **[string][162]** `id` of the notification to be removed
### setExportData
Whether to including data in map config, toggle between `true` or `false`
- **ActionTypes**: [`ActionTypes.SET_EXPORT_DATA`][12]
- **Updaters**: [`uiStateUpdaters.setExportDataUpdater`][225]
### setExportDataType
Set data format for exporting data
- **ActionTypes**: [`ActionTypes.SET_EXPORT_DATA_TYPE`][12]
- **Updaters**: [`uiStateUpdaters.setExportDataTypeUpdater`][226]
**Parameters**
- `dataType` **[string][162]** one of `'text/csv'`
### setExportFiltered
Whether to export filtered data, `true` or `false`
- **ActionTypes**: [`ActionTypes.SET_EXPORT_FILTERED`][12]
- **Updaters**: [`uiStateUpdaters.setExportFilteredUpdater`][227]
**Parameters**
- `payload` **[boolean][165]** set `true` to ony export filtered data
### setExportImageDataUri
Set `exportImage.setExportImageDataUri` to a dataUri
- **ActionTypes**: [`ActionTypes.SET_EXPORT_IMAGE_DATA_URI`][12]
- **Updaters**: [`uiStateUpdaters.setExportImageDataUri`][228]
**Parameters**
- `dataUri` **[string][162]** export image data uri
### setExportImageSetting
Set `exportImage` settings: ratio, resolution, legend
- **ActionTypes**: [`ActionTypes.SET_EXPORT_IMAGE_SETTING`][12]
- **Updaters**: [`uiStateUpdaters.setExportImageSetting`][229]
**Parameters**
- `newSetting` **[Object][164]** {ratio: '1x'}
### setExportSelectedDataset
Set selected dataset for export
- **ActionTypes**: [`ActionTypes.SET_EXPORT_SELECTED_DATASET`][12]
- **Updaters**: [`uiStateUpdaters.setExportSelectedDatasetUpdater`][230]
**Parameters**
- `datasetId` **[string][162]** dataset id
### setUserMapboxAccessToken
Whether we export a mapbox access token used to create a single map html file
- **ActionTypes**: [`ActionTypes.SET_USER_MAPBOX_ACCESS_TOKEN`][12]
- **Updaters**: [`uiStateUpdaters.setUserMapboxAccessTokenUpdater`][231]
**Parameters**
- `payload` **[string][162]** mapbox access token
### showExportDropdown
Hide and show side panel header dropdown, activated by clicking the share link on top of the side panel
- **ActionTypes**: [`ActionTypes.SHOW_EXPORT_DROPDOWN`][12]
- **Updaters**: [`uiStateUpdaters.showExportDropdownUpdater`][232]
**Parameters**
- `id` **[string][162]** id of the dropdown
### startExportingImage
Set `exportImage.exporting` to true
- **ActionTypes**: [`ActionTypes.START_EXPORTING_IMAGE`][12]
- **Updaters**: [`uiStateUpdaters.startExportingImage`][233]
### toggleMapControl
Toggle active map control panel
- **ActionTypes**: [`ActionTypes.TOGGLE_MAP_CONTROL`][12]
- **Updaters**: [`uiStateUpdaters.toggleMapControlUpdater`][234]
**Parameters**
- `panelId` **[string][162]** map control panel id, one of the keys of: [`DEFAULT_MAP_CONTROLS`][235]
### toggleModal
Show and hide modal dialog
- **ActionTypes**: [`ActionTypes.TOGGLE_MODAL`][12]
- **Updaters**: [`uiStateUpdaters.toggleModalUpdater`][236]
**Parameters**
- `id` **([string][162] | null)** id of modal to be shown, null to hide modals. One of:- [`DATA_TABLE_ID`][237]
- [`DELETE_DATA_ID`][238]
- [`ADD_DATA_ID`][239]
- [`EXPORT_IMAGE_ID`][240]
- [`EXPORT_DATA_ID`][241]
- [`ADD_MAP_STYLE_ID`][242]
### toggleSidePanel
Toggle active side panel
- **ActionTypes**: [`ActionTypes.TOGGLE_SIDE_PANEL`][12]
- **Updaters**: [`uiStateUpdaters.toggleSidePanelUpdater`][243]
**Parameters**
- `id` **[string][162]** id of side panel to be shown, one of `layer`, `filter`, `interaction`, `map`
## rootActions
Root actions managers adding and removing instances in root reducer.
Under-the-hood, when a `KeplerGl` component is mounted or unmounted,
it will automatically calls these actions to add itself to the root reducer.
However, sometimes the data is ready before the component is registered in the reducer,
in this case, you can manually call these actions or the corresponding updater to add it to the reducer.
### deleteEntry
Delete an instance from `keplerGlReducer`. This action is called under-the-hood when a `KeplerGl` component is **un-mounted** to the dom.
If `mint` is set to be `true` in the component prop, the instance state will be deleted from the root reducer. Otherwise, the root reducer will keep
the instance state and later transfer it to a newly mounted component with the same `id`
- **ActionTypes**: [`ActionTypes.DELETE_ENTRY`][12]
- **Updaters**:
**Parameters**
- `id` **[string][162]** the id of the instance to be deleted
### registerEntry
Add a new kepler.gl instance in `keplerGlReducer`. This action is called under-the-hood when a `KeplerGl` component is **mounted** to the dom.
Note that if you dispatch actions such as adding data to a kepler.gl instance before the React component is mounted, the action will not be
performed. Instance reducer can only handle actions when it is instantiated.
- **ActionTypes**: [`ActionTypes.REGISTER_ENTRY`][12]
- **Updaters**:
**Parameters**
- `payload` **[Object][164]**
- `payload.id` **[string][162]** **\*required** The id of the instance
- `payload.mint` **[boolean][165]** Whether to use a fresh empty state, when `mint: true` it will _always_ load a fresh state when the component is re-mounted.
When `mint: false` it will register with existing instance state under the same `id`, when the component is unmounted then mounted again. Default: `true`
- `payload.mapboxApiAccessToken` **[string][162]** mapboxApiAccessToken to be saved in `map-style` reducer.
- `payload.mapboxApiUrl` **[string][162]** mapboxApiUrl to be saved in `map-style` reducer.
- `payload.mapStylesReplaceDefault` **[Boolean][165]** mapStylesReplaceDefault to be saved in `map-style` reducer.
### renameEntry
Rename an instance in the root reducer, keep its entire state
- **ActionTypes**: [`ActionTypes.RENAME_ENTRY`][12]
- **Updaters**:
**Parameters**
- `oldId` **[string][162]** **\*required** old id
- `newId` **[string][162]** **\*required** new id
## mapStateActions
Actions handled mostly by `mapState` reducer.
They manage map viewport update, toggle between 2d and 3d map,
toggle between single and split maps.
### fitBounds
Fit map viewport to bounds
- **ActionTypes**: [`ActionTypes.FIT_BOUNDS`][12]
- **Updaters**: [`mapStateUpdaters.fitBoundsUpdater`][244]
**Parameters**
- `bounds` **[Array][174]<[Number][188]>** as `[lngMin, latMin, lngMax, latMax]`
**Examples**
```javascript
import {fitBounds} from '@kepler.gl/actions';
this.props.dispatch(fitBounds([-122.23, 37.127, -122.11, 37.456]));
```
### togglePerspective
Toggle between 3d and 2d map.
- **ActionTypes**: [`ActionTypes.TOGGLE_PERSPECTIVE`][12]
- **Updaters**: [`mapStateUpdaters.togglePerspectiveUpdater`][245]
**Examples**
```javascript
import {togglePerspective} from '@kepler.gl/actions';
this.props.dispatch(togglePerspective());
```
### toggleSplitMap
Toggle between single map or split maps
- **ActionTypes**: [`ActionTypes.TOGGLE_SPLIT_MAP`][12]
- **Updaters**: [`mapStateUpdaters.toggleSplitMapUpdater`][246], [`uiStateUpdaters.toggleSplitMapUpdater`][247], [`visStateUpdaters.toggleSplitMapUpdater`][248]
**Parameters**
- `index` **[Number][188]?** index is provided, close split map at index
**Examples**
```javascript
import {toggleSplitMap} from '@kepler.gl/actions';
this.props.dispatch(toggleSplitMap());
```
### updateMap
Update map viewport
- **ActionTypes**: [`ActionTypes.UPDATE_MAP`][12]
- **Updaters**: [`mapStateUpdaters.updateMapUpdater`][249]
**Parameters**
- `viewport` **[Object][164]** viewport object container one or any of these properties `width`, `height`, `latitude` `longitude`, `zoom`, `pitch`, `bearing`, `dragRotate`
- `viewport.width` **[Number][188]?** Width of viewport
- `viewport.height` **[Number][188]?** Height of viewport
- `viewport.zoom` **[Number][188]?** Zoom of viewport
- `viewport.pitch` **[Number][188]?** Camera angle in degrees (0 is straight down)
- `viewport.bearing` **[Number][188]?** Map rotation in degrees (0 means north is up)
- `viewport.latitude` **[Number][188]?** Latitude center of viewport on map in mercator projection
- `viewport.longitude` **[Number][188]?** Longitude Center of viewport on map in mercator projection
- `viewport.dragRotate` **[boolean][165]?** Whether to enable drag and rotate map into perspective viewport
**Examples**
```javascript
import {updateMap} from '@kepler.gl/actions';
this.props.dispatch(
updateMap({latitude: 37.75043, longitude: -122.34679, width: 800, height: 1200})
);
```
## layerColorUIChange
Set the color palette ui for layer color
- **ActionTypes**: [`ActionTypes.LAYER_COLOR_UI_CHANGE`][12]
- **Updaters**: [`visStateUpdaters.layerColorUIChangeUpdater`][250]
**Parameters**
- `oldLayer` **[Object][164]** layer to be updated
- `prop` **[String][162]** which color prop
- `newConfig` **[object][164]** to be merged
## setExportMapFormat
Set the export map format (html, json)
- **ActionTypes**: [`ActionTypes.SET_EXPORT_MAP_FORMAT`][12]
- **Updaters**: [`uiStateUpdaters.setExportMapFormatUpdater`][251]
**Parameters**
- `payload` **[string][162]** map format
[1]: #forwardactions
[2]: #forwardto
[3]: #parameters
[4]: #examples
[5]: #isforwardaction
[6]: #parameters-1
[7]: #unwrap
[8]: #parameters-2
[9]: #wrapto
[10]: #parameters-3
[11]: #examples-1
[12]: #actiontypes
[13]: #examples-2
[14]: #mapstyleactions
[15]: #addcustommapstyle
[16]: #inputmapstyle
[17]: #parameters-4
[18]: #loadcustommapstyle
[19]: #parameters-5
[20]: #loadmapstyleerr
[21]: #parameters-6
[22]: #loadmapstyles
[23]: #parameters-7
[24]: #mapconfigchange
[25]: #parameters-8
[26]: #mapstylechange
[27]: #parameters-9
[28]: #requestmapstyles
[29]: #parameters-10
[30]: #set3dbuildingcolor
[31]: #parameters-11
[32]: #main
[33]: #adddatatomap
[34]: #parameters-12
[35]: #examples-3
[36]: #keplerglinit
[37]: #parameters-13
[38]: #receivemapconfig
[39]: #parameters-14
[40]: #examples-4
[41]: #resetmapconfig
[42]: #visstateactions
[43]: #addfilter
[44]: #parameters-15
[45]: #addlayer
[46]: #parameters-16
[47]: #applycpufilter
[48]: #parameters-17
[49]: #enlargefilter
[50]: #parameters-18
[51]: #interactionconfigchange
[52]: #parameters-19
[53]: #layerconfigchange
[54]: #parameters-20
[55]: #layertextlabelchange
[56]: #parameters-21
[57]: #layertypechange
[58]: #parameters-22
[59]: #layervisconfigchange
[60]: #parameters-23
[61]: #layervisualchannelconfigchange
[62]: #parameters-24
[63]: #loadfiles
[64]: #parameters-25
[65]: #loadfileserr
[66]: #parameters-26
[67]: #onlayerclick
[68]: #parameters-27
[69]: #onlayerhover
[70]: #parameters-28
[71]: #onmapclick
[72]: #onmousemove
[73]: #parameters-29
[74]: #removedataset
[75]: #parameters-30
[76]: #removefilter
[77]: #parameters-31
[78]: #removelayer
[79]: #parameters-32
[80]: #reorderlayer
[81]: #parameters-33
[82]: #examples-5
[83]: #seteditormode
[84]: #parameters-34
[85]: #examples-6
[86]: #setfilter
[87]: #parameters-35
[88]: #setfilterplot
[89]: #parameters-36
[90]: #setmapinfo
[91]: #parameters-37
[92]: #showdatasettable
[93]: #parameters-38
[94]: #togglefilteranimation
[95]: #parameters-39
[96]: #togglelayerformap
[97]: #parameters-40
[98]: #updateanimationtime
[99]: #parameters-41
[100]: #updatefilteranimationspeed
[101]: #parameters-42
[102]: #updatelayeranimationspeed
[103]: #parameters-43
[104]: #updatelayerblending
[105]: #parameters-44
[106]: #updatevisdata
[107]: #parameters-45
[108]: #uistateactions
[109]: #addnotification
[110]: #parameters-46
[111]: #cleanupexportimage
[112]: #hideexportdropdown
[113]: #opendeletemodal
[114]: #parameters-47
[115]: #removenotification
[116]: #parameters-48
[117]: #setexportdata
[118]: #setexportdatatype
[119]: #parameters-49
[120]: #setexportfiltered
[121]: #parameters-50
[122]: #setexportimagedatauri
[123]: #parameters-51
[124]: #setexportimagesetting
[125]: #parameters-52
[126]: #setexportselecteddataset
[127]: #parameters-53
[128]: #setusermapboxaccesstoken
[129]: #parameters-54
[130]: #showexportdropdown
[131]: #parameters-55
[132]: #startexportingimage
[133]: #togglemapcontrol
[134]: #parameters-56
[135]: #togglemodal
[136]: #parameters-57
[137]: #togglesidepanel
[138]: #parameters-58
[139]: #rootactions
[140]: #deleteentry
[141]: #parameters-59
[142]: #registerentry
[143]: #parameters-60
[144]: #renameentry
[145]: #parameters-61
[146]: #mapstateactions
[147]: #fitbounds
[148]: #parameters-62
[149]: #examples-7
[150]: #toggleperspective
[151]: #examples-8
[152]: #togglesplitmap
[153]: #parameters-63
[154]: #examples-9
[155]: #updatemap
[156]: #parameters-64
[157]: #examples-10
[158]: #layercoloruichange
[159]: #parameters-65
[160]: #setexportmapformat
[161]: #parameters-66
[162]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String
[163]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function
[164]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object
[165]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean
[166]: ../reducers/map-style.md#mapstyleupdatersaddcustommapstyleupdater
[167]: ../reducers/map-style.md#mapstyleupdatersinputmapstyleupdater
[168]: ../reducers/map-style.md#mapstyleupdatersloadcustommapstyleupdater
[169]: ../reducers/map-style.md#mapstyleupdatersloadmapstyleerrupdater
[170]: ../reducers/map-style.md#mapstyleupdatersloadmapstylesupdater
[171]: ../reducers/map-style.md#mapstyleupdatersmapconfigchangeupdater
[172]: ../reducers/map-style.md#mapstyleupdatersmapstylechangeupdater
[173]: ../reducers/map-style.md#mapstyleupdatersrequestmapstylesupdater
[174]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array
[175]: ../reducers/map-style.md#mapstyleupdatersset3dbuildingcolorupdater
[176]: ../reducers/composers.md#combinedupdatersadddatatomapupdater
[177]: ../reducers/map-style.md#mapstyleupdatersinitmapstyleupdater
[178]: ../reducers/map-state.md#mapstateupdatersreceivemapconfigupdater
[179]: ../reducers/map-style.md#mapstyleupdatersreceivemapconfigupdater
[180]: ../reducers/vis-state.md#visstateupdatersreceivemapconfigupdater
[181]: ../reducers/map-state.md#mapstateupdatersresetmapconfigupdater
[182]: ../reducers/map-style.md#mapstyleupdatersresetmapconfigmapstyleupdater
[183]: ../reducers/vis-state.md#visstateupdatersresetmapconfigupdater
[184]: ../reducers/vis-state.md#visstateupdatersaddfilterupdater
[185]: ../reducers/vis-state.md#visstateupdatersaddlayerupdater
[186]: ../reducers/vis-state.md#visstateupdatersapplycpufilterupdater
[187]: ../reducers/vis-state.md#visstateupdatersenlargefilterupdater
[188]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number
[189]: ../reducers/vis-state.md#visstateupdatersinteractionconfigchangeupdater
[190]: ../reducers/vis-state.md#visstateupdaterslayerconfigchangeupdater
[191]: ../reducers/vis-state.md#visstateupdaterslayertextlabelchangeupdater
[192]: ../reducers/vis-state.md#visstateupdaterslayertypechangeupdater
[193]: ../reducers/vis-state.md#visstateupdaterslayervisconfigchangeupdater
[194]: ../reducers/vis-state.md#visstateupdaterslayervisualchannelchangeupdater
[195]: ../reducers/ui-state.md#uistateupdatersloadfilesupdater
[196]: ../reducers/vis-state.md#visstateupdatersloadfilesupdater
[197]: ../reducers/ui-state.md#uistateupdatersloadfileserrupdater
[198]: ../reducers/vis-state.md#visstateupdatersloadfileserrupdater
[199]: ../reducers/vis-state.md#visstateupdaterslayerclickupdater
[200]: ../reducers/vis-state.md#visstateupdaterslayerhoverupdater
[201]: ../reducers/vis-state.md#visstateupdatersmapclickupdater
[202]: https://visgl.github.io/react-map-gl/docs/api-reference/types#maplayermouseevent
[203]: ../reducers/vis-state.md#visstateupdatersmousemoveupdater
[204]: ../reducers/vis-state.md#visstateupdatersremovedatasetupdater
[205]: ../reducers/vis-state.md#visstateupdatersremovefilterupdater
[206]: ../reducers/vis-state.md#visstateupdatersremovelayerupdater
[207]: ../reducers/vis-state.md#visstateupdatersreorderlayerupdater
[208]: ../reducers/vis-state.md#visstateupdatersseteditormodeupdater
[209]: ../reducers/vis-state.md#visstateupdaterssetfilterupdater
[210]: ../reducers/vis-state.md#visstateupdaterssetfilterplotupdater
[211]: ../reducers/vis-state.md#visstateupdaterssetmapinfoupdater
[212]: ../reducers/vis-state.md#visstateupdatersshowdatasettableupdater
[213]: ../reducers/vis-state.md#visstateupdaterstogglefilteranimationupdater
[214]: ../reducers/vis-state.md#visstateupdaterstogglelayerformapupdater
[215]: ../reducers/vis-state.md#visstateupdatersupdateanimationtimeupdater
[216]: ../reducers/vis-state.md#visstateupdatersupdatefilteranimationspeedupdater
[217]: ../reducers/vis-state.md#visstateupdatersupdatelayeranimationspeedupdater
[218]: ../reducers/vis-state.md#visstateupdatersupdatelayerblendingupdater
[219]: ../reducers/vis-state.md#visstateupdatersupdatevisdataupdater
[220]: ../reducers/ui-state.md#uistateupdatersaddnotificationupdater
[221]: ../reducers/ui-state.md#uistateupdaterscleanupexportimage
[222]: ../reducers/ui-state.md#uistateupdatershideexportdropdownupdater
[223]: ../reducers/ui-state.md#uistateupdatersopendeletemodalupdater
[224]: ../reducers/ui-state.md#uistateupdatersremovenotificationupdater
[225]: ../reducers/ui-state.md#uistateupdaterssetexportdataupdater
[226]: ../reducers/ui-state.md#uistateupdaterssetexportdatatypeupdater
[227]: ../reducers/ui-state.md#uistateupdaterssetexportfilteredupdater
[228]: ../reducers/ui-state.md#uistateupdaterssetexportimagedatauri
[229]: ../reducers/ui-state.md#uistateupdaterssetexportimagesetting
[230]: ../reducers/ui-state.md#uistateupdaterssetexportselecteddatasetupdater
[231]: ../reducers/ui-state.md#uistateupdaterssetusermapboxaccesstokenupdater
[232]: ../reducers/ui-state.md#uistateupdatersshowexportdropdownupdater
[233]: ../reducers/ui-state.md#uistateupdatersstartexportingimage
[234]: ../reducers/ui-state.md#uistateupdaterstogglemapcontrolupdater
[235]: #default_map_controls
[236]: ../reducers/ui-state.md#uistateupdaterstogglemodalupdater
[237]: ../constants/default-settings.md#data_table_id
[238]: ../constants/default-settings.md#delete_data_id
[239]: ../constants/default-settings.md#add_data_id
[240]: ../constants/default-settings.md#export_image_id
[241]: ../constants/default-settings.md#export_data_id
[242]: ../constants/default-settings.md#add_map_style_id
[243]: ../reducers/ui-state.md#uistateupdaterstogglesidepanelupdater
[244]: ../reducers/map-state.md#mapstateupdatersfitboundsupdater
[245]: ../reducers/map-state.md#mapstateupdaterstoggleperspectiveupdater
[246]: ../reducers/map-state.md#mapstateupdaterstogglesplitmapupdater
[247]: ../reducers/ui-state.md#uistateupdaterstogglesplitmapupdater
[248]: ../reducers/vis-state.md#visstateupdaterstogglesplitmapupdater
[249]: ../reducers/map-state.md#mapstateupdatersupdatemapupdater
[250]: ../reducers/vis-state.md#visstateupdaterslayercoloruichangeupdater
[251]: ../reducers/ui-state.md#uistateupdaterssetexportmapformatupdater
================================================
FILE: docs/api-reference/advanced-usages/custom-initial-state.md
================================================
# Custom reducer initial state
For advanced users who wish to modify the initial state of kepler.gl reducer, kepler.gl provides a reducer `initialState` function. `Reducer.initialState` will take the custom state and return a new reducer function. `initialState` is only meant to be called where the store is initialized. The custom state passed in will be shallow merged with the default `initialState`.
Here is an example modify `uiState` `initialState` to hide side panel, and selectively display map control button.
```js
import {combineReducers} from 'redux';
import {keplerGlReducer} from '@kepler.gl/reducers';
const customizedKeplerGlReducer = keplerGlReducer
.initialState({
uiState: {
// hide side panel to disallow user customize the map
readOnly: true,
// customize which map control button to show
mapControls: {
visibleLayers: {
show: false
},
mapLegend: {
show: true,
active: true
},
toggle3d: {
show: false
},
splitMap: {
show: false
}
}
}
});
const reducers = combineReducers({
keplerGl: customizedKeplerGlReducer,
app: appReducer
});
```
For full implementation, take a look at the [custom reducer example][custom-reducer-example]
[custom-reducer-example]: https://github.com/keplergl/kepler.gl/tree/master/examples/custom-reducer
================================================
FILE: docs/api-reference/advanced-usages/custom-map-styles.md
================================================
# Using kepler.gl with basemap services other than Mapbox
By default, kepler.gl uses mapbox-gl.js to render its base maps, displayed in [map style selection panel](https://github.com/keplergl/kepler.gl/blob/master/docs/user-guides/f-map-styles/1-base-map-styles.md).

You can custom kepler.gl to use other base map services, by passing in style.json written in [Mapbox GL Style Spec](https://docs.mapbox.com/mapbox-gl-js/style-spec/). With custom style.json kepler.gl can render base map independent of mapbox vector tile service.
For instance. there is a example [style.json](https://raw.githubusercontent.com/heshan0131/kepler.gl-data/master/style/basic.json). It points to the tile server described in the `sources` field.
```json
"sources": {
"openmaptiles": {
"url": "https://api.maptiler.com/tiles/v3/tiles.json?key=xxxx",
"type": "vector"
}
}
```
### 1. The `mapStyle` object.
Your custom map style should be an object as below
```js
// custom map style
{
id: 'voyager',
label: 'Voyager',
url: 'https://api.maptiler.com/maps/voyager/style.json?key=xxxx',
icon: 'https://api.maptiler.com/maps/voyager/256/0/0/0.png?key=xxx',
layerGroups: [
{
slug: 'label',
filter: ({id}) => id.match(/(?=(label|place-|poi-))/),
defaultVisibility: true
},
{
slug: 'road',
filter: ({id}) => id.match(/(?=(road|railway|tunnel|street|bridge))(?!.*label)/),
defaultVisibility: true
}
]
}
```
__style properties__
- `id` (String, required) unique string.
- `label` (String, required) name to be displayed in map style selection panel
- `url` (String, required) a url pointing to the map style json object written in [Mapbox GL Style Spec](https://docs.mapbox.com/mapbox-gl-js/style-spec/).
- `icon` (String, optional) image icon of the style, it can be a url, or an [image data url](https://flaviocopes.com/data-urls/#how-does-a-data-url-look)
- `layerGroups` (Array, optional) Supply your own `layerGroups` to override default for more accurate layer grouping. When `undefined` kepler.gl will attempt to group layers of your style based on its `id` naming convention and use it to allow toggle visibility of [base map layers](https://github.com/keplergl/kepler.gl/blob/master/docs/user-guides/f-map-styles/2-map-layers.md).
### 2. Two Ways to supply kepler.gl with custom base map styles
#### Option 1. `mapStyles` prop
Pass `mapStyles` and `mapStylesReplaceDefault` prop to `KeplerGl` component.
```js
const mapStyles = [{
id: 'voyager',
label: 'Voyager',
url: 'https://api.maptiler.com/maps/voyager/style.json?key=xxxx',
icon: 'https://api.maptiler.com/maps/voyager/256/0/0/0.png?key=xxx'
}];
const App = () => (
)
```
- `mapStyles` (Array) array of custom map styles.
- `mapStylesReplaceDefault` (Boolean) pass `true` if you want to replace all default kepler.gl base map options.
- `mapboxApiAccessToken`. Optional if `mapStylesReplaceDefault` is `true` and your `mapStyles` does not use Mapbox services
#### Option 2. Reducer `initialState`
Pass custom `mapStyles` to kepler.gl `mapStyle` reducer using the `initialState` plugin. And set default style by passing `styleType`.
This method is demoed in the example app [Custom Map Style](https://github.com/keplergl/kepler.gl/tree/master/examples/custom-map-style)
```js
const customizedKeplerGlReducer = keplerGlReducer.initialState({
mapStyle: {
mapStyles: {
voyager: {
id: 'voyager',
label: 'Voyager',
url: 'https://api.maptiler.com/maps/voyager/style.json?key=xxxx',
icon: 'https://api.maptiler.com/maps/voyager/256/0/0/0.png?key=xxx'
},
terrain: {
id: 'terrain',
label: 'Outdoor',
url: 'https://api.maptiler.com/maps/outdoor/style.json?key=xxx',
icon: 'https://openmaptiles.org/img/styles/terrain.jpg',
layerGroups: [
{
slug: 'label',
filter: ({id}) => id.match(/(?=(label|place-|poi-))/),
defaultVisibility: true
},
{
slug: 'road',
filter: ({id}) => id.match(/(?=(road|railway|tunnel|street|bridge))(?!.*label)/),
defaultVisibility: true
}
]
}
},
// Set initial map style
styleType: 'voyager'
}
});
```
- `mapStyles` (Object) - `id` as key, and `style` as value.
- `styleType` (string) - Initial map style.
__Which option is for me?__ If you want to replace all basemap styles, we recommends __Option 2__. So you can also set the initial style with `styleType`. If you are adding more options as basemaps, __Option 1__ is ideal.
### 3. `mapboxApiAccessToken`
If your map styles are not using Mapbox services, and you replaced all kepler.gl default map styles. `mapboxApiAccessToken` will not be required in `KeplerGl` component.
#### 4. `DEFAULT_LAYER_GROUPS`
If `layerGroups` is not suppied, kepler.gl uses the default layer groups below.
```js
export const DEFAULT_LAYER_GROUPS = [
{
slug: 'label',
filter: ({id}) => id.match(/(?=(label|place-|poi-))/),
defaultVisibility: true
},
{
slug: 'road',
filter: ({id}) => id.match(/(?=(road|railway|tunnel|street|bridge))(?!.*label)/),
defaultVisibility: true
},
{
slug: 'border',
filter: ({id}) => id.match(/border|boundaries/),
defaultVisibility: false
},
{
slug: 'building',
filter: ({id}) => id.match(/building/),
defaultVisibility: true
},
{
slug: 'water',
filter: ({id}) => id.match(/(?=(water|stream|ferry))/),
defaultVisibility: true
},
{
slug: 'land',
filter: ({id}) => id.match(/(?=(parks|landcover|industrial|sand|hillshade))/),
defaultVisibility: true
},
{
slug: '3d building',
filter: () => false,
defaultVisibility: false
}
];
```
#### 5. Geocoder
####
================================================
FILE: docs/api-reference/advanced-usages/custom-mapbox-host.md
================================================
### 1. Configuring Mapbox API hostname
The KeplerGL component accepts an optional parameter `mapboxApiUrl` to override the default value of `https://api.mapbox.com`.
```js
```
### 2. Overriding the default MapStyles
The default MapStyles KeplerGL uses might not be accessible to you, in this case you will need to provide MapStyle overrides. During construction of your component:
```js
this.token = '';
this.apiHost = "https://api.mapbox.cn";
this.mapStyles = [
{
id: 'dark',
label: 'Dark Streets 9',
url: 'mapbox://styles/mapbox/dark-v9',
icon: `${this.apiHost}/styles/v1/mapbox/dark-v9/static/-122.3391,37.7922,9.19,0,0/400x300?access_token=${this.token}&logo=false&attribution=false`,
layerGroups: [] // DEFAULT_LAYER_GROUPS
},
{
id: 'light',
label: 'Light Streets 9',
url: 'mapbox://styles/mapbox/light-v9',
icon: `${this.apiHost}/styles/v1/mapbox/light-v9/static/-122.3391,37.7922,9.19,0,0/400x300?access_token=${this.token}&logo=false&attribution=false`,
layerGroups: [] // DEFAULT_LAYER_GROUPS
}
];
```
and In render:
```js
```
================================================
FILE: docs/api-reference/advanced-usages/forward-actions.md
================================================
# Forward Dispatch Actions
One of the biggest challenge of using local state is to dispatch actions that only modify a specific instance of the state. For instance, if we have 2 kepler.gl components in our app, one with id `foo` other with id `bar`. Our keplerGl reducer is going to be `keplerGl: {foo: …, bar …}`. When `foo` dispatches an action, it only needs to update the state of `foo`, hence we need a way to decorate the action that the root reducer only pass it down to instance reducer `foo`. To solve this, we provide a set of forward functions called `wrapTo`, `forwardTo` and `unwrap`. `wrapTo` wraps an action payload into an forward action by adding an address `_addr_` and a `_forward_` signature to its `meta`. The root reducer will check if the given action has that address and if so, `unwrap` the action and pass it to the correct instance reducer.
**Here are the different options to dispatch forwarded actions to kepler.gl reducer.**
### 1. Use `forwardTo` to add a dispatch function to your component
You can add a dispatch function to your component that dispatches actions to a specific kepler.gl instance using connect.
```js
// component
import {KeplerGl} from '@kepler.gl/components';
import {connect} from 'react-redux';
// import action and forward dispatcher
import {toggleFullScreen, forwardTo} from '@kepler.gl/actions';
const MapContainer = props => (
props.keplerGlDispatch(toggleFullScreen())}/>
)
const mapStateToProps = state => state
const mapDispatchToProps = (dispatch, props) => ({
dispatch,
keplerGlDispatch: forwardTo(‘foo’, dispatch)
});
export default connect(
mapStateToProps,
mapDispatchToProps
)(MapContainer);
```
- 2. Use `wrapTo` to wrap action creator
You can also simply wrap an action into a forward action with the `wrapTo` helper
```js
// component
import {KeplerGl} from '@kepler.gl/components';
// action and wrapper
import {toggleFullScreen, wrapTo} from '@kepler.gl/actions';
// create a function to wrapper action payload to 'foo'
const wrapToMap = wrapTo('foo');
const MapContainer = ({dispatch}) => (
dispatch(wrapToMap(toggleFullScreen())} />
);
```
================================================
FILE: docs/api-reference/advanced-usages/reducer-plugin.md
================================================
# Reducer Plugin
For advanced users, who want to add additional action handler to kepler.gl reducer, kepler.gl provides a reducer plugin function. `Reducer.plugin` will take additional action handlers and return a new reducer function. Plugin is only meant to be called where the store is initialized. The state passed into the additional action handler is the instance state.
`Reducer.plugin` will allow advanced users to extend the kepler.gl reducer behavior. Here is an example of adding an additional action `HIDE_AND_SHOW_SIDE_PANEL` handler that modifies the `uiState`.
```js
import {combineReducers} from 'redux';
import keplerGlReducer from '@kepler.gl/reducers';
const customizedKeplerGlReducer = keplerGlReducer
.plugin({
HIDE_AND_SHOW_SIDE_PANEL: (state, action) => ({
...state,
uiState: {
...state.uiState,
readOnly: !state.uiState.readOnly
}
})
});
const reducers = combineReducers({
keplerGl: customizedKeplerGlReducer,
app: appReducer
});
```
Note that, reducer plugin **should not be used to override default kepler.gl actions** The following code will not change `SET_FILTER`, because plugins are handled after default actions.
```js
const customizedKeplerGlReducer = keplerGlReducer
.plugin({
[ActionTypes.SET_FILTER]: (state, action) => state
});
```
For full implementation, take a look at the [custom reducer example][custom-reducer-example]
[custom-reducer-example]: https://github.com/keplergl/kepler.gl/tree/master/examples/custom-reducer
================================================
FILE: docs/api-reference/advanced-usages/replace-ui-component.md
================================================
# Replace UI Component with Component Dependency Injection
To allow customize a child component, the library author usually has to pass the child component down as a prop from top of the component tree. This approach will work for component that are relatively small, but it won’t scale for kepler.gl because it has hundreds of child components. To give user the flexibility to render certain component differently. Kepler.gl has a dependency injection system that allows user to inject custom components to kepler.gl UI replacing the default ones at bootstrap time.
All you need to do is to create a component factory for the one you wish to replace, import the original component factory and call `injectComponents` at where `KeplerGl` is mounted. `injectComponents` will return a new `KeplerGl` component instance that renders the custom child component. This way we don’t have to keep track of hundreds of component as props and pass them all the way down. Dependency injection only happens once when `keplerGl` component is imported.
## Factory
For each high level component in kepler.gl, we export a `factory`. A `factory` is a function that takes a set of `dependencies` and return a component instance. In this example below, the `MapContainerFactory` takes `MapPopover` and `MapControl` as dependencies and returns the `MapContainer` component instance. Not all components are exported as factories in kepler.gl at the moment, we are still testing this feature.
```js
import MapPopoverFactory from 'components/map/map-popover';
import MapControlFactory from 'components/map/map-control';
function MapContainerFactory(MapPopover, MapControl) {
return class MapContainer extends Component {
render() {
return (
);
}
}
}
MapContainerFactory.deps = [MapPopoverFactory, MapControlFactory];
```
## Recipes
A recipe is an array of default factory, and the one to replace it. `[defaultFactory, customFactory]`. To replace default component, user can import the existing component factory, call `injectComponents` and pass in the new recipe to get a new `KeplerGl` instance.
### Inject Components
In kepler.gl, we create the app injector by calling provide with an array of default recipes. We then export a `injectComponents` function that user can call to inject a different recipe and returns a new kepler.gl instance.
Here is an example of how to use `injectComponents` to replace default `PanelHeader`.
```js
import {injectComponents, PanelHeaderFactory} from '@kepler.gl/components';
// define custom header
const CustomHeader = () => (My kepler.gl app
);
// create a factory
const myCustomHeaderFactory = () => CustomHeader;
// Inject custom header into Kepler.gl,
const KeplerGl = injectComponents([
[PanelHeaderFactory, myCustomHeaderFactory]
]);
// render KeplerGl, it will render your custom header
const MapContainer = () => ;
```
## Pass custom component props
`injectComponents` allows user to render custom component, however, they usually also want to pass additional props to the customized component which current component injector doesn’t support. To enable passing additional props, we implemented a `withState`helper that passes additional props to the customized component. `withState` takes 3 arguments: `lenses`, `mapStateToProps` and `actionCreators`, They allows user to pass in kepler.gl instance state, state from other part of the app, and custom actions.
- `lense` - A getter function to get a piece of kepler.gl subreducer state. Kepler.gl exports lenses for all its sub-reducers. For instance when pass `mapStateLens` to `withState`, the component will receive `mapState` of current kepler.gl instance as a prop.
- `mapStateToProps` - A wild card to play. You can pass a `mapStateToProps` function to get the state from any part of the app. If the lenses aren’t enough, use `mapStateToProps`.
- `actions` - action creators that will be passed to `bindActionCreators`.
Here is an example of using `withState` helper to add reducer state and actions to customized component as additional props.
```js
import {withState, injectComponents, PanelHeaderFactory} from '@kepler.gl/components';
import {visStateLens} from '@kepler.gl/reducers';
// custom action wrap to mounted instance
const addTodo = (text) => ({
type: 'ADD_TODO',
text
});
// define custom header
const CustomHeader = ({visState, todos, addTodo}) => (
addTodo('say hello')}>{`${Object.keys(visState.datasets).length} dataset loaded`}
);
// now CustomHeader will receive `visState` `todos` and `addTodo` as additional props.
const myCustomHeaderFactory = () => withState(
// subreducer lenses
[visStateLens],
// mapStateToProps
state => ({
todos: state.todos
}),
// actions
{addTodo}
)(CustomHeader);
```
================================================
FILE: docs/api-reference/advanced-usages/saving-loading-w-schema.md
================================================
# Saving and Loading Maps with Schema Manager
![Processor and Schema][processor-schema]
Kelper.gl provides a schema manager to save and load maps. It converts current map data and configuration into a smaller JSON blob. You can then load that JSON blob into an empty map by passing it to `addDataToMap`.
The reason kepler.gl provides a Schema manager is to make it easy for users to connect the kepler.gl client app to any database, saving map data / config and later load it back. With the schema manager, a map saved in an older version can still be parsed and loaded with the latest kepler.gl library.
### Save map
Pass the **instanceState** to `SchemaManager.save()`
- `SchemaManager.save()` will output a JSON blob including data and config.
Under the hood, `SchemaManager.save()` calls `SchemaManager.getDatasetToSave()` and `SchemaManager.getConfigToSave()`
- `SchemaManager.getDatasetToSave()` will output an array of dataset.
- `SchemaManager.getConfigToSave()` will output a JSON blob of the current config.
In the example blow, `foo` is the id of the KeplerGl instance to be save.
```js
import KeplerGlSchema from '@kepler.gl/schemas';
const mapToSave = KeplerGlSchema.save(state.keplerGl.foo);
// mapToSave = {datasets: [], config: {}, info: {}};
const dataToSave = KeplerGlSchema.getDatasetToSave(state.keplerGl.foo);
// dataToSave = [{version: '', data: {id, label, color, allData, fields}}]
const configToSave = KeplerGlSchema.getConfigToSave(state.keplerGl.foo);
// configToSave = {version: '', config: {}}
```
### Load map
Pass saved data and config to `SchemaManager.load()`
- `SchemaManager.load()` will parsed saved config and data, apply version control, the output can then be passed to `addDataToMap` directly.
Under the hood, `SchemaManager.load()` calls `SchemaManager.parseSavedData()` and `SchemaManager.parseSavedConfig()`
- `SchemaManager.parseSavedData()` will output an array of parsed dataset.
- `SchemaManager.parseSavedConfig()` will output a JSON blob of the parsed config.
```js
import KeplerGlSchema from '@kepler.gl/schemas';
import {addDataToMap} from '@kepler.gl/actions';
const mapToLoad = KeplerGlSchema.load(savedDatasets, savedConfig);
// mapToLoad = {datasets: [], config: {}};
this.props.dispatch(addDataToMap(mapToLoad));
```
### Match config with another dataset
Often times, people want to keep a map config as template, then load it with different datasets. To match a config with a different dataset, you need to make sure `data.id` in the new dataset matches the old one.
```js
import KeplerGlSchema from '@kepler.gl/schemas';
import {addDataToMap} from '@kepler.gl/actions';
// save current map data and config
const {datasets, config} = KeplerGlSchema.save(state.keplerGl.foo);
// mapToLoad = {datasets: [], config: {}};
// receive some new data
const newData = someNewData;
// newData = [{rows, fields}]
// match id with old datasets
const newDatasets = newData.map((d, i) => ({
version: datasets[i].version,
data: {
...datasets[i].data,
allData: d.rows,
fields: d.fields
}
}));
// load config with new datasets
const mapToLoad = KeplerGlSchema.load(newDatasets, config);
this.props.dispatch(addDataToMap(mapToLoad));
```
[processor-schema]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/api_load-save.png
================================================
FILE: docs/api-reference/advanced-usages/using-updaters.md
================================================
# Using Updaters
Updaters are state transition functions that mapped to actions. One action can map to multiple state updaters, each belongs to a subreducer.
This action-updater pattern allows a user to import a specific action updater in the app's root reducer and use it to directly modify kepler.gl’s state without dispatching the action. This will give user a lot of freedom to control over kepler.gl's state transition.
To achieve the same result with `togglePerspective` updating kepler.gl's map perspective mode. You can import and dispatch kepler.gl action `togglePerspective`:
```js
// action and forward dispatcher
import {togglePerspective} from '@kepler.gl/actions';
const MapContainer = ({dispatch}) => (
dispatch(togglePerspective())} />
);
```
or import the corresponding updater `mapStateUpdaters.togglePerspectiveUpdater` and call it inside the root reducer. The example below demos how to add a button outside kepler.gl component, and update the map perspective when click it.
```js
import keplerGlReducer, {mapStateUpdaters} from '@kepler.gl/reducers';
// Root Reducer
const reducers = combineReducers({
keplerGl: keplerGlReducer,
app: appReducer
});
const composedReducer = (state, action) => {
switch (action.type) {
case 'CLICK_BUTTON':
return {
...state,
keplerGl: {
...state.keplerGl,
foo: {
...state.keplerGl.foo,
mapState: mapStateUpdaters.togglePerspectiveUpdater(
t state.keplerGl.foo.mapState
)
}
}
};
}
return reducers(state, action);
};
export default composedReducer;
```
================================================
FILE: docs/api-reference/cloud-providers/README.md
================================================
# Cloud Providers
The kepler.gl application does not have a backend, however it offers integration point for optional commercial backends. Each backend can integrate with kepler by adding a "cloud provider" object to kepler's global list of cloud providers.
These objects must implement certain minimal set of methods, and can optionally immplement others, depending on the capability of the backend.
The set of methods available for cloud providers to implement is subject to change as new features are added to the front-end.
## Cloud Provider Object
A "cloud provider" object provides:
- a name and an icon
- any service specific methods (such as `uploadFile`)
- a set of oauth2 methods to plug into the authentication flow and get access tokens
Cloud-providers providers can implement the following properties
| Field/method | Description | Required? |
| --- | --- | --- |
| `name` | Name of the provider | required |
| `displayName` | Display name |
| `icon` | React Element to render as Icon |
| `thumbnail` | Size of the thumbnail image of the map that required by the provider |
| `hasPrivateStorage` | To participate in kepler's build-in private map saving function | required |
| `hasSharingUrl` | To participate in kepler's build-in share map via URL function | required |
| `getShareUrl` | To show user the shared Url of the map |
| `getMapUrl` | To update browser location once a map has been saved / loaded |
| `getAccessToken` | To participate in kepler's built-in oauth login routes |
| `getUserName` | To display user name of the logged in user |
| `login` | Method called to perform user login | required |
| `logout` | Method called to logout an user | required |
| `uploadMap` | Method called to upload map to storage | required |
| `listMaps` | Method called to load a catalog of maps saved by the current user | required |
| `downloadMap` | MEthod called to download a specific map | required |
## Adding a new Cloud Provider
An instance of the provider is added to array of cloud providers in the file `src/cloud-providers/providers.js` then passed to kepler.gl demo app. An example provider: [Dropbox Provider](https://github.com/keplergl/kepler.gl/blob/master/examples/demo-app/src/cloud-providers/dropbox-provider.js)
```js
import {Provider} from '@kepler.gl/cloud-providers';
class MyProvider extends Provider {
constructor() {
this.name = 'foo';
this.displayName = 'My Provider';
}
// ... other required methods below
}
const myProvider = new MyProvider();
const App = () =>
```
## Cloud Provider Instance Fields and Methods
See [Cloud Provider API](./cloud-provider.md)
================================================
FILE: docs/api-reference/cloud-providers/cloud-provider.md
================================================
### Table of Contents
- [Provider][1]
- [downloadMap][4]
- [getAccessToken][7]
- [getMapUrl][8]
- [getShareUrl][10]
- [getUserName][12]
- [hasPrivateStorage][13]
- [hasSharingUrl][14]
- [listMaps][15]
- [login][17]
- [logout][19]
- [uploadMap][21]
- [MapResponse][23]
- [Viz][25]
## Provider
The default provider class
**Parameters**
- `props` **[object][27]**
- `props.name` **[string][28]**
- `props.displayName` **[string][28]**
- `props.icon` **ReactElement** React element
- `props.thumbnail` **[object][27]** thumbnail size object
- `props.thumbnail.width` **[number][29]** thumbnail width in pixels
- `props.thumbnail.height` **[number][29]** thumbnail height in pixels
**Examples**
```javascript
const myProvider = new Provider({
name: 'foo',
displayName: 'Foo Storage'
icon: Icon,
thumbnail: {width: 300, height: 200}
})
```
### downloadMap
This method will be called when user select a map to load from the storage map viewer
**Parameters**
- `loadParams` **any** the loadParams property of each visualization object
**Examples**
```javascript
async downloadMap(loadParams) {
const mockResponse = {
map: {
datasets: [],
config: {},
info: {
app: 'kepler.gl',
created_at: ''
title: 'test map',
description: 'Hello this is my test dropbox map'
}
},
// pass csv here if your provider currently only support save / load file as csv
format: 'keplergl'
};
return downloadMap;
}
```
Returns **[MapResponse][30]** the map object containing dataset config info and format option
### getAccessToken
This method is called to determine whether user already logged in to this provider
Returns **[boolean][31]** true if a user already logged in
### getMapUrl
This method is called by kepler.gl demo app to pushes a new location to history, becoming the current location.
**Parameters**
- `fullURL` **[boolean][31]** Whether to return the full url with domain, or just the location (optional, default `true`)
Returns **[string][28]** mapUrl
### getShareUrl
This method is called after user share a map, to display the share url.
**Parameters**
- `fullUrl` **[boolean][31]** Whether to return the full url with domain, or just the location (optional, default `false`)
Returns **[string][28]** shareUrl
### getUserName
This method is called to get the user name of the current user. It will be displayed in the cloud provider tile.
Returns **[string][28]** true if a user already logged in
### hasPrivateStorage
Whether this provider support upload map to a private storage. If truthy, user will be displayed with the storage save icon on the top right of the side bar.
Returns **[boolean][31]**
### hasSharingUrl
Whether this provider support share map via a public url, if truthy, user will be displayed with a share map via url under the export map option on the top right of the side bar
Returns **[boolean][31]**
### listMaps
This method is called to get a list of maps saved by the current logged in user.
**Examples**
```javascript
async listMaps() {
return [
{
id: 'a',
title: 'My map',
description: 'My first kepler map',
imageUrl: 'http://',
udpatedAt: 1582677787000,
privateMap: false,
loadParams: {}
}
];
}
```
Returns **[Array][32]<[Viz][33]>** an array of Viz objects
### login
This method will be called when user click the login button in the cloud provider tile.
Upon login success, `onCloudLoginSuccess` has to be called to notify kepler.gl UI
**Parameters**
- `onCloudLoginSuccess` **[function][34]** callbacks to be called after login success
### logout
This method will be called when user click the logout button under the cloud provider tile.
Upon login success, `onCloudLoginSuccess` has to be called to notify kepler.gl UI
**Parameters**
- `onCloudLogoutSuccess` **[function][34]** callbacks to be called after logout success
### uploadMap
This method will be called to upload map for saving and sharing. Kepler.gl will package map data, config, title, description and thumbnail for upload to storage.
With the option to overwrite already saved map, and upload as private or public map.
**Parameters**
- `param` **[Object][27]**
- `param.mapData` **[Object][27]** the map object
- `param.mapData.map` **[Object][27]** {datasets. config, info: {title, description}}
- `param.mapData.thumbnail` **[Blob][35]** A thumbnail of current map. thumbnail size can be defined by provider by this.thumbnail
- `param.options` **[Object][27]** (optional, default `{}`)
- `param.options.overwrite` **[boolean][31]** whether user choose to overwrite already saved map under the same name
- `param.options.isPublic` **[boolean][31]** whether user wish to share the map with others. if isPublic is truthy, kepler will call this.getShareUrl() to display an URL they can share with others
## MapResponse
The returned object of `downloadMap`. The response object should contain: datasets: \[], config: {}, and info: {}
each dataset object should be {info: {id, label}, data: {...}}
to inform how kepler should process your data object, pass in `format`
Type: [Object][27]
### Properties
- `map` **[Object][27]**
- `map.datasets` **[Array][32]<[Object][27]>**
- `map.config` **[Object][27]**
- `map.info` **[Object][27]**
- `format` **[string][28]** one of 'csv': csv file string, 'geojson': geojson object, 'row': row object, 'keplergl': datasets array saved using KeplerGlSchema.save
## Viz
Type: [Object][27]
### Properties
- `id` **[string][28]** An unique id
- `title` **[string][28]** The title of the map
- `description` **[string][28]** The description of the map
- `imageUrl` **[string][28]** The imageUrl of the map
- `lastModification` **[number][29]** An epoch timestamp in milliseconds
- `privateMap` **[boolean][31]** Optional, whether if this map is private to the user, or can be accessed by others via URL
- `loadParams` **any** A property to be passed to `downloadMap`
[1]: #provider
[2]: #parameters
[3]: #examples
[4]: #downloadmap
[5]: #parameters-1
[6]: #examples-1
[7]: #getaccesstoken
[8]: #getmapurl
[9]: #parameters-2
[10]: #getshareurl
[11]: #parameters-3
[12]: #getusername
[13]: #hasprivatestorage
[14]: #hassharingurl
[15]: #listmaps
[16]: #examples-2
[17]: #login
[18]: #parameters-4
[19]: #logout
[20]: #parameters-5
[21]: #uploadmap
[22]: #parameters-6
[23]: #mapresponse
[24]: #properties
[25]: #viz
[26]: #properties-1
[27]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object
[28]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String
[29]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number
[30]: #mapresponse
[31]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean
[32]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array
[33]: #viz
[34]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function
[35]: https://developer.mozilla.org/docs/Web/API/Blob
================================================
FILE: docs/api-reference/components/README.md
================================================
# Components
...Coming soon
================================================
FILE: docs/api-reference/custom-theme/README.md
================================================
# Custom Theme
You can pass theme name or object used to customize Kepler.gl style. Kepler.gl provide an `'light'` theme besides the default 'dark' theme. When pass in a theme object Kepler.gl will use the value passed as input to overwrite values from [theme](https://github.com/keplergl/kepler.gl/blob/master/src/styles/src/base.ts).
```js
import KeplerGl from '@kepler.gl/components';
const Map = props => (
);
```
### Available Themes
| theme | |
| ------- | ------- |
| `dark` (default) |  |
| `light` |  |
| `base` |  |
================================================
FILE: docs/api-reference/ecosystem.md
================================================
## Ecosystem
The diagram below represents the data flow. Note that in most cases, you don't have to worry about action creators, forward dispatcher and state updaters, as they are handled under-the-hood by kepler.gl
![Data flow][data-flow]
## Component
The Kepler.gl component will call redux connect under the hood, and dispatch to the corresponding reducer instance.
To allow mounting of multiple instance of kepler.gl components in the same app, we implemented a local selector with forward dispatch system. The local selector will pass down the knowledge where the state of this instance lives, and the forward dispatch system will pass down a dispatch function that knows to dispatch action to the correct reducer instance. __Each kepler.gl component instance needs to have an unique id__.
Read more about [Component][components].
## Reducer and Forward Dispatcher
![Forward Dispatcher][forward-dispatcher]
The kepler.gl root reducer that user mounted in their app is in fact a wrapper reducer that stored the child state and update them based on forwarded actions. If An action is not a forwarded action, it pass down to all child reducers.
When a KeplerGl component instance is mounted with the id `foo`, the wrapper reducer will add a kepler.gl local state in the root state at key `foo`.
One of the biggest challenge of using local state is to dispatch actions that only modify a specific local state. For instance, if we have 2 kepler.gl components in our app, one with id `foo` other with id `bar`. Our keplerGl reducer is going to be `keplerGl: {foo: …, bar …}`. When foo dispatches an action, it only needs to update the state of foo, we need a way to decorate the action that the root reducer only pass it down to subreducer `foo`.
To solve this, kepler.gl has a forward dispatching system. It consists of a set of forward functions including `wrapTo`, `forwardTo` and `unwrap`. `wrapTo` wraps an action payload into an forward action by adding an address `_addr_` and a `_forward_` signature to its meta.
Each kepler.gl component receives a forward dispatcher as a prop, which dispatches a forwarded action to the root reducer. The root reducer will check if the given action has that address and if so, unwrap the action and pass it to the child reducer.
Read more about [Reducers][reducers].
## Actions and Updaters
Actions in reducers are mapped to state transition functions. `UPDATE_MAP` is mapped to `updateMapUpdater`. An updater is the backbone of the redux reducer. It is a pure function that takes the previous state and an action, and returns the next state. `(oldState, action) => newState`. It describes how the state should transition upon receiving that action.
here is a snippet of the map state reducer in kepler.gl.
```js
/* Action Handlers */
const actionHandler = {
[ActionTypes.FIT_BOUNDS]: fitBoundsUpdater,
[ActionTypes.TOGGLE_PERSPECTIVE]: togglePerspectiveUpdater
};
/* Reducer */
export default handleActions(actionHandler, INITIAL_MAP_STATE);
```
This pattern allows a user to import a specific action updater in the app's root reducer and use it to directly modify kepler.gl’s state without dispatching the action. This will give user a lot of freedom to control over kepler.gl's state transition.
Read more about [Actions and Updaters][actions-updaters].
## Processors and Schema Manager
![Processor and Schema][processor-schema]
Processors and schema manager are useful helpers to get data in and out of kepler.gl. You can use `processCsvData(csv)` and `processGeojson(geojson)` to parse csv or geoJson file and pass it to `addDataToMap()` action.
To save and reload the current map, you can call `KeplerGlSchema.save()` and pass it the instant state. It will return a json output containing map data and config. Pass this json file to `processKeplerglJSON()` and then `addDataToMap()` will reproduce the same map.
Read more about [Processors][processors] and [Schema Manager][schemas].
[basic-usage]: ./basic-usage.md
[advanced-usage]: ./advanced-usage.md
[components]: components/README.md
[reducers]: reducers/README.md
[actions-updaters]: actions/README.md
[processors]: processors/README.md
[schemas]: schemas/README.md
[data-flow]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/api_data-flow.png
[forward-dispatcher]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/api_forward-dispatch.png
[processor-schema]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/api_load-save.png
================================================
FILE: docs/api-reference/get-started.md
================================================
## Get Started
### Installation
Use Node v18 and above, older node versions have not been tested
```sh
npm install --save kepler.gl @kepler.gl/components @kepler.gl/reducers
```
### Get Mapbox Token
Kepler.gl is built on top of [Mapbox GL](https://www.mapbox.com). A mapbox account and an access token are needed to use kepler.gl in your app. Get a [Mapbox Access Token](https://www.mapbox.com/help/define-access-token/) at mapbox.com.
### Basic Usage
![Basic Usage][basic-usage]
#### 0. Working Template
Check full example on [Github](https://github.com/keplergl/kepler.gl/tree/master/examples/get-started).
```js
import * as React from "react";
import ReactDOM from "react-dom/client";
import document from "global/document";
import { applyMiddleware, combineReducers, compose, createStore } from "redux";
import { connect, Provider } from "react-redux";
import keplerGlReducer, { enhanceReduxMiddleware } from "@kepler.gl/reducers";
import KeplerGl from "@kepler.gl/components";
import AutoSizer from "react-virtualized/dist/commonjs/AutoSizer";
const reducers = combineReducers({
keplerGl: keplerGlReducer.initialState({
uiState: {
readOnly: false,
currentModal: null,
},
}),
});
const middleWares = enhanceReduxMiddleware([
// Add other middlewares here
]);
const enhancers = applyMiddleware(...middleWares);
const initialState = {};
const store = createStore(reducers, initialState, compose(enhancers));
const App = () => (
{({ height, width }) => (
)}
);
const mapStateToProps = (state) => state;
const dispatchToProps = (dispatch) => ({ dispatch });
const ConnectedApp = connect(mapStateToProps, dispatchToProps)(App);
const Root = () => (
);
export default Root;
```
#### 1. Mount reducer
Kepler.gl uses [Redux](https://redux.js.org/) to manage its internal state, along with [react-palm](https://github.com/btford/react-palm) middleware to handle side effects. Mount kepler.gl reducer in your store, apply `taskMiddleware`.
```js
import keplerGlReducer from '@kepler.gl/reducers';
import {createStore, combineReducers, applyMiddleware} from 'redux';
import {taskMiddleware} from 'react-palm/tasks';
const reducer = combineReducers({
// <-- mount kepler.gl reducer in your app
keplerGl: keplerGlReducer,
// Your other reducers here
app: appReducer
});
// create store
const store = createStore(reducer, {}, applyMiddleware(taskMiddleware));
```
If you mount `keplerGlReducer` in another address instead of `keplerGl`, or it is not
mounted at root of your reducer, you will need to specify the path to it when you mount the component with the `getState` prop.
#### 2. Mount component
```js
import KeplerGl from '@kepler.gl/components';
const Map = props => (
);
```
#### 3. Add data to map
In order to interact with a kepler.gl instance and add new data to it, you can dispatch the __`addDataToMap`__ action from anywhere inside your app. It adds dataset(s) to a kepler.gl instance and updates the full configuration (mapState, mapStyle, visState).
Read more about [addDataToMap](./actions/actions.md#adddatatomap)
```js
import {addDataToMap} from '@kepler.gl/actions';
this.props.dispatch(
addDataToMap({
// datasets
datasets: {
info: {
label: 'Sample Taxi Trips in New York City',
id: 'test_trip_data'
},
data: sampleTripData
},
// option
option: {
centerMap: true,
readOnly: false
},
// config
config: {
mapStyle: {styleType: 'light'}
}
})
);
```
[basic-usage]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/api_basic-usage.png
================================================
FILE: docs/api-reference/localization/README.md
================================================
# Localization
Kepler.gl supports localization through [react-intl]. Locale is determined by `uiState.locale` value.
Current supported languages are:
| locale code | Language | Default? |
|-------------|------------|----------|
| en | English | default |
| fi | Finnish | |
| pt | Portuguese | |
| ca | Catalan | |
| es | Spanish | |
| ja | Japanese | |
| cn | Chinese | |
| ru | Русский | |
## Changing default language
By default the first language is English `en`. The default language can be changed by giving locale value to uiState:
```js
import {combineReducers} from 'redux';
import keplerGlReducer from '@kepler.gl/reducers';
import {LOCALE_CODES} from '@kepler.gl/localization';
const customizedKeplerGlReducer = keplerGlReducer.initialState({
uiState: {
// use Finnish locale
locale: LOCALE_CODES.fi
}
});
const reducers = combineReducers({
keplerGl: customizedKeplerGlReducer,
app: appReducer
});
```
## Adding new language
Let's say we want to add the Swedish language to kepler.gl. Easiest way to add translation of new language is to follow these 3 steps:
- Find out the [language code][language-codes] for Swedish: `sv`
- Add new translation file `src/localization/translations/sv.js` by copying `src/localization/translations/en.js` and translating the strings
- Update _LOCALES_ in `src/localization/locales.js` to include new language translation:
```javascript
export const LOCALES = {
en : 'English',
fi : 'Suomi',
pt: 'Português',
// add Swedish language
sv: 'Svenska'
}
```
## Modify default translation or add new translation
the `localeMessages` prop of `KeplerGl` takes additional translations and merge with default translation.
#### Example 1. Update default translation
To update the english translation of `layerManager.addData`, pass `localeMessages` like this.
```javascript
const localeMessages = {
en: {
['layerManager.addData']: 'Add Data to Layer'
}
};
const App = () => (
);
```
#### Example 2. Pass additional translation
Sometimes together with dependency injection, you might need to add additional translations to the customized component. For example, adding an additional `settings` panel in the side panel, you will need to provide a translation for the panel name assigned to `sidebar.panels.settings`
```javascript
const localeMessages = {
en: {
['sidebar.panels.settings']: 'Settings'
}
};
const App = () => (
);
```
[react-intl]: https://github.com/formatjs/react-intl
[language-codes]: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
================================================
FILE: docs/api-reference/processors/README.md
================================================
# Processors
...Coming soon
================================================
FILE: docs/api-reference/processors/processors.md
================================================
### Table of Contents
- [getFieldsFromData](#getfieldsfromdata)
- [processCsvData](#processcsvdata)
- [processGeojson](#processgeojson)
- [processKeplerglJSON](#processkeplergljson)
- [processRowObject](#processrowobject)
## getFieldsFromData
Analyze field types from data in `string` format, e.g. uploaded csv.
Assign `type`, `tableFieldIndex` and `format` (timestamp only) to each field
**Parameters**
- `data` **[Array][16]<[Object][17]>** array of row object
- `fieldOrder` **[Array][16]** array of field names as string
**Examples**
```javascript
import {getFieldsFromData} from '@kepler.gl/processors';
const data = [{
time: '2016-09-17 00:09:55',
value: '4',
surge: '1.2',
isTrip: 'true',
zeroOnes: '0'
}, {
time: '2016-09-17 00:30:08',
value: '3',
surge: null,
isTrip: 'false',
zeroOnes: '1'
}, {
time: null,
value: '2',
surge: '1.3',
isTrip: null,
zeroOnes: '1'
}];
const fieldOrder = ['time', 'value', 'surge', 'isTrip', 'zeroOnes'];
const fields = getFieldsFromData(data, fieldOrder);
// fields = [
// {name: 'time', format: 'YYYY-M-D H:m:s', tableFieldIndex: 1, type: 'timestamp'},
// {name: 'value', format: '', tableFieldIndex: 4, type: 'integer'},
// {name: 'surge', format: '', tableFieldIndex: 5, type: 'real'},
// {name: 'isTrip', format: '', tableFieldIndex: 6, type: 'boolean'},
// {name: 'zeroOnes', format: '', tableFieldIndex: 7, type: 'integer'}];
```
Returns **[Array][16]<[Object][17]>** formatted fields
## processCsvData
Process csv data, output a data object with `{fields: [], rows: []}`.
The data object can be wrapped in a `dataset` and pass to [`addDataToMap`][18]
**Parameters**
- `rawData` **[string][19]** raw csv string
**Examples**
```javascript
import {processCsvData} from '@kepler.gl/processors';
const testData = `gps_data.utc_timestamp,gps_data.lat,gps_data.lng,gps_data.types,epoch,has_result,id,time,begintrip_ts_utc,begintrip_ts_local,date
2016-09-17 00:09:55,29.9900937,31.2590542,driver_analytics,1472688000000,False,1,2016-09-23T00:00:00.000Z,2016-10-01 09:41:39+00:00,2016-10-01 09:41:39+00:00,2016-09-23
2016-09-17 00:10:56,29.9927699,31.2461142,driver_analytics,1472688000000,False,2,2016-09-23T00:00:00.000Z,2016-10-01 09:46:37+00:00,2016-10-01 16:46:37+00:00,2016-09-23
2016-09-17 00:11:56,29.9907261,31.2312742,driver_analytics,1472688000000,False,3,2016-09-23T00:00:00.000Z,,,2016-09-23
2016-09-17 00:12:58,29.9870074,31.2175827,driver_analytics,1472688000000,False,4,2016-09-23T00:00:00.000Z,,,2016-09-23`
const dataset = {
info: {id: 'test_data', label: 'My Csv'},
data: processCsvData(testData)
};
dispatch(addDataToMap({
datasets: [dataset],
options: {centerMap: true, readOnly: true}
}));
```
Returns **[Object][17]** data object `{fields: [], rows: []}`
## processGeojson
Process GeoJSON [`FeatureCollection`][20],
output a data object with `{fields: [], rows: []}`.
The data object can be wrapped in a `dataset` and pass to [`addDataToMap`][18]
**Parameters**
- `rawData` **[Object][17]** raw geojson feature collection
**Examples**
```javascript
import {addDataToMap} from '@kepler.gl/actions';
import {processGeojson} from '@kepler.gl/processors';
const geojson = {
"type" : "FeatureCollection",
"features" : [{
"type" : "Feature",
"properties" : {
"capacity" : "10",
"type" : "U-Rack"
},
"geometry" : {
"type" : "Point",
"coordinates" : [ -71.073283, 42.417500 ]
}
}]
};
dispatch(addDataToMap({
datasets: {
info: {
label: 'Sample Taxi Trips in New York City',
id: 'test_trip_data'
},
data: processGeojson(geojson)
}
}));
```
Returns **[Object][17]** dataset containing `fields` and `rows`
## processKeplerglJSON
Process saved kepler.gl json to be pass to [`addDataToMap`][18].
The json object should contain `datasets` and `config`.
**Parameters**
- `rawData` **[Object][17]**
- `rawData.datasets` **[Array][16]**
- `rawData.config` **[Object][17]**
**Examples**
```javascript
import {addDataToMap} from '@kepler.gl/actions';
import {processKeplerglJSON} from '@kepler.gl/processors';
dispatch(addDataToMap(processKeplerglJSON(keplerGlJson)));
```
Returns **[Object][17]** datasets and config `{datasets: {}, config: {}}`
## processRowObject
Process data where each row is an object, output can be passed to [`addDataToMap`][18]
**Parameters**
- `rawData` **[Array][16]<[Object][17]>** an array of row object, each object should have the same number of keys
**Examples**
```javascript
import {addDataToMap} from '@kepler.gl/actions';
import {processRowObject} from '@kepler.gl/processors';
const data = [
{lat: 31.27, lng: 127.56, value: 3},
{lat: 31.22, lng: 126.26, value: 1}
];
dispatch(addDataToMap({
datasets: {
info: {label: 'My Data', id: 'my_data'},
data: processRowObject(data)
}
}));
```
Returns **[Object][17]** dataset containing `fields` and `rows`
[1]: #getfieldsfromdata
[2]: #parameters
[3]: #examples
[4]: #processcsvdata
[5]: #parameters-1
[6]: #examples-1
[7]: #processgeojson
[8]: #parameters-2
[9]: #examples-2
[10]: #processkeplergljson
[11]: #parameters-3
[12]: #examples-3
[13]: #processrowobject
[14]: #parameters-4
[15]: #examples-4
[16]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array
[17]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object
[18]: ../actions/actions.md#adddatatomap
[19]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String
[20]: http://wiki.geojson.org/GeoJSON_draft_version_6#FeatureCollection
================================================
FILE: docs/api-reference/reducers/README.md
================================================
## Reducers
Kepler.gl is a redux-connected component that utilizes redux to manage its state. The basic implementation of kepler.gl reducer is simple. However, to make the most of it, it's recommended to have basic knowledge on:
- [Redux][redux] state container
- [React][react]
- [React Redux connect][react-redux]
![Compose-reducer][diagram-1]
It is immportant to understand the relationship between __kepler.gl reducer__, __instance reducer__ and __subreducer__. Kepler.gl reducer is the root reducer that combines multiple instance reducer, which manages the state of each individual kepler.gl component. The instance reducer is consists of 4 subreducers, each manages an independent part of the state.
## KeplerGl Reducer
To connect kepler.gl components to your Redux app you'll need the following pieces from the kepler.gl package:
- Redux Reducer: `keplerGlReducer` imported from `@kepler.gl/reducers`
- React Component: `KeplerGl` imported from `@kepler.gl/components`
These are the only 2 pieces you need to get kepler.gl up and running in your app. When you mount kepler.gl reducer in your app reducer (with `combineReducers`), it will then managers __ALL__ KeplerGl component instances that you add to your app. Each kepler.gl instance state is stored in a instance reduccer.
For instance, if you have 2 kepler.gl components in your App:
```js
import KeplerGl from '@kepler.gl/components';
const MapApp = () => (
);
```
Your redux state will be:
```js
state = {
keplerGl: {
foo: {},
bar: {}
},
// ... other app state
app: {}
}
```
## Instance Reducer
Each kepler.gl component state is stored in a instance reduccer. A instance reducer has 4 subreducers. __`visState`__, __`mapState`__, __`mapStyle`__ and __`uiState`__. Each of them managers a piece of state that is mostly self contained.
- __visState__ - Manages all data and visualization related state, including datasets, layers, filters and interaction configs. Some of the key updaters are `updateVisDataUpdater`, `layerConfigChangeUpdater`, `setFilterUpdater`, `interactionConfigChangeUpdater`.
- __mapState__ - Manages base map behavior including the viewport, drag rotate and toggle split maps. Key updates are `updateMapUpdater`, `toggleSplitMapUpdater` and `togglePerspectiveUpdater`.
- __mapStyle__ - Managers base map style, including setting base map style, toggling base map layers and adding custom base map style.
- __uiState__ - Managers all UI component transition state, including open / close side panel, current displayed panel etc. Note, ui state reducer is the only reducer that’s not saved in kepler.gl schema.
## Subreducer
The subreducers - __`visState`__, __`mapState`__, __`mapStyle`__ and __`uiState`__ - are assembled by a list of action handlers, each handler mapped to a state transition function named xxUpdater. For instance, here is a snippet of the map state reducer in kepler.gl:
```js
/* Action Handlers */
const actionHandler = {
[ActionTypes.UPDATE_MAP]: updateMapUpdater,
[ActionTypes.FIT_BOUNDS]: fitBoundsUpdater,
[ActionTypes.TOGGLE_PERSPECTIVE]: togglePerspectiveUpdater
};
```
User can import a specific action handler in their root reducer and use it to directly modify kepler.gl’s state (without dispathcing a kepler.gl action). This will give user the full control over kepler.gl’s component state.
Here is an example how you can listen to an app action `QUERY_SUCCESS` and call `updateVisDataUpdater` to load data into kepler.gl.
```js
import keplerGlReducer, {visStateUpdaters} from '@kepler.gl/reducers';
// Root Reducer
const reducers = combineReducers({
keplerGl: keplerGlReducer,
app: appReducer
});
const composedReducer = (state, action) => {
switch (action.type) {
case 'QUERY_SUCCESS':
return {
...state,
keplerGl: {
...state.keplerGl,
// 'map' is the id of the keplerGl instance
map: {
...state.keplerGl.map,
visState: visStateUpdaters.updateVisDataUpdater(
// you have to pass the subreducer state that the updater is associated with
state.keplerGl.map.visState,
{datasets: action.payload}
)
}
}
};
}
return reducers(state, action);
};
export default composedReducer;
```
[redux]: https://redux.js.org/
[react]: https://reactjs.org/
[react-redux]: https://react-redux.js.org/
[diagram-1]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/api_reducers_compose-reducers.png
================================================
FILE: docs/api-reference/reducers/combine.md
================================================
### Table of Contents
- [combinedUpdaters](#combinedupdaters)
- [addDataToMapUpdater](#adddatatomapupdater)
## combinedUpdaters
Some actions will affect the entire kepler.lg instance state.
The updaters for these actions is exported as `combinedUpdaters`. These updater take the entire instance state
as the first argument. Read more about [Using updaters][5]
**Examples**
```javascript
import keplerGlReducer, {combinedUpdaters} from '@kepler.gl/reducers';
// Root Reducer
const reducers = combineReducers({
keplerGl: keplerGlReducer,
app: appReducer
});
const composedReducer = (state, action) => {
switch (action.type) {
// add data to map after receiving data from remote sources
case 'LOAD_REMOTE_RESOURCE_SUCCESS':
return {
...state,
keplerGl: {
...state.keplerGl,
// pass in kepler.gl instance state to combinedUpdaters
map: combinedUpdaters.addDataToMapUpdater(
state.keplerGl.map,
{
payload: {
datasets: action.datasets,
options: {readOnly: true},
config: action.config
}
}
)
}
};
}
return reducers(state, action);
};
export default composedReducer;
```
### addDataToMapUpdater
Combine data and full configuration update in a single action
- **Action**: [`addDataToMap`][6]
**Parameters**
- `state` **[Object][7]** kepler.gl instance state, containing all subreducer state
- `action` **[Object][7]**
- `action.payload` **[Object][7]** `{datasets, options, config}`
- `action.payload.datasets` **([Array][8]<[Object][7]> | [Object][7])** **\*required** datasets can be a dataset or an array of datasets
Each dataset object needs to have `info` and `data` property.
- `action.payload.datasets.info` **[Object][7]** \-info of a dataset
- `action.payload.datasets.info.id` **[string][9]** id of this dataset. If config is defined, `id` should matches the `dataId` in config.
- `action.payload.datasets.info.label` **[string][9]** A display name of this dataset
- `action.payload.datasets.data` **[Object][7]** **\*required** The data object, in a tabular format with 2 properties `fields` and `rows`
- `action.payload.datasets.data.fields` **[Array][8]<[Object][7]>** **\*required** Array of fields,
- `action.payload.datasets.data.fields.name` **[string][9]** **\*required** Name of the field,
- `action.payload.datasets.data.rows` **[Array][8]<[Array][8]>** **\*required** Array of rows, in a tabular format with `fields` and `rows`
- `action.payload.options` **[Object][7]** option object `{centerMap: true}`
- `action.payload.config` **[Object][7]** map config
Returns **[Object][7]** nextState
[1]: #combinedupdaters
[2]: #examples
[3]: #adddatatomapupdater
[4]: #parameters
[5]: ../advanced-usage/using-updaters.md
[6]: ../actions/actions.md#adddatatomap
[7]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object
[8]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array
[9]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String
================================================
FILE: docs/api-reference/reducers/map-state.md
================================================
### Table of Contents
- [mapStateUpdaters](#mapstateupdaters)
- [fitBoundsUpdater](#fitboundsupdater)
- [INITIAL\_MAP\_STATE](#initial_map_state)
- [Properties](#properties)
- [receiveMapConfigUpdater](#receivemapconfigupdater)
- [resetMapConfigUpdater](#resetmapconfigupdater)
- [togglePerspectiveUpdater](#toggleperspectiveupdater)
- [toggleSplitMapUpdater](#togglesplitmapupdater)
- [updateMapUpdater](#updatemapupdater)
## mapStateUpdaters
Updaters for `mapState` reducer. Can be used in your root reducer to directly modify kepler.gl's state.
Read more about [Using updaters][17]
**Examples**
```javascript
import keplerGlReducer, {mapStateUpdaters} from '@kepler.gl/reducers';
// Root Reducer
const reducers = combineReducers({
keplerGl: keplerGlReducer,
app: appReducer
});
const composedReducer = (state, action) => {
switch (action.type) {
// click button to close side panel
case 'CLICK_BUTTON':
return {
...state,
keplerGl: {
...state.keplerGl,
foo: {
...state.keplerGl.foo,
mapState: mapStateUpdaters.fitBoundsUpdater(
mapState, {payload: [127.34, 31.09, 127.56, 31.59]]}
)
}
}
};
}
return reducers(state, action);
};
export default composedReducer;
```
### fitBoundsUpdater
Fit map viewport to bounds
- **Action**: [`fitBounds`][18]
**Parameters**
- `state` **[Object][19]**
- `action` **[Object][19]**
- `action.payload` **[Array][20]<[number][21]>** bounds as `[lngMin, latMin, lngMax, latMax]`
Returns **[Object][19]** nextState
### INITIAL_MAP_STATE
Default initial `mapState`
#### Properties
- `pitch` **[number][21]** Default: `0`
- `bearing` **[number][21]** Default: `0`
- `latitude` **[number][21]** Default: `37.75043`
- `longitude` **[number][21]** Default: `-122.34679`
- `zoom` **[number][21]** Default: `9`
- `dragRotate` **[boolean][22]** Default: `false`
- `width` **[number][21]** Default: `800`
- `height` **[number][21]** Default: `800`
- `isSplit` **[boolean][22]** Default: `false`
### receiveMapConfigUpdater
Update `mapState` to propagate a new config
- **Action**: [`receiveMapConfig`][23]
**Parameters**
- `state` **[Object][19]**
- `action` **[Object][19]**
- `action.payload` **[Object][19]** saved map config
- `action.payload.config` (optional, default `{}`)
- `action.payload.options` (optional, default `{}`)
- `action.payload.bounds` (optional, default `null`)
Returns **[Object][19]** nextState
### resetMapConfigUpdater
reset mapState to initial State
- **Action**: [`resetMapConfig`][24]
**Parameters**
- `state` **[Object][19]** `mapState`
Returns **[Object][19]** nextState
### togglePerspectiveUpdater
Toggle between 3d and 2d map.
- **Action**: [`togglePerspective`][25]
**Parameters**
- `state` **[Object][19]**
Returns **[Object][19]** nextState
### toggleSplitMapUpdater
Toggle between one or split maps
- **Action**: [`toggleSplitMap`][26]
**Parameters**
- `state` **[Object][19]**
Returns **[Object][19]** nextState
### updateMapUpdater
Update map viewport
- **Action**: [`updateMap`][27]
**Parameters**
- `state` **[Object][19]**
- `action` **[Object][19]**
- `action.payload` **[Object][19]** viewport
Returns **[Object][19]** nextState
[1]: #mapstateupdaters
[2]: #examples
[3]: #fitboundsupdater
[4]: #parameters
[5]: #initial_map_state
[6]: #properties
[7]: #receivemapconfigupdater
[8]: #parameters-1
[9]: #resetmapconfigupdater
[10]: #parameters-2
[11]: #toggleperspectiveupdater
[12]: #parameters-3
[13]: #togglesplitmapupdater
[14]: #parameters-4
[15]: #updatemapupdater
[16]: #parameters-5
[17]: ../advanced-usage/using-updaters.md
[18]: ../actions/actions.md#fitbounds
[19]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object
[20]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array
[21]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number
[22]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean
[23]: ../actions/actions.md#receivemapconfig
[24]: ../actions/actions.md#resetmapconfig
[25]: ../actions/actions.md#toggleperspective
[26]: ../actions/actions.md#togglesplitmap
[27]: ../actions/actions.md#updatemap
================================================
FILE: docs/api-reference/reducers/map-style.md
================================================
### Table of Contents
- [mapStyleUpdaters](#mapstyleupdaters)
- [INITIAL\_MAP\_STYLE](#initial_map_style)
- [Properties](#properties)
- [initMapStyleUpdater](#initmapstyleupdater)
- [inputMapStyleUpdater](#inputmapstyleupdater)
- [loadCustomMapStyleUpdater](#loadcustommapstyleupdater)
- [loadMapStyleErrUpdater](#loadmapstyleerrupdater)
- [loadMapStylesUpdater](#loadmapstylesupdater)
- [mapConfigChangeUpdater](#mapconfigchangeupdater)
- [mapStyleChangeUpdater](#mapstylechangeupdater)
- [resetMapConfigMapStyleUpdater](#resetmapconfigmapstyleupdater)
## mapStyleUpdaters
Updaters for `mapStyle`. Can be used in your root reducer to directly modify kepler.gl's state.
Read more about [Using updaters][21]
**Examples**
```javascript
import keplerGlReducer, {mapStyleUpdaters} from '@kepler.gl/reducers';
// Root Reducer
const reducers = combineReducers({
keplerGl: keplerGlReducer,
app: appReducer
});
const composedReducer = (state, action) => {
switch (action.type) {
// click button to hide label from background map
case 'CLICK_BUTTON':
return {
...state,
keplerGl: {
...state.keplerGl,
foo: {
...state.keplerGl.foo,
mapStyle: mapStyleUpdaters.mapConfigChangeUpdater(
mapStyle,
{payload: {visibleLayerGroups: {label: false, road: true, background: true}}}
)
}
}
};
}
return reducers(state, action);
};
export default composedReducer;
```
### INITIAL_MAP_STYLE
Default initial `mapStyle`
#### Properties
- `styleType` **[string][22]** Default: `'dark'`
- `visibleLayerGroups` **[Object][23]** Default: `{}`
- `topLayerGroups` **[Object][23]** Default: `{}`
- `mapStyles` **[Object][23]** mapping from style key to style object
- `mapboxApiAccessToken` **[string][22]** Default: `null`
- `inputStyle` **[Object][23]** Default: `{}`
- `threeDBuildingColor` **[Array][24]** Default: `[r, g, b]`
### initMapStyleUpdater
Propagate `mapStyle` reducer with `mapboxApiAccessToken` and `mapStylesReplaceDefault`.
if mapStylesReplaceDefault is true mapStyles is emptied; loadMapStylesUpdater() will
populate mapStyles.
- **Action**: [`keplerGlInit`][25]
**Parameters**
- `state` **[Object][23]**
- `action` **[Object][23]**
- `action.payload` **[Object][23]**
- `action.payload.mapboxApiAccessToken` **[string][22]**
Returns **[Object][23]** nextState
### inputMapStyleUpdater
Input a custom map style object
- **Action**: [`inputMapStyle`][26]
**Parameters**
- `state` **[Object][23]** `mapStyle`
- `action` **[Object][23]** action object
- `action.payload` **[Object][23]** inputStyle
- `action.payload.url` **[string][22]** style url e.g. `'mapbox://styles/heshan/xxxxxyyyyzzz'`
- `action.payload.id` **[string][22]** style url e.g. `'custom_style_1'`
- `action.payload.style` **[Object][23]** actual mapbox style json
- `action.payload.name` **[string][22]** style name
- `action.payload.layerGroups` **[Object][23]** layer groups that can be used to set map layer visibility
- `action.payload.icon` **[Object][23]** icon image data url
- `action.payload.inputStyle`
- `action.payload.mapState`
Returns **[Object][23]** nextState
### loadCustomMapStyleUpdater
Callback when a custom map style object is received
- **Action**: [`loadCustomMapStyle`][27]
**Parameters**
- `state` **[Object][23]** `mapStyle`
- `action` **[Object][23]**
- `action.payload` **[Object][23]**
- `action.payload.icon` **[string][22]**
- `action.payload.style` **[Object][23]**
- `action.payload.error` **any**
- `action.payload.icon`
- `action.payload.style`
- `action.payload.error`
Returns **[Object][23]** nextState
### loadMapStyleErrUpdater
Callback when load map style error
- **Action**: [`loadMapStyleErr`][28]
**Parameters**
- `state` **[Object][23]** `mapStyle`
- `action` **[Object][23]**
- `action.payload` **any** error
Returns **[Object][23]** nextState
### loadMapStylesUpdater
Callback when load map style success
- **Action**: [`loadMapStyles`][29]
**Parameters**
- `state` **[Object][23]** `mapStyle`
- `action` **[Object][23]**
- `action.payload` **[Object][23]** a `{[id]: style}` mapping
Returns **[Object][23]** nextState
### mapConfigChangeUpdater
Update `visibleLayerGroups`to change layer group visibility
- **Action**: [`mapConfigChange`][30]
**Parameters**
- `state` **[Object][23]** `mapStyle`
- `action` **[Object][23]**
- `action.payload` **[Object][23]** new config `{visibleLayerGroups: {label: false, road: true, background: true}}`
Returns **[Object][23]** nextState
### mapStyleChangeUpdater
Change to another map style. The selected style should already been loaded into `mapStyle.mapStyles`
- **Action**: [`mapStyleChange`][31]
**Parameters**
- `state` **[Object][23]** `mapStyle`
- `action` **[Object][23]**
- `action.payload` **[string][22]**
Returns **[Object][23]** nextState
### resetMapConfigMapStyleUpdater
Reset map style config to initial state
- **Action**: [`resetMapConfig`][32]
**Parameters**
- `state` **[Object][23]** `mapStyle`
Returns **[Object][23]** nextState
[1]: #mapstyleupdaters
[2]: #examples
[3]: #initial_map_style
[4]: #properties
[5]: #initmapstyleupdater
[6]: #parameters
[7]: #inputmapstyleupdater
[8]: #parameters-1
[9]: #loadcustommapstyleupdater
[10]: #parameters-2
[11]: #loadmapstyleerrupdater
[12]: #parameters-3
[13]: #loadmapstylesupdater
[14]: #parameters-4
[15]: #mapconfigchangeupdater
[16]: #parameters-5
[17]: #mapstylechangeupdater
[18]: #parameters-6
[19]: #resetmapconfigmapstyleupdater
[20]: #parameters-7
[21]: ../advanced-usage/using-updaters.md
[22]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String
[23]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object
[24]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array
[25]: ../actions/actions.md#keplerglinit
[26]: ../actions/actions.md#inputmapstyle
[27]: ../actions/actions.md#loadcustommapstyle
[28]: ../actions/actions.md#loadmapstyleerr
[29]: ../actions/actions.md#loadmapstyles
[30]: ../actions/actions.md#mapconfigchange
[31]: ../actions/actions.md#mapstylechange
[32]: ../actions/actions.md#resetmapconfig
================================================
FILE: docs/api-reference/reducers/reducers.md
================================================
### Table of Contents
- [keplerGlReducer](#keplerglreducer)
- [keplerGlReducer.initialState](#keplerglreducerinitialstate)
- [keplerGlReducer.plugin](#keplerglreducerplugin)
- [mapStateLens](#mapstatelens)
- [mapStyleLens](#mapstylelens)
- [providerStateLens](#providerstatelens)
- [uiStateLens](#uistatelens)
- [visStateLens](#visstatelens)
## keplerGlReducer
Kepler.gl reducer to be mounted to your store. You can mount `keplerGlReducer` at property `keplerGl`, if you choose
to mount it at another address e.g. `foo` you will need to specify it when you mount `KeplerGl` component in your app with `getState: state => state.foo`
**Examples**
```javascript
import keplerGlReducer from '@kepler.gl/reducers';
import {createStore, combineReducers, applyMiddleware, compose} from 'redux';
import {taskMiddleware} from 'react-palm/tasks';
const initialState = {};
const reducers = combineReducers({
// <-- mount kepler.gl reducer in your app
keplerGl: keplerGlReducer,
// Your other reducers here
app: appReducer
});
// using createStore
export default createStore(reducer, initialState, applyMiddleware(taskMiddleware));
```
### keplerGlReducer.initialState
Return a reducer that initiated with custom initial state.
The parameter should be an object mapping from `subreducer` name to custom subreducer state,
which will be shallow **merged** with default initial state.
Default subreducer state:
- [`visState`][19]
- [`mapState`][20]
- [`mapStyle`][21]
- [`uiState`][22]
**Parameters**
- `iniSt` **[Object][23]** custom state to be merged with default initial state
**Examples**
```javascript
const myKeplerGlReducer = keplerGlReducer
.initialState({
uiState: {readOnly: true}
});
```
### keplerGlReducer.plugin
Returns a kepler.gl reducer that will also pass each action through additional reducers spiecified.
The parameter should be either a reducer map or a reducer function.
The state passed into the additional action handler is the instance state.
It will include all the subreducers `visState`, `uiState`, `mapState` and `mapStyle`.
`.plugin` is only meant to be called once when mounting the keplerGlReducer to the store.
**Note** This is an advanced option to give you more freedom to modify the internal state of the kepler.gl instance.
You should only use this to adding additional actions instead of replacing default actions.
**Parameters**
- `customReducer` **([Object][23] \| [Function][24])** A reducer map or a reducer
**Examples**
```javascript
const myKeplerGlReducer = keplerGlReducer
.plugin({
// 1. as reducer map
HIDE_AND_SHOW_SIDE_PANEL: (state, action) => ({
...state,
uiState: {
...state.uiState,
readOnly: !state.uiState.readOnly
}
})
})
.plugin(handleActions({
// 2. as reducer
'HIDE_MAP_CONTROLS': (state, action) => ({
...state,
uiState: {
...state.uiState,
mapControls: hiddenMapControl
}
})
}, {}));
```
## mapStateLens
Connect subreducer `mapState`, used with `injectComponents`. Learn more at
[Replace UI Component][25]
**Parameters**
- `reduxState` **any**
## mapStyleLens
Connect subreducer `mapStyle`, used with `injectComponents`. Learn more at
[Replace UI Component][25]
**Parameters**
- `reduxState` **any**
## providerStateLens
Connect subreducer `providerState`, used with `injectComponents`. Learn more at
[Replace UI Component][25]
**Parameters**
- `reduxState` **any**
## uiStateLens
Connect subreducer `uiState`, used with `injectComponents`. Learn more at
[Replace UI Component][25]
**Parameters**
- `reduxState` **any**
## visStateLens
Connect subreducer `visState`, used with `injectComponents`. Learn more at
[Replace UI Component][25]
**Parameters**
- `reduxState` **any**
[1]: #keplerglreducer
[2]: #examples
[3]: #keplerglreducerinitialstate
[4]: #parameters
[5]: #examples-1
[6]: #keplerglreducerplugin
[7]: #parameters-1
[8]: #examples-2
[9]: #mapstatelens
[10]: #parameters-2
[11]: #mapstylelens
[12]: #parameters-3
[13]: #providerstatelens
[14]: #parameters-4
[15]: #uistatelens
[16]: #parameters-5
[17]: #visstatelens
[18]: #parameters-6
[19]: ./vis-state.md#INITIAL_VIS_STATE
[20]: ./map-state.md#INITIAL_MAP_STATE
[21]: ./map-style.md#INITIAL_MAP_STYLE
[22]: ./ui-state.md#INITIAL_UI_STATE
[23]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object
[24]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function
[25]: ../advanced-usages/replace-ui-component.md#pass-custom-component-props
================================================
FILE: docs/api-reference/reducers/ui-state.md
================================================
### Table of Contents
- [uiStateUpdaters](#uistateupdaters)
- [addNotificationUpdater](#addnotificationupdater)
- [cleanupExportImage](#cleanupexportimage)
- [DEFAULT\_EXPORT\_DATA](#default_export_data)
- [Properties](#properties)
- [DEFAULT\_EXPORT\_IMAGE](#default_export_image)
- [Properties](#properties-1)
- [DEFAULT\_MAP\_CONTROLS\_FEATURES](#default_map_controls_features)
- [Properties](#properties-2)
- [hideExportDropdownUpdater](#hideexportdropdownupdater)
- [INITIAL\_UI\_STATE](#initial_ui_state)
- [Properties](#properties-3)
- [loadFilesErrUpdater](#loadfileserrupdater)
- [loadFilesUpdater](#loadfilesupdater)
- [openDeleteModalUpdater](#opendeletemodalupdater)
- [removeNotificationUpdater](#removenotificationupdater)
- [setExportDataTypeUpdater](#setexportdatatypeupdater)
- [setExportDataUpdater](#setexportdataupdater)
- [setExportFilteredUpdater](#setexportfilteredupdater)
- [setExportImageDataUri](#setexportimagedatauri)
- [setExportImageSetting](#setexportimagesetting)
- [setExportSelectedDatasetUpdater](#setexportselecteddatasetupdater)
- [showExportDropdownUpdater](#showexportdropdownupdater)
- [startExportingImage](#startexportingimage)
- [toggleMapControlUpdater](#togglemapcontrolupdater)
- [toggleModalUpdater](#togglemodalupdater)
- [toggleSidePanelUpdater](#togglesidepanelupdater)
- [toggleSplitMapUpdater](#togglesplitmapupdater)
- [DEFAULT\_EXPORT\_HTML](#default_export_html)
- [Properties](#properties-4)
- [setUserMapboxAccessTokenUpdater](#setusermapboxaccesstokenupdater)
## uiStateUpdaters
Updaters for `uiState` reducer. Can be used in your root reducer to directly modify kepler.gl's state.
Read more about [Using updaters][53]
**Examples**
```javascript
import keplerGlReducer, {uiStateUpdaters} from '@kepler.gl/reducers';
// Root Reducer
const reducers = combineReducers({
keplerGl: keplerGlReducer,
app: appReducer
});
const composedReducer = (state, action) => {
switch (action.type) {
// click button to close side panel
case 'CLICK_BUTTON':
return {
...state,
keplerGl: {
...state.keplerGl,
foo: {
...state.keplerGl.foo,
uiState: uiStateUpdaters.toggleSidePanelUpdater(
uiState, {payload: null}
)
}
}
};
}
return reducers(state, action);
};
export default composedReducer;
```
### addNotificationUpdater
Add a notification to be displayed.
Existing notification is going to be updated in case of matching ids.
- **Action**: [`addNotification`][54]
**Parameters**
- `state` **[Object][55]** `uiState`
- `action` **[Object][55]**
- `action.payload` **[Object][55]**
Returns **[Object][55]** nextState
### cleanupExportImage
Delete cached export image
- **Action**: [`cleanupExportImage`][56]
**Parameters**
- `state` **[Object][55]** `uiState`
Returns **[Object][55]** nextState
### DEFAULT_EXPORT_DATA
Default initial `exportData` settings
Type: [Object][55]
#### Properties
- `selectedDataset` **[string][57]** Default: `''`,
- `dataType` **[string][57]** Default: `'csv'`,
- `filtered` **[boolean][58]** Default: `true`,
- `config` **[boolean][58]** deprecated
- `data` **[boolean][58]** used in modal config export. Default: `false`
### DEFAULT_EXPORT_IMAGE
Default image export config
Type: [Object][55]
#### Properties
- `ratio` **[string][57]** Default: `'SCREEN'`,
- `resolution` **[string][57]** Default: `'ONE_X'`,
- `legend` **[boolean][58]** Default: `false`,
- `imageDataUri` **[string][57]** Default: `''`,
- `exporting` **[boolean][58]** Default: `false`
- `error` **[boolean][58]** Default: `false`
### DEFAULT_MAP_CONTROLS_FEATURES
A list of map control visibility and whether is it active.
Type: [Object][55]
#### Properties
- `visibleLayers` **[Object][55]** Default: `{show: true, active: false}`
- `mapLegend` **[Object][55]** Default: `{show: true, active: false}`
- `toggle3d` **[Object][55]** Default: `{show: true}`
- `splitMap` **[Object][55]** Default: `{show: true}`
### hideExportDropdownUpdater
Hide side panel header dropdown, activated by clicking the share link on top of the side panel
- **Action**: [`hideExportDropdown`][59]
**Parameters**
- `state` **[Object][55]** `uiState`
Returns **[Object][55]** nextState
### INITIAL_UI_STATE
Default initial `uiState`
Type: [Object][55]
#### Properties
- `readOnly` **[boolean][58]** Default: `false`
- `activeSidePanel` **[string][57]** Default: `'layer'`
- `currentModal` **([string][57] | null)** Default: `'addData'`
- `datasetKeyToRemove` **([string][57] | null)** Default: `null`
- `visibleDropdown` **([string][57] | null)** Default: `null`
- `exportImage` **[Object][55]** Default: [`DEFAULT_EXPORT_IMAGE`][9]
- `exportData` **[Object][55]** Default: [`DEFAULT_EXPORT_DATA`][7]
- `mapControls` **[Object][55]** Default: [`DEFAULT_MAP_CONTROLS`][60]
- `activeMapIndex` **[number][61]** defines which map the user clicked on. Default: 0
### loadFilesErrUpdater
Handles load file error and set fileLoading property to false
- **Action**: [`loadFilesErr`][62]
**Parameters**
- `state`
- `error` **[Object][55]**
- `error.error`
Returns **[Object][55]** nextState
### loadFilesUpdater
Fired when file loading begin
- **Action**: [`loadFiles`][63]
**Parameters**
- `state` **[Object][55]** `uiState`
Returns **[Object][55]** nextState
### openDeleteModalUpdater
Toggle active map control panel
- **Action**: [`openDeleteModal`][64]
**Parameters**
- `state` **[Object][55]** `uiState`
- `action` **[Object][55]**
- `action.payload` **[string][57]** dataset id
Returns **[Object][55]** nextState
### removeNotificationUpdater
Remove a notification
- **Action**: [`removeNotification`][65]
**Parameters**
- `state` **[Object][55]** `uiState`
- `action` **[Object][55]**
- `action.payload` **[String][57]** id of the notification to be removed
Returns **[Object][55]** nextState
### setExportDataTypeUpdater
Set data format for exporting data
- **Action**: [`setExportDataType`][66]
**Parameters**
- `state` **[Object][55]** `uiState`
- `action` **[Object][55]**
- `action.payload` **[string][57]** one of `'text/csv'`
Returns **[Object][55]** nextState
### setExportDataUpdater
Whether to including data in map config, toggle between `true` or `false`
- **Action**: [`setExportData`][67]
**Parameters**
- `state` **[Object][55]** `uiState`
Returns **[Object][55]** nextState
### setExportFilteredUpdater
Whether to export filtered data, `true` or `false`
- **Action**: [`setExportFiltered`][68]
**Parameters**
- `state` **[Object][55]** `uiState`
- `action` **[Object][55]**
- `action.payload` **[boolean][58]**
Returns **[Object][55]** nextState
### setExportImageDataUri
Set `exportImage.setExportImageDataUri` to a image dataUri
- **Action**: [`setExportImageDataUri`][69]
**Parameters**
- `state` **[Object][55]** `uiState`
- `action` **[Object][55]**
- `action.payload` **[string][57]** export image data uri
Returns **[Object][55]** nextState
### setExportImageSetting
Set `exportImage.legend` to `true` or `false`
- **Action**: [`setExportImageSetting`][70]
**Parameters**
- `state` **[Object][55]** `uiState`
- `$1` **[Object][55]**
- `$1.payload`
Returns **[Object][55]** nextState
### setExportSelectedDatasetUpdater
Set selected dataset for export
- **Action**: [`setExportSelectedDataset`][71]
**Parameters**
- `state` **[Object][55]** `uiState`
- `action` **[Object][55]**
- `action.payload` **[string][57]** dataset id
Returns **[Object][55]** nextState
### showExportDropdownUpdater
Hide and show side panel header dropdown, activated by clicking the share link on top of the side panel
- **Action**: [`showExportDropdown`][72]
**Parameters**
- `state` **[Object][55]** `uiState`
- `action` **[Object][55]**
- `action.payload` **[string][57]** id of the dropdown
Returns **[Object][55]** nextState
### startExportingImage
Set `exportImage.exporting` to `true`
- **Action**: [`startExportingImage`][73]
**Parameters**
- `state` **[Object][55]** `uiState`
Returns **[Object][55]** nextState
### toggleMapControlUpdater
Toggle active map control panel
- **Action**: [`toggleMapControl`][74]
**Parameters**
- `state` **[Object][55]** `uiState`
- `action` **[Object][55]** action
- `action.payload` **[string][57]** map control panel id, one of the keys of: [`DEFAULT_MAP_CONTROLS`][60]
- `action.payload.panelId`
- `action.payload.index` (optional, default `0`)
Returns **[Object][55]** nextState
### toggleModalUpdater
Show and hide modal dialog
- **Action**: [`toggleModal`][75]
**Parameters**
- `state` **[Object][55]** `uiState`
- `action` **[Object][55]**
- `action.payload` **([string][57] | null)** id of modal to be shown, null to hide modals. One of:- [`DATA_TABLE_ID`][76]
- [`DELETE_DATA_ID`][77]
- [`ADD_DATA_ID`][78]
- [`EXPORT_IMAGE_ID`][79]
- [`EXPORT_DATA_ID`][80]
- [`ADD_MAP_STYLE_ID`][81]
Returns **[Object][55]** nextState
### toggleSidePanelUpdater
Toggle active side panel
- **Action**: [`toggleSidePanel`][82]
**Parameters**
- `state` **[Object][55]** `uiState`
- `action` **[Object][55]**
- `action.payload` **([string][57] | null)** id of side panel to be shown, one of `layer`, `filter`, `interaction`, `map`. close side panel if `null`
Returns **[Object][55]** nextState
### toggleSplitMapUpdater
Handles toggle map split and reset all map control index to 0
- **Action**: [`toggleSplitMap`][83]
**Parameters**
- `state`
Returns **[Object][55]** nextState
## DEFAULT_EXPORT_HTML
Type: [Object][55]
### Properties
- `exportMapboxAccessToken` **[string][57]** Default: null, this is used when we provide a default mapbox token for users to take advantage of
- `userMapboxToken` **[string][57]** Default: '', mapbox token provided by user through input field
## setUserMapboxAccessTokenUpdater
whether to export a mapbox access to HTML single page
- **Action**: [`setUserMapboxAccessToken`][84]
**Parameters**
- `state` **[Object][55]** `uiState`
- `action` **[Object][55]**
- `action.payload` **[string][57]**
Returns **[Object][55]** nextState
[1]: #uistateupdaters
[2]: #examples
[3]: #addnotificationupdater
[4]: #parameters
[5]: #cleanupexportimage
[6]: #parameters-1
[7]: #default_export_data
[8]: #properties
[9]: #default_export_image
[10]: #properties-1
[11]: #default_map_controls_features
[12]: #properties-2
[13]: #hideexportdropdownupdater
[14]: #parameters-2
[15]: #initial_ui_state
[16]: #properties-3
[17]: #loadfileserrupdater
[18]: #parameters-3
[19]: #loadfilesupdater
[20]: #parameters-4
[21]: #opendeletemodalupdater
[22]: #parameters-5
[23]: #removenotificationupdater
[24]: #parameters-6
[25]: #setexportdatatypeupdater
[26]: #parameters-7
[27]: #setexportdataupdater
[28]: #parameters-8
[29]: #setexportfilteredupdater
[30]: #parameters-9
[31]: #setexportimagedatauri
[32]: #parameters-10
[33]: #setexportimagesetting
[34]: #parameters-11
[35]: #setexportselecteddatasetupdater
[36]: #parameters-12
[37]: #showexportdropdownupdater
[38]: #parameters-13
[39]: #startexportingimage
[40]: #parameters-14
[41]: #togglemapcontrolupdater
[42]: #parameters-15
[43]: #togglemodalupdater
[44]: #parameters-16
[45]: #togglesidepanelupdater
[46]: #parameters-17
[47]: #togglesplitmapupdater
[48]: #parameters-18
[49]: #default_export_html
[50]: #properties-4
[51]: #setusermapboxaccesstokenupdater
[52]: #parameters-19
[53]: ../advanced-usage/using-updaters.md
[54]: ../actions/actions.md#addnotification
[55]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object
[56]: ../actions/actions.md#cleanupexportimage
[57]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String
[58]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean
[59]: ../actions/actions.md#hideexportdropdown
[60]: #default_map_controls
[61]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number
[62]: ../actions/actions.md#loadfileserr
[63]: ../actions/actions.md#loadfiles
[64]: ../actions/actions.md#opendeletemodal
[65]: ../actions/actions.md#removenotification
[66]: ../actions/actions.md#setexportdatatype
[67]: ../actions/actions.md#setexportdata
[68]: ../actions/actions.md#setexportfiltered
[69]: ../actions/actions.md#setexportimagedatauri
[70]: ../actions/actions.md#setexportimagesetting
[71]: ../actions/actions.md#setexportselecteddataset
[72]: ../actions/actions.md#showexportdropdown
[73]: ../actions/actions.md#startexportingimage
[74]: ../actions/actions.md#togglemapcontrol
[75]: ../actions/actions.md#togglemodal
[76]: ../constants/default-settings.md#data_table_id
[77]: ../constants/default-settings.md#delete_data_id
[78]: ../constants/default-settings.md#add_data_id
[79]: ../constants/default-settings.md#export_image_id
[80]: ../constants/default-settings.md#export_data_id
[81]: ../constants/default-settings.md#add_map_style_id
[82]: ../actions/actions.md#togglesidepanel
[83]: ../actions/actions.md#togglesplitmap
[84]: ../actions/actions.md#setusermapboxaccesstoken
================================================
FILE: docs/api-reference/reducers/vis-state.md
================================================
### Table of Contents
- [visStateUpdaters](#visstateupdaters)
- [addFilterUpdater](#addfilterupdater)
- [addLayerUpdater](#addlayerupdater)
- [applyCPUFilterUpdater](#applycpufilterupdater)
- [enlargeFilterUpdater](#enlargefilterupdater)
- [INITIAL\_VIS\_STATE](#initial_vis_state)
- [Properties](#properties)
- [interactionConfigChangeUpdater](#interactionconfigchangeupdater)
- [layerClickUpdater](#layerclickupdater)
- [layerHoverUpdater](#layerhoverupdater)
- [layerTypeChangeUpdater](#layertypechangeupdater)
- [layerVisConfigChangeUpdater](#layervisconfigchangeupdater)
- [layerVisualChannelChangeUpdater](#layervisualchannelchangeupdater)
- [loadFilesErrUpdater](#loadfileserrupdater)
- [loadFilesUpdater](#loadfilesupdater)
- [mapClickUpdater](#mapclickupdater)
- [receiveMapConfigUpdater](#receivemapconfigupdater)
- [removeDatasetUpdater](#removedatasetupdater)
- [removeFilterUpdater](#removefilterupdater)
- [removeLayerUpdater](#removelayerupdater)
- [reorderLayerUpdater](#reorderlayerupdater)
- [resetMapConfigUpdater](#resetmapconfigupdater)
- [setFilterPlotUpdater](#setfilterplotupdater)
- [setFilterUpdater](#setfilterupdater)
- [setMapInfoUpdater](#setmapinfoupdater)
- [showDatasetTableUpdater](#showdatasettableupdater)
- [toggleFilterAnimationUpdater](#togglefilteranimationupdater)
- [toggleLayerForMapUpdater](#togglelayerformapupdater)
- [toggleSplitMapUpdater](#togglesplitmapupdater)
- [updateAnimationTimeUpdater](#updateanimationtimeupdater)
- [updateFilterAnimationSpeedUpdater](#updatefilteranimationspeedupdater)
- [updateLayerAnimationSpeedUpdater](#updatelayeranimationspeedupdater)
- [updateLayerBlendingUpdater](#updatelayerblendingupdater)
- [updateVisDataUpdater](#updatevisdataupdater)
## visStateUpdaters
Updaters for `visState` reducer. Can be used in your root reducer to directly modify kepler.gl's state.
Read more about [Using updaters][67]
**Examples**
```javascript
import keplerGlReducer, {visStateUpdaters} from '@kepler.gl/reducers';
// Root Reducer
const reducers = combineReducers({
keplerGl: keplerGlReducer,
app: appReducer
});
const composedReducer = (state, action) => {
switch (action.type) {
case 'CLICK_BUTTON':
return {
...state,
keplerGl: {
...state.keplerGl,
foo: {
...state.keplerGl.foo,
visState: visStateUpdaters.enlargeFilterUpdater(
state.keplerGl.foo.visState,
{idx: 0}
)
}
}
};
}
return reducers(state, action);
};
export default composedReducer;
```
### addFilterUpdater
Add a new filter
- **Action**: [`addFilter`][68]
**Parameters**
- `state` **[Object][69]** `visState`
- `action` **[Object][69]** action
- `action.dataId` **[string][70]** dataset `id` this new filter is associated with
Returns **[Object][69]** nextState
### addLayerUpdater
Add a new layer
- **Action**: [`addLayer`][71]
**Parameters**
- `state` **[Object][69]** `visState`
- `action` **[Object][69]** action
- `action.props` **[Object][69]** new layer props
Returns **[Object][69]** nextState
### applyCPUFilterUpdater
When select dataset for export, apply cpu filter to selected dataset
- **Action**: [`applyCPUFilter`][72]
**Parameters**
- `state` **[Object][69]** `visState`
- `action` **[Object][69]**
- `action.dataId` **[string][70]** dataset id
Returns **[Object][69]** nextState
### enlargeFilterUpdater
Show larger time filter at bottom for time playback (apply to time filter only)
- **Action**: [`enlargeFilter`][73]
**Parameters**
- `state` **[Object][69]** `visState`
- `action` **[Object][69]** action
- `action.idx` **[Number][74]** index of filter to enlarge
Returns **[Object][69]** nextState
### INITIAL_VIS_STATE
Default initial `visState`
Type: [Object][69]
#### Properties
- `layers` **[Array][75]**
- `layerData` **[Array][75]**
- `layerToBeMerged` **[Array][75]**
- `layerOrder` **[Array][75]**
- `filters` **[Array][75]**
- `filterToBeMerged` **[Array][75]**
- `datasets` **[Array][75]**
- `editingDataset` **[string][70]**
- `interactionConfig` **[Object][69]**
- `interactionToBeMerged` **[Object][69]**
- `layerBlending` **[string][70]**
- `hoverInfo` **[Object][69]**
- `clicked` **[Object][69]**
- `mousePos` **[Object][69]**
- `splitMaps` **[Array][75]** a list of objects of layer availabilities and visibilities for each map
- `layerClasses` **[Object][69]**
- `animationConfig` **[Object][69]**
- `editor` **[Object][69]**
### interactionConfigChangeUpdater
Update `interactionConfig`
- **Action**: [`interactionConfigChange`][76]
**Parameters**
- `state` **[Object][69]** `visState`
- `action` **[Object][69]** action
- `action.config` **[Object][69]** new config as key value map: `{tooltip: {enabled: true}}`
Returns **[Object][69]** nextState
### layerClickUpdater
Trigger layer click event with clicked object
- **Action**: [`onLayerClick`][77]
**Parameters**
- `state` **[Object][69]** `visState`
- `action` **[Object][69]** action
- `action.info` **[Object][69]** Object clicked, returned by deck.gl
Returns **[Object][69]** nextState
### layerHoverUpdater
Trigger layer hover event with hovered object
- **Action**: [`onLayerHover`][78]
**Parameters**
- `state` **[Object][69]** `visState`
- `action` **[Object][69]** action
- `action.info` **[Object][69]** Object hovered, returned by deck.gl
Returns **[Object][69]** nextState
### layerTypeChangeUpdater
Update layer type. Previews layer config will be copied if applicable.
- **Action**: [`layerTypeChange`][79]
**Parameters**
- `state` **[Object][69]** `visState`
- `action` **[Object][69]** action
- `action.oldLayer` **[Object][69]** layer to be updated
- `action.newType` **[string][70]** new type
Returns **[Object][69]** nextState
### layerVisConfigChangeUpdater
Update layer `visConfig`
- **Action**: [`layerVisConfigChange`][80]
**Parameters**
- `state` **[Object][69]** `visState`
- `action` **[Object][69]** action
- `action.oldLayer` **[Object][69]** layer to be updated
- `action.newVisConfig` **[Object][69]** new visConfig as a key value map: e.g. `{opacity: 0.8}`
Returns **[Object][69]** nextState
### layerVisualChannelChangeUpdater
Update layer visual channel
- **Action**: [`layerVisualChannelConfigChange`][81]
**Parameters**
- `state` **[Object][69]** `visState`
- `action` **[Object][69]** action
- `action.oldLayer` **[Object][69]** layer to be updated
- `action.newConfig` **[Object][69]** new visual channel config
- `action.channel` **[string][70]** channel to be updated
Returns **[Object][69]** nextState
### loadFilesErrUpdater
Trigger loading file error
- **Action**: [`loadFilesErr`][82]
**Parameters**
- `state` **[Object][69]** `visState`
- `action` **[Object][69]** action
- `action.error` **any**
Returns **[Object][69]** nextState
### loadFilesUpdater
Trigger file loading dispatch `addDataToMap` if succeed, or `loadFilesErr` if failed
- **Action**: [`loadFiles`][83]
**Parameters**
- `state` **[Object][69]** `visState`
- `action` **[Object][69]** action
- `action.files` **[Array][75]<[Object][69]>** array of fileblob
Returns **[Object][69]** nextState
### mapClickUpdater
Trigger map click event, unselect clicked object
- **Action**: [`onMapClick`][84]
**Parameters**
- `state` **[Object][69]** `visState`
Returns **[Object][69]** nextState
### receiveMapConfigUpdater
Propagate `visState` reducer with a new configuration. Current config will be override.
- **Action**: [`receiveMapConfig`][85]
**Parameters**
- `state` **[Object][69]** `visState`
- `action` **[Object][69]** action
- `action.payload` **[Object][69]** map config to be propagated
- `action.payload.config` **[Object][69]** map config to be propagated
- `action.payload.option` **[Object][69]** {keepExistingConfig: true | false}
- `action.payload.config` (optional, default `{}`)
- `action.payload.options` (optional, default `{}`)
Returns **[Object][69]** nextState
### removeDatasetUpdater
Remove a dataset and all layers, filters, tooltip configs that based on it
- **Action**: [`removeDataset`][86]
**Parameters**
- `state` **[Object][69]** `visState`
- `action` **[Object][69]** action
- `action.key` **[string][70]** dataset id
Returns **[Object][69]** nextState
### removeFilterUpdater
Remove a filter
- **Action**: [`removeFilter`][87]
**Parameters**
- `state` **[Object][69]** `visState`
- `action` **[Object][69]** action
- `action.idx` **[Number][74]** index of filter to b e removed
Returns **[Object][69]** nextState
### removeLayerUpdater
remove layer
- **Action**: [`removeLayer`][88]
**Parameters**
- `state` **[Object][69]** `visState`
- `action` **[Object][69]** action
- `action.idx` **[Number][74]** index of layer to b e removed
Returns **[Object][69]** nextState
### reorderLayerUpdater
Reorder layer
- **Action**: [`reorderLayer`][89]
**Parameters**
- `state` **[Object][69]** `visState`
- `action` **[Object][69]** action
- `action.order` **[Array][75]<[Number][74]>** an array of layer indexes
Returns **[Object][69]** nextState
### resetMapConfigUpdater
reset visState to initial State
- **Action**: [`resetMapConfig`][90]
**Parameters**
- `state` **[Object][69]** `visState`
Returns **[Object][69]** nextState
### setFilterPlotUpdater
Set the property of a filter plot
- **Action**: [`setFilterPlot`][91]
**Parameters**
- `state` **[Object][69]** `visState`
- `action` **[Object][69]** action
- `action.idx` **[Number][74]**
- `action.newProp` **[Object][69]** key value mapping of new prop `{yAxis: 'histogram'}`
Returns **[Object][69]** nextState
### setFilterUpdater
Update filter property
- **Action**: [`setFilter`][92]
**Parameters**
- `state` **[Object][69]** `visState`
- `action` **[Object][69]** action
- `action.idx` **[Number][74]** `idx` of filter to be updated
- `action.prop` **[string][70]** `prop` of filter, e,g, `dataId`, `name`, `value`
- `action.value` **any** new value
- `datasetId` **[string][70]** used when updating a prop (dataId, name) that can be linked to multiple datasets
Returns **[Object][69]** nextState
### setMapInfoUpdater
User input to update the info of the map
- **Action**: [`setMapInfo`][93]
**Parameters**
- `state` **[Object][69]** `visState`
- `action` **[Object][69]** action
- `action.info` **[Object][69]** {title: 'hello'}
Returns **[Object][69]** nextState
### showDatasetTableUpdater
Display dataset table in a modal
- **Action**: [`showDatasetTable`][94]
**Parameters**
- `state` **[Object][69]** `visState`
- `action` **[Object][69]** action
- `action.dataId` **[string][70]** dataset id to show in table
Returns **[Object][69]** nextState
### toggleFilterAnimationUpdater
Start and end filter animation
- **Action**: [`toggleFilterAnimation`][95]
**Parameters**
- `state` **[Object][69]** `visState`
- `action` **[Object][69]** action
- `action.idx` **[Number][74]** idx of filter
Returns **[Object][69]** nextState
### toggleLayerForMapUpdater
Toggle visibility of a layer in a split map
- **Action**: [`toggleLayerForMap`][96]
**Parameters**
- `state` **[Object][69]**
- `action` **[Object][69]**
- `action.mapIndex` **[Number][74]** index of the split map
- `action.layerId` **[string][70]** id of the layer
Returns **[Object][69]** nextState
### toggleSplitMapUpdater
Toggle visibility of a layer for a split map
- **Action**: [`toggleSplitMap`][97]
**Parameters**
- `state` **[Object][69]** `visState`
- `action` **[Object][69]** action
- `action.payload` **([Number][74] \| [undefined][98])** index of the split map
Returns **[Object][69]** nextState
### updateAnimationTimeUpdater
Reset animation config current time to a specified value
- **Action**: [`updateAnimationTime`][99]
**Parameters**
- `state` **[Object][69]** `visState`
- `action` **[Object][69]** action
- `action.value` **[Number][74]** the value current time will be set to
Returns **[Object][69]** nextState
### updateFilterAnimationSpeedUpdater
Change filter animation speed
- **Action**: [`updateFilterAnimationSpeed`][100]
**Parameters**
- `state` **[Object][69]** `visState`
- `action` **[Object][69]** action
- `action.idx` **[Number][74]** `idx` of filter
- `action.speed` **[Number][74]** `speed` to change it to. `speed` is a multiplier
Returns **[Object][69]** nextState
### updateLayerAnimationSpeedUpdater
Update animation speed with the vertical speed slider
- **Action**: [`updateLayerAnimationSpeed`][101]
**Parameters**
- `state` **[Object][69]** `visState`
- `action` **[Object][69]** action
- `action.speed` **[Number][74]** the updated speed of the animation
Returns **[Object][69]** nextState
### updateLayerBlendingUpdater
update layer blending mode
- **Action**: [`updateLayerBlending`][102]
**Parameters**
- `state` **[Object][69]** `visState`
- `action` **[Object][69]** action
- `action.mode` **[string][70]** one of `additive`, `normal` and `subtractive`
Returns **[Object][69]** nextState
### updateVisDataUpdater
Add new dataset to `visState`, with option to load a map config along with the datasets
- **Action**: [`updateVisData`][103]
**Parameters**
- `state` **[Object][69]** `visState`
- `action` **[Object][69]** action
- `action.datasets` **([Array][75]<[Object][69]> | [Object][69])** **\*required** datasets can be a dataset or an array of datasets
Each dataset object needs to have `info` and `data` property.
- `action.datasets.info` **[Object][69]** \-info of a dataset
- `action.datasets.info.id` **[string][70]** id of this dataset. If config is defined, `id` should matches the `dataId` in config.
- `action.datasets.info.label` **[string][70]** A display name of this dataset
- `action.datasets.data` **[Object][69]** **\*required** The data object, in a tabular format with 2 properties `fields` and `rows`
- `action.datasets.data.fields` **[Array][75]<[Object][69]>** **\*required** Array of fields,
- `action.datasets.data.fields.name` **[string][70]** **\*required** Name of the field,
- `action.datasets.data.rows` **[Array][75]<[Array][75]>** **\*required** Array of rows, in a tabular format with `fields` and `rows`
- `action.options` **[Object][69]** option object `{centerMap: true, keepExistingConfig: false}`
- `action.config` **[Object][69]** map config
Returns **[Object][69]** nextState
[1]: #visstateupdaters
[2]: #examples
[3]: #addfilterupdater
[4]: #parameters
[5]: #addlayerupdater
[6]: #parameters-1
[7]: #applycpufilterupdater
[8]: #parameters-2
[9]: #enlargefilterupdater
[10]: #parameters-3
[11]: #initial_vis_state
[12]: #properties
[13]: #interactionconfigchangeupdater
[14]: #parameters-4
[15]: #layerclickupdater
[16]: #parameters-5
[17]: #layerhoverupdater
[18]: #parameters-6
[19]: #layertypechangeupdater
[20]: #parameters-7
[21]: #layervisconfigchangeupdater
[22]: #parameters-8
[23]: #layervisualchannelchangeupdater
[24]: #parameters-9
[25]: #loadfileserrupdater
[26]: #parameters-10
[27]: #loadfilesupdater
[28]: #parameters-11
[29]: #mapclickupdater
[30]: #parameters-12
[31]: #receivemapconfigupdater
[32]: #parameters-13
[33]: #removedatasetupdater
[34]: #parameters-14
[35]: #removefilterupdater
[36]: #parameters-15
[37]: #removelayerupdater
[38]: #parameters-16
[39]: #reorderlayerupdater
[40]: #parameters-17
[41]: #resetmapconfigupdater
[42]: #parameters-18
[43]: #setfilterplotupdater
[44]: #parameters-19
[45]: #setfilterupdater
[46]: #parameters-20
[47]: #setmapinfoupdater
[48]: #parameters-21
[49]: #showdatasettableupdater
[50]: #parameters-22
[51]: #togglefilteranimationupdater
[52]: #parameters-23
[53]: #togglelayerformapupdater
[54]: #parameters-24
[55]: #togglesplitmapupdater
[56]: #parameters-25
[57]: #updateanimationtimeupdater
[58]: #parameters-26
[59]: #updatefilteranimationspeedupdater
[60]: #parameters-27
[61]: #updatelayeranimationspeedupdater
[62]: #parameters-28
[63]: #updatelayerblendingupdater
[64]: #parameters-29
[65]: #updatevisdataupdater
[66]: #parameters-30
[67]: ../advanced-usage/using-updaters.md
[68]: ../actions/actions.md#addfilter
[69]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object
[70]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String
[71]: ../actions/actions.md#addlayer
[72]: ../actions/actions.md#applycpufilter
[73]: ../actions/actions.md#enlargefilter
[74]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number
[75]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array
[76]: ../actions/actions.md#interactionconfigchange
[77]: ../actions/actions.md#onlayerclick
[78]: ../actions/actions.md#onlayerhover
[79]: ../actions/actions.md#layertypechange
[80]: ../actions/actions.md#layervisconfigchange
[81]: ../actions/actions.md#layervisualchannelconfigchange
[82]: ../actions/actions.md#loadfileserr
[83]: ../actions/actions.md#loadfiles
[84]: ../actions/actions.md#onmapclick
[85]: ../actions/actions.md#receivemapconfig
[86]: ../actions/actions.md#removedataset
[87]: ../actions/actions.md#removefilter
[88]: ../actions/actions.md#removelayer
[89]: ../actions/actions.md#reorderlayer
[90]: ../actions/actions.md#resetmapconfig
[91]: ../actions/actions.md#setfilterplot
[92]: ../actions/actions.md#setfilter
[93]: ../actions/actions.md#setmapinfo
[94]: ../actions/actions.md#showdatasettable
[95]: ../actions/actions.md#togglefilteranimation
[96]: ../actions/actions.md#togglelayerformap
[97]: ../actions/actions.md#togglesplitmap
[98]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined
[99]: ../actions/actions.md#updateanimationtime
[100]: ../actions/actions.md#updatefilteranimationspeed
[101]: ../actions/actions.md#updatelayeranimationspeed
[102]: ../actions/actions.md#updatelayerblending
[103]: ../actions/actions.md#updatevisdata
================================================
FILE: docs/api-reference/schemas/README.md
================================================
# Schemas
...Coming Soon
================================================
FILE: docs/keplergl-jupyter/README.md
================================================
# Jupyter Notebook
## kepler.gl for Jupyter User Guide
### Table of contents
- [Install](#install)
- [1. Load kepler.gl Map](#1-load-keplergl-map)
- [`KeplerGl()`](#keplergl)
- [2. Add Data](#2-add-data)
- [`.add_data()`](#add_data)
- [`.data`](#data)
- [3. Data Format](#3-data-format)
- [`CSV`](#csv)
- [`GeoJSON`](#geojson)
- [`DataFrame`](#dataframe)
- [`GeoDataFrame`](#geodataframe)
- [`WKT`](#wkt)
- [4. Customize the map](#4-customize-the-map)
- [5. Save and load config](#5-save-and-load-config)
- [`.config`](#config)
- [6. Match config with data](#6-match-config-with-data)
- [7. Save Map](#7-save-map)
- [`.save_to_html()`](#save_to_html)
- [`._repr_html_()`](#_repr_html_)
- [Demo Notebooks](#demo-notebooks)
- [FAQ & Troubleshoot](#faq--troubleshoot)
## Install
### Prerequisites
- Python >= 2
- ipywidgets >= 7.0.0
To install use pip:
```bash
$ pip install keplergl
```
If you're on Mac, used `pip install`, and you're running Notebook 5.3 and above, you don't need to run the following:
```bash
$ jupyter nbextension install --py --sys-prefix keplergl # can be skipped for notebook 5.3 and above
$ jupyter nbextension enable --py --sys-prefix keplergl # can be skipped for notebook 5.3 and above
```
If you are using Jupyter Lab, you will also need to install the JupyterLab extension. This require [node](https://nodejs.org/en/download/package-manager/#macos) `> 10.15.0`
If you use [Homebrew](https://brew.sh/) on Mac:
```bash
$ brew install node@10
```
Then install jupyter labextension.
```bash
$ jupyter labextension install @jupyter-widgets/jupyterlab-manager keplergl-jupyter
```
### Prerequisites for JupyterLab
- Node > 10.15.0
- Python 3
- JupyterLab>=1.0.0
## 1. Load keplergl map
### `KeplerGl()`
- Input:
- __`height`__ _optional_ default: `400`
Height of the map display
- __`data`__ `dict` _optional_
Datasets as a dictionary, key is the name of the dataset. Read more on [Accepted data format][data_format]
- __`use_arrow`__ `bool` _optional_ default: `False`
Allow load and render data faster using GeoArrow
- __`config`__ `dict` _optional_
Map config as a dictionary. The `dataId` in the layer and filter settings should match the `name` of the dataset they are created under
- __`show_docs`__ `bool` _optional_
By default, the User Guide URL () will be printed when a map is created. To hide the User Guide URL, set `show_docs=False`.
The following command will load kepler.gl widget below a cell.
**The map object created here is `map_1` it will be used throughout the code example in this doc.**
```python
# Load an empty map
from keplergl import KeplerGl
map_1 = KeplerGl()
map_1
```
![empty map][empty_map]
You can also create the map and pass in the data or data and config at the same time. Follow the instruction to [match config with data][match-config-w-data]
```python
# Load a map with data and config and height
from keplergl import KeplerGl
map_2 = KeplerGl(height=400, data={"data_1": my_df}, config=config)
map_2
```
![Load map with data and config][load_map_w_data]
## 2. Add Data
### `.add_data()`
- Inputs
- __`data`__ _required_ CSV, GeoJSON or DataFrame. Read more on [Accepted data format][data_format]
- __`name`__ _required_ Name of the data entry.
- __`use_arrow`__ _optional_ Allow load and render data faster using GeoArrow.
`name` of the dataset will be the saved to the `dataId` property of each `layer`, `filter` and `interactionConfig` in the config.
kepler.gl expected the data to be **CSV**, **GeoJSON**, **DataFrame** or **GeoDataFrame**. You can call __`add_data`__ multiple times to add multiple datasets to kepler.gl
```python
# DataFrame
df = pd.read_csv('hex-data.csv')
map_1.add_data(data=df, name='data_1')
# CSV
with open('csv-data.csv', 'r') as f:
csvData = f.read()
map_1.add_data(data=csvData, name='data_2')
# GeoJSON as string
with open('sf_zip_geo.json', 'r') as f:
geojson = f.read()
map_1.add_data(data=geojson, name='geojson')
```
![Add data to map][map_add_data]
### `.data`
Print the current data added to the map. As a `Dict`
```python
map_1.data
# {'data_1': 'hex_id,value\n89283082c2fffff,64\n8928308288fffff,73\n89283082c07ffff,65\n89283082817ffff,74\n89283082c3bffff,66\n8...`,
# 'data_3': 'location, lat, lng, name\n..',
# 'data_3': '{"type": "FeatureCollecti...'}
```
## 3. Data Format
kepler.gl supports **CSV**, **GeoJSON**, Pandas **DataFrame** or GeoPandas **GeoDataFrame**.
### `CSV`
You can create a `CSV` string by reading from a CSV file.
```python
with open('csv-data.csv', 'r') as f:
csvData = f.read()
# csvData = "hex_id,value\n89283082c2fffff,64\n8928308288fffff,73\n89283082c07ffff,65\n89283082817ffff,74\n89283082c3bffff,66\n8..."
map_1.add_data(data=csvData, name='data_2')
```
### `GeoJSON`
According to [GeoJSON Specification (RFC 7946)][geojson]: GeoJSON is a format for encoding a variety of geographic data structures. A GeoJSON object may represent a region of space (a `Geometry`), a spatially bounded entity (a Feature), or a list of Features (a `FeatureCollection`). GeoJSON supports the following geometry types: `Point`, `LineString`, `Polygon`, `MultiPoint`, `MultiLineString`, `MultiPolygon`, and `GeometryCollection`. Features in GeoJSON contain a Geometry object and additional properties, and a FeatureCollection contains a list of Features.
kepler.gl supports all the GeoJSON types above excepts `GeometryCollection`. You can pass in either a single [`Feature`][features] or a [`FeatureCollection`][feature_collection]. You can format the `GeoJSON` either as a `string` or a `dict` type
```python
feature = {
"type": "Feature",
"properties": {"name": "Coors Field"},
"geometry": {"type": "Point", "coordinates": [-104.99404, 39.75621]}
}
featureCollection = {
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"geometry": {"type": "Point", "coordinates": [102.0, 0.5]},
"properties": {"prop0": "value0"}
}]
}
map_1.add_data(data=feature, name="feature")
map_1.add_data(data=featureCollection, name="feature_collection")
```
Geometries (Polygons, LindStrings) can be embedded into CSV or DataFrame with a [`GeoJSON`][geojson] Json string. Use the `geometry` property of a [`Feature`][features], which includes `type` and `coordinates`.
```python
# GeoJson Feature geometry
geometryString = {
'type': 'Polygon',
'coordinates': [[[-74.158491,40.835947],[-74.148473,40.834522],[-74.142598,40.833128],[-74.151923,40.832074],[-74.158491,40.835947]]]
}
# create json string
json_str = json.dumps(geometryString)
# create data frame
df_with_geometry = pd.DataFrame({
'id': [1],
'geometry_string': [json_str]
})
# add to map
map_1.add_data(df_with_geometry, "df_with_geometry")
```
### `DataFrame`
kepler.gl accepts [pandas.DataFrame][data_frame]
```python
df = pd.DataFrame(
{'City': ['Buenos Aires', 'Brasilia', 'Santiago', 'Bogota', 'Caracas'],
'Latitude': [-34.58, -15.78, -33.45, 4.60, 10.48],
'Longitude': [-58.66, -47.91, -70.66, -74.08, -66.86]})
w1.add_data(data=df, name='cities')
```
### `GeoDataFrame`
kepler.gl accepts [geopandas.GeoDataFrame][geo_data_frame], it automatically converts the current `geometry` column from shapely to wkt string and re-projects geometries to latitude and longitude (EPSG:4326) if the active `geometry` column is in a different projection.
```python
url = 'http://eric.clst.org/assets/wiki/uploads/Stuff/gz_2010_us_040_00_500k.json'
country_gdf = geopandas.read_file(url)
w1.add_data(data=country_gdf, name="state")
```
![US state][geodataframe_map]
### `WKT`
You can embed geometries (Polygon, LineStrings etc) into CSV or DataFrame using [`WKT`][wkt]
```python
# WKT
wkt_str = 'POLYGON ((-74.158491 40.835947, -74.130031 40.819962, -74.148818 40.830916, -74.151923 40.832074, -74.158491 40.835947))'
df_w_wkt = pd.DataFrame({
'id': [1],
'wkt_string': [wkt_str]
})
map_1.add_data(df_w_wkt, "df_w_wkt")
```
## 4. Customize the map
Interact with kepler.gl and customize layers and filters. Map data and config will be stored locally to the widget state. To make sure the map state is saved, select `Widgets > Save Notebook Widget State`, before shutting down the kernel.
![Map interaction][map_interaction]
## 5. Save and load config
### `.config`
you can print your current map configuration at any time in the notebook
```python
map_1.config
## {u'config': {u'mapState': {u'bearing': 2.6192893401015205,
# u'dragRotate': True,
# u'isSplit': False,
# u'latitude': 37.76209132041332,
# u'longitude': -122.42590232651203,
```
When the map is final, you can copy this config and load it later to reproduce the same map. Follow the instruction to [match config with data][match-config-w-data].
#### Apply config to a map:
1. Directly apply config to the map.
```python
config = {
'version': 'v1',
'config': {
'mapState': {
'latitude': 37.76209132041332,
'longitude': -122.42590232651203,
'zoom': 12.32053899007826
}
...
}
},
map_1.add_data(data=df, name='data_1')
map_1.config = config
```
2. Load it when creating the map
```python
map_1 = KeplerGl(height=400, data={'data_1': my_df}, config=config)
```
If want to load the map next time with this saved config, the easiest way to do is to save the it to a file and use the magic command **%run** to load it w/o cluttering up your notebook.
```python
# Save map_1 config to a file
with open('hex_config.py', 'w') as f:
f.write('config = {}'.format(map_1.config))
# load the config
%run hex_config.py
```
## 6. Match config with data
All layers, filters and tooltips are associated with a specific dataset. Therefore the `data` and `config` in the map has to be able to match each other. The `name` of the dataset is assigned to:
- `dataId` of `layer.config`,
- `dataId` of `filter`
- key in `interactionConfig.tooltip.fieldToShow`.
![Connect data and config][connect_data_config]
You can use the same config on another dataset with the same name and schema.
## 7. Save Map
When you click in the map and change settings, config is saved to widget state. Closing the notebook and reopen it will reload current map. However, you need to manually select `Widget > Save Notebook Widget State` before shut downing the kernel to make sure it will be reloaded.
![Save Widget State][save_widget_state]
### `.save_to_html()`
- input
- **`data`**: _optional_ A data dictionary {"name": data}, if not provided, will use current map data
- **`config`**: _optional_ map config dictionary, if not provided, will use current map config
- **`file_name`**: _optional_ the html file name, default is `keplergl_map.html`
- **`read_only`**: _optional_ if `read_only` is `True`, hide side panel to disable map customization
You can export your current map as an interactive html file.
```python
# this will save current map
map_1.save_to_html(file_name='first_map.html')
# this will save map with provided data and config
map_1.save_to_html(data={'data_1': df}, config=config, file_name='first_map.html')
# this will save map with the interaction panel disabled
map_1.save_to_html(file_name='first_map.html', read_only=True)
```
### `._repr_html_()`
- input
- **`data`**: _optional_ A data dictionary {"name": data}, if not provided, will use current map data
- **`config`**: _optional_ map config dictionary, if not provided, will use current map config
- **`read_only`**: _optional_ if `read_only` is `True`, hide side panel to disable map customization
You can also directly serve the current map via a flask app. To do that return kepler’s map HTML representation. Here is an example on how to do that:
```python
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return map_1._repr_html_()
if __name__ == '__main__':
app.run(debug=True)
```
# Demo Notebooks
- [Load kepler.gl](https://github.com/keplergl/kepler.gl/blob/master/bindings/kepler.gl-jupyter/notebooks/Load%20kepler.gl.ipynb): Load kepler.gl widget, add data and config
- [Geometry as String](https://github.com/keplergl/kepler.gl/blob/master/bindings/kepler.gl-jupyter/notebooks/Geometry%20as%20String.ipynb): Embed Polygon geometries as `GeoJson` and `WKT` inside a `CSV`
- [GeoJSON](https://github.com/keplergl/kepler.gl/blob/master/bindings/kepler.gl-jupyter/notebooks/GeoJSON.ipynb): Load GeoJSON to kepler.gl
- [DataFrame](https://github.com/keplergl/kepler.gl/blob/master/bindings/kepler.gl-jupyter/notebooks/DataFrame.ipynb): Load DataFrame to kepler.gl
- [GeoDataFrame](https://github.com/keplergl/kepler.gl/blob/master/bindings/kepler.gl-jupyter/notebooks/GeoDataFrame.ipynb): Load GeoDataFrame to kepler.gl
# FAQ & Troubleshoot
#### 1. What about Microsoft Windows?
keplergl is currently only published to PyPI, and unfortunately I use a Mac. If you encounter errors installing it on windows, [this issue](https://github.com/keplergl/kepler.gl/issues/557) might shed some light. Follow this issue for [conda](https://github.com/keplergl/kepler.gl/issues/646) support.
#### 2. Install keplergl-jupyter on Jupyter Lab failed?
Make sure you are using node 8.15.0. and you have installed `@jupyter-widgets/jupyterlab-manager`. Depends on your JupyterLab version. You might need to install the specific version of [jupyterlab-manager](https://github.com/jupyter-widgets/ipywidgets/tree/master/packages/jupyterlab-manager). with `jupyter labextension install @jupyter-widgets/jupyterlab-manager@0.31`. When use it in Jupyter lab, keplergl is only supported in JupyterLab > 1.0 and Python 3.
Run `jupyter labextension install keplergl-jupyter --debug` and copy console output before creating an issue.
If you are running `install` and `uninstall` several times. You should run.
```
jupyter lab clean
jupyter lab build
```
#### 2.1 JavaScript heap out of memory when installing lab extension
If you see this error during install labextension
```bash
$ FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
```
run
```bash
$ export NODE_OPTIONS=--max-old-space-size=4096
```
#### 3. Is my lab extension successfully installed?
Run `jupyter labextension list` You should see below. (Version may vary)
```bash
JupyterLab v1.1.4
Known labextensions:
app dir: /Users/xxx/jupyter-python3/ENV3/share/jupyter/lab
@jupyter-widgets/jupyterlab-manager v1.0.2 enabled OK
keplergl-jupyter v0.1.0 enabled OK
```
#### 4. What's your python and node env
Python
```text
python==3.7.4
notebook==6.0.3
jupyterlab==2.1.2
ipywidgets==7.5.1
```
Node (Only for JupyterLab)
```text
node==8.15.0
yarn==1.7.0
```
[jupyter_widget]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_widget.png
[empty_map]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_empty_map.png
[geodataframe_map]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_geodataframe.png
[map_interaction]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_custom_map.gif
[load_map_w_data]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_widget.png
[map_add_data]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_add_data.png
[connect_data_config]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_connect_data_w_config.png
[save_widget_state]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_save_state.png
[wkt]: https://dev.mysql.com/doc/refman/5.7/en/gis-data-formats.html#gis-wkt-format
[geojson]: https://tools.ietf.org/html/rfc7946
[feature_collection]: https://tools.ietf.org/html/rfc7946#section-3.3
[features]: https://tools.ietf.org/html/rfc7946#section-3.2
[data_frame]: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html
[geo_data_frame]: https://geopandas.readthedocs.io/en/latest/data_structures.html#geodataframe
[match-config-w-data]: #6-match-config-with-data
[data_format]: #3-data-format
================================================
FILE: docs/release-notes.md
================================================
# What's New?
This page shows features that have landed to kepler.gl in major versions. For a complete list of changes to kepler.gl including each minor version, please [visit the full change log](../CHANGELOG.md).
## 3.2
_Released August 21st, 2025_
### Raster Tile Layer
The new [Raster Tile layer](/docs/user-guides/c-types-of-layers/n-raster-tile-layer.md) enables visualization of satellite and aerial imagery from raster PMTiles and Cloud-Optimized GeoTIFFs (via STAC). Use it to bring large imagery datasets into kepler.gl without dedicated tile infrastructure for raster PMTiles, or connect through a compatible raster tile server for COGs and elevation.
### WMS Layer
The new WMS layer adds support for rendering imagery and map tiles from OGC Web Map Service endpoints, allowing you to integrate enterprise or public WMS sources directly in kepler.gl.
### AI Assistant
- Generate idea buttons from the LLM to speed up workflows.
- More reliable local model connectivity (fix for Ollama connection issues).
- Configuration migrated to TypeScript for better npm consumption.
### More Bug Fixes and Improvements
- Fit-to-bounds: fix initial basemap and deck projections mismatch.
- Aggregation layers: fixes for custom color scales.
- Vector tiles: regression fixes for field extraction and setup flow.
- Image export: fixes when effects are enabled.
- Loading indicator: behavior and visibility improvements.
- DuckDB: fix importing files with spaces in column names.
For the complete list of commits, see the [full change log](../CHANGELOG.md).
## 3.1.1
_Released March 10th, 2025_
### DuckDB
The DuckDB integration has been updated in response to feedback and requests, speeding up workflows for projects with local data. Notable changes include:
- Users can now drag and drop files directly in kepler.gl to create a DuckDB table.
- The schema panel now always updates when running a query.
- Improved handling of DuckDB column types.

### Vector Tiles
The Vector Tile layer has received a number of optimizations, bug fixes, and quality-of-life improvements. Notable changes include:
- For older tilesets without fields in the metadata file, kepler.gl now attempts to retrieve fields from the tile data.
- Automatically center the map to the tileset bounds.
- Fix for UI freezes during initial Tileset setup.
### More Bug Fixes
A number of bug fixes have been deployed in response to community feedback. The most notable bug fixes are listed below, but you can view a full list of changes [in the full change log](../CHANGELOG.md).
- Fix for geocoder coordinates, allowing users to enter coordinates directly.
- Fix for icon layers at higher zoom levels—icons now remain the same size.
- Fix for a broken section of the Icon Layer UI.
- Ensure the RangeBrush updates when the slider range changes.
- Transform binary buffers to hex WKB when saving to JSON/HTML maps.
- Improved logic for changing layer types.
- Support arrow text labels from non-string vector sources.
- Export GeoArrow columns to CSV as GeoJSON.
- Restore support for string WKB data; save binary WKB as hex WKB.
- AI Assistant now sends messages to 127.0.0.1 instead of a remote Ollama URL.
- Fix for disappearing heatmaps when rendering black or duplicate colors.
- Fix for point column suggestions not working.
- Fix for crashes in GeoJSON and Trip layers when no data is present.
- Fix for the "Save Map" action when using the FSQ provider (overwrite logic).
- FSQ storage provider now prompts for login instead of auto-login after logout.
## 3.1
_Released January 29th, 2025_
### Vector Tiles
The new [Vector Tile layer](/docs/user-guides/c-types-of-layers/vector.md) allows the map to dynamically retrieve data based on the user's viewport and zoom level. This initial release supports both Mapbox Vector Tiles and PMTiles.
By leveraging the efficiency of vector tiles, users can visualize complex, large-scale datasets without compromising performance, making it easier to explore and analyze geospatial data.

### DuckDB Support & SQL Explorer
Leverage DuckDB directly within kepler.gl your geospatial projects with big data. Write and execute SQL queries to perform custom analyses, visualizing the results on your map.
DuckDB enables in-browser data processing, allowing you to work with large datasets without the need for external infrastructure.

### AI Assistant
Kepler’s AI assistant can edit the map, including filters, base map customization, and a variety of layer configurations. Accessible via text chat, voice chat, and screenshot. The assistant can also produce SQL from natural language, which can be passed to DuckDB.

### Base Map Updates: MapLibre + Mapbox
Mapbox and MapLibre base maps are now simultaneously supported.
### Color Scale Improvements
Custom color scale is now supported in categorial/ordinal fields, aggregate layers, and other layer components. In addition, custom breaks are now supported within the color scales.
### Value Formatting
Formatting for numeric values (e.g. 10,000 can be formatted 10k, $10,000.00, etc; .42 can be formatted as 42%).
### Animation Improvements
Includes various updates to the user interface for animation (for both time filters and the trip layer). You may also sync the layers (such as the trip layer) with filters, and conversely sync filters with the layer.
### Legend Improvements
The legend is now both movable and resizable, supports the editing of legend values, and offers a scale for radius scaling.
### Various Layer Improvements
A number of improvements to layers, including:
- Zoom to layer button lets users center their viewport on the layer’s data
- Point layer now supports geojson
- Arc layer supports creation from h3
- A vast number of other layer improvements
This release also includes a wide range of bug fixes and performance improvements, which can be viewed in the [full change log.](../CHANGELOG.md)
================================================
FILE: docs/spatial-analysis-tutorial/README.md
================================================
# Tutorial: Spatial Data Analysis using Kepler.gl AI Assistant
This tutorial will guide you through the process of using Kepler.gl AI Assistant to perform spatial data analysis.
The spatial data analysis tools are powered by [Geoda](https://geodacenter.github.io/geoda-lib/), which is a free and open source software tool that serves as an introduction to spatial data science for students and researchers. To make it easier for users to go through the spatial data analysis features, we will try to replicate the [Geoda workbook](https://geodacenter.github.io/documentation.html) using Kepler.gl AI Assistant.
## Table of Contents
#### [Get Started](./get-started.md)
#### [Spatial Data Wrangling - Basic Operations](./spatial-data-wragling.md)
#### [Spatial Data Wrangling - GIS Operations](./spatial-data-gis.md)
#### [Basic Mapping](./basic-mapping.md)
#### [Rate Mapping](./rate-mapping.md)
#### [Exploratory Data Analysis](./exploratory-data-analysis.md)
- [Univariate and Bivariate Analysis](./univariate-and-bivariate-analysis.md)
- [Multivariate Analysis](./multivariate-analysis.md)
#### [Contiguity-Based Spatial Weights](./contiguity-based-spatial-weights.md)
#### [Distance-Based Spatial Weights](./distance-based-spatial-weights.md)
#### [Global Spatial Autocorrelation](./global-spatial-autocorrelation.md)
- [Moran Scatter Plot](./moran-scatter-plot.md)
- Correlogram
- Bivariate, Differential and Empirical Bayes
#### [Local Spatial Autocorrelation](./local-spatial-autocorrelation.md)
- [LISA and Local Moran](./local-moran-i.md)
- Other Local Spatial Autorrelation
- Multivariate Local Spatial Autorrelation
- LISA for Discrete Variables
#### [Spatial Regression](./spatial-regression.md)
- [Ordinary Least Squares Regression](./ordinary-least-squares-regression.md)
- [Regression Diagnostics](./regression-diagnostics.md)
- [Spatial Lag Model](./spatial-lag-model.md)
- [Spatial Error Model](./spatial-error-model.md)
================================================
FILE: docs/spatial-analysis-tutorial/basic-mapping.md
================================================
# Basic Mapping
Original GeoDa lab by Luc Anselin: https://geodacenter.github.io/workbook/3a_mapping/lab3a.html
## Introduction
In this Chapter, we will explore a range of mapping and geovisualization options. We start with a review of common thematic map classifications. We next focus on different statistical maps, in particular maps that are designed to highight extreme values or outliers. We also illustrate maps for categorical variables (unique value maps), and their extension to multiple categories in the form of co-location maps. We close with a review of some special approaches to geovisualization, i.e., ~~conditional maps~~, the cartogram and map animation.
The main objective is to use the maps to interact with the data as part of the exploration process.
## Preliminaries
We will illustrate the various operations by means of the data set with demographic and socio-economic information for 55 New York City sub-boroughs.
- [nyc](https://geodacenter.github.io/data-and-lab/nyc/) socio-economic data for 55 New York City sub-boroughs: https://geodacenter.github.io/data-and-lab/data/nyc.geojson
## Thematic Maps – Overview
We start by loading the NYC sub-boroughs dataset:
```
Load the dataset https://geodacenter.github.io/data-and-lab/data/nyc.geojson
```
Common map classifications include the Quantile Map, Natural Breaks Map, and Equal Intervals Map. Specialized classifications that are designed to bring out extreme values include the Percentile Map, Box Map (with two options for the hinge), and the Standard Deviation Map. The Unique Values Map does not involve a classification algorithm, since it uses the integer/string values of a categorical variable itself as the map categories. The Co-location Map is an extension of this principle to multiple categorical variables. Finally, Custom Breaks allows for the use of customized classifications.
### Common map classifications
#### Quantile Map
A quantile map is based on sorted values for a variable that are then grouped into bins that each have the same number of observations, the so-called quantiles. The number of bins corresponds to the particular quantile, e.g., five bins for a quintile map, or four bins for a quartile map, two of the most commonly used categories.
For example, we can create a quantile map for the variable `rent2008` with 4 categories (quartile map):
```
Can you create a quantile map for the variable 'rent2008' with 4 categories?
```
or
```
Can you create a quartile map for the variable 'rent2008'?
```
:::tip
LLM has the 'knowledge' that to create a quartile map, it will use the quantile map with 4 categories.
:::
The quantile map has been created with a default color scheme. If you want to replicate the same result in original GeoDa lab which use the colorbrewer2.org color scheme 'YlOrBr', you can use the following prompt:
```
Can you update the colors of the layers using colorBrewer's 4-class YlOrBr color scheme?
```
You can further explore the quantile results by querying the number of areas in each category:
```
How many areas are in each category?
```
Upon closer examination from the screenshot, something doesn’t seem to be quite right. With 55 total observations, we should expect roughly 14 (55/4 = 13.75) observations in each group. But the first group only has 7, and the third group has 19! If we open up the Table and sort on the variable `RENT2008`, we can see where the problem lies.
Ignoring the zero entries for now (those are a potential problem in their own right), we see that observations starting in row 8 up to row 21 all have a value of 1000. The cut-off for the first quartile is at 14-th row. In a non-spatial analysis, this is not an issue, the first quartile value is given as 1000. But in a map, the observations are locations that need to be assigned to a group (with a separate color). Other than an arbitrary assignment, there is no way to classify observations with a rent of 1000 in either category 1 or category 2. To deal with these ties, then quantile algorithm (implemented in [geoda-lib](https://github.com/geodacenter/geoda-lib)) moves all the observations with a value of 1000 to the second category. As a result, even though the value of the first quartile is given as 1000 in the map legend, only those observations with rents less than 1000 are included in the first quartile category. As we see from the table, there are seven such observations.
Any time there are ties in the ranking of observations that align with the values for the breakpoints, the classification in a quantile map will be problematic and result in categories with an unequal number of observations.
A natural (Jenks) breaks map uses a nonlinear algorithm to group observations such that the within-group homogeneity is maximized, following the pathbreaking work of Fisher ([1958](https://www.jstor.org/stable/2281952)) and Jenks ([1977](https://books.google.com/books/about/Optimal_Data_Classification_for_Chorople.html?id=HvAENQAACAAJ)). In essence, this is a clustering algorithm in one dimension to determine the break points that yield groups with the largest internal similarity.
To create such a map with four categories, you can use the following prompt:
```
Can you create a natural breaks map for the variable 'rent2008' with 4 categories using the same YlOrBr color scheme?
```
:::tip
You will see there is a new map layer been created. But it has the same name as the previous one. You can click on the label of the map layer in the Layers panel to edit the name of the layer.
:::
If you want to compare the results of natural breaks map with the quartile map, you can click 'Switch to dual map view' button on the top right corner of the map to compare the two layers side by side.
In comparison to the quartile map, the natural breaks criterion is better at grouping the extreme observations. The three observations with zero values make up the first category, whereas the five high rent areas in Manhattan make up the top category. Note also that in contrast to the quantile maps, the number of observations in each category can be highly unequal.
#### Equal Intervals Map
An equal intervals (quantize) map uses the same principle as a histogram to organize the observations into categories that divide the range of the variable into equal interval bins. This contrasts with the quantile map, where the number of observations in each bin is equal, but the range for each bin is not. For the equal interval classification, the value range between the lower and upper bound in each bin is constant across bins, but the number of observations in each bin is typically not equal.
:::tip
In Kepler.gl, the equal intervals method is also callled 'quantize'. See documentation for more details: https://docs.kepler.gl/docs/user-guides/d-layer-attributes
:::
To create an equal intervals map for the variable `rent2008` with 4 categories, you can use the following prompt:
```
Can you create a equal intervals map for the variable 'rent2008' with 4 categories using the same YlOrBr color scheme?
```
As in the case of natural breaks, the equal interval approach can yield categories with highly unequal numbers of observations. In our example, the three zero observations again get grouped in the first category, but the second range (from 725 to 1450) contains the bulk of the spatial units (42).
To illustrate the similarity with the histogram, you can use the following prompt:
```
Can you create a histogram for the variable 'rent2008' with 4 bins?
```
The resulting histogram has the exact same ranges for each interval as the equal intervals map. The number of observations in each category is the same as well. The values for the number of observations in the descriptive statistics below the graph match the values given in the map legend.
Finally, we illustrate the equivalence between the two graphs by selecting a category in the map legend. To accomplish this, we select the highest category in the histogram. This selects will highlights the related observations in the map, through linking.

:::note
The linking is now way one for now: from plot to map. The two-way linking is not supported yet.
:::
### Map options
In Kepler.gl, there are several options to customize the map.
- change base map [doc](https://docs.kepler.gl/docs/user-guides/f-map-styles)
- chang layer order [doc](https://docs.kepler.gl/docs/user-guides/b-kepler-gl-workflow/add-data-to-layers/d-blend-and-rearrange-layers)
- configure layer [doc](https://docs.kepler.gl/docs/user-guides/d-layer-attributes)
- configure color palettes [doc](https://docs.kepler.gl/docs/user-guides/l-color-attributes)
For saving and exporting the map, please refer to the following documentation:
- save and export [doc](https://docs.kepler.gl/docs/user-guides/k-save-and-export)
### Extreme Value Maps
Extreme value maps are variations of common choropleth maps where the classification is designed to highlight extreme values at the lower and upper end of the scale, with the goal of identifying outliers. These maps were developed in the spirit of spatializing EDA, i.e., adding spatial features to commonly used approaches in non-spatial EDA ([Anselin 1994](https://scholar.google.com/scholar?hl=en&as_sdt=0%2C3&q=Exploratory+Spatial+Data+Analysis+and+Geographic+Information+Systems&btnG=)).
There are three types of extreme value maps:
- Percentile Map
- Box Map
- Standard Deviation Map
These are briefly described below. Only their distinctive features are highlighted, since they share all the same options with the other choropleth map types.
#### Percentile Map
The percentile map is a variant of a quantile map that would start off with 100 categories. However, rather than having these 100 categories, the map classification is reduced to six ranges, the lowest 1%, 1-10%, 10-50%, 50-90%, 90-99% and the top 1%.
For example, you can create a percentile map for the variable `rent2008`, using the following prompt:
```
Can you create a percentile map for the variable 'rent2008' with color scheme: BuRd?
```
:::tip
The percentile has been defined as 6 categories mentioned above, so there is no need to specify the number of categories in the prompt.
:::
Note how the extreme values are much better highlighted, especially at the upper end of the distribution. The classification also illustrates some common problems with this type of map. First of all, since there are fewer than 100 observations, in a strict sense there is no 1% of the distribution. This is handled (arbitrarily) by rounding, so that the highest category has one observation, but the lowest does not have any.
In addition, since the values are sorted from low to high to determine the cut points, there can be an issue with ties. As we have seen, this is a generic problem for all quantile maps. As pointed out, the [algorithm](https://github.com/GeoDaCenter/geoda-lib/blob/main/cpp/src/mapping/percentile-breaks.cpp) handles ties by moving observations to the next highest category. For example, when there are a lot of observations with zero values (e.g., in the crime rate map for the U.S. counties), the lowest percentile can easily end up without observations, since all the zeros will be moved to the next category.
#### Box Map
A box map ([Anselin 1994](https://scholar.google.com/scholar?hl=en&as_sdt=0%2C3&q=Exploratory+Spatial+Data+Analysis+and+Geographic+Information+Systems&btnG=)) is the mapping counterpart of the idea behind a box plot. The point of departure is again a quantile map, more specifically, a quartile map. But the four categories are extended to six bins, to separately identify the lower and upper outliers. The definition of outliers is a function of a multiple of the inter-quartile range (IQR), the difference between the values for the 75 and 25 percentile. As we will see in a later chapter in our discussion of the box plot, we use two options for these cut-off values, or hinges, 1.5 and 3.0. The box map uses the same convention.
To create a box map for the variable `rent2008`, you can use the following prompt:
```
Can you create a box map for the variable 'rent2008' using BuRd color scheme?
```
Compared to the quartile map, the box map separates the three lower outliers (the observations with zero values) from the other four observations in the first quartile. They are depicted in dark blue. Similarly, it separates the six outliers in Manhattan from the eight other observations in the upper quartile. The upper outliers are colored dark red.
To illustrate the correspondence between the box plot and the box map, we create a box plot for the variable `rent2008`.
```
Can you create a box plot for the variable 'rent2008'?
```
In the box plot, we select the upper outliers, the matching six outlier locations in the box map are highlighted. Note that the outliers in the box plot do not provide any information on the fact that these locations are also adjoining in space. This the spatial perspective that the box map adds to the data exploration.

The default box map uses the hinge criterion of 1.5. You can change the hinge criterion to 3.0 by using the following prompt:
```
Can you create a box map for the variable 'rent2008' with the hinge criterion of 3.0?
```
The resulting box map, shown in screenshot, no longer has lower outliers and has only five upper outliers (compared to six for the 1.5 hinge).
The box map is the preferred method to quickly and efficiently identify outliers and broad spatial patterns in a data set.
#### Standard Deviation Map
The third type of extreme values map is a standard deviation map. In some way, this is a parametric counterpart to the box map, in that the standard deviation is used as the criterion to identify outliers, instead of the inter-quartile range.
In a standard deviation map, the variable under consideration is transformed to standard deviational units (with mean 0 and standard deviation 1). This is equivalent to the z-standardization we have seen before.
The number of categories in the classification depends on the range of values, i.e., how many standard deviational units cover the range from lowest to highest. It is also quite common that some categories do not contain any observations (as in the example in the screenshot below).
To create a standard deviation map for the variable `rent2008`, you can use the following prompt:
```
Can you create a standard deviation map for the variable 'rent2008'?
```
In the screenshot above, there are five neighborhoods with median rent more than two standard deviations above the mean, and three with a median rent less than two standard deviations below the mean. Both sets would be labeled outliers in standard statistical practice. Also, note how the second lowest category does not contain any observations (so the corresponding color is not present in the map).
## Mapping Categorical Variables
So far, our maps have pertained to continuous variables, with a clear order from low to high. The AI assistant in Kepler.gl also contains some functionality to map categorical variables, for which the numerical values are distinct, but not necessarily meaningful in and of themselves. Most importantly, the numerical values typically do not imply any ordering of the categories. The two relevant functions are the unique value map, for a single variable, and the co-location map, where the categories for multiple variables are compared.
### Unique Value Map
To illustrate the categorical map, we first create a box map (with hinge 1.5) for each of the variables `kids2000` (the percentage households with kids under 18) and `pubast00` (the percentage households receiving public assistance). In each of these maps, we save the categories, respectively as `kidscat` and `asstcat`.
The category labels go from 1 to 6, but not all categories necessarily have observations. For example, the map for public assistance does not have either lower (label 1) or higher (label 6), outliers, only observations for 2–5. For the kids map, we have categories 1–5.
```
Can you create a box map for the variable 'kids2000' with the hinge criterion of 1.5 using BuRd color scheme?
```
Then, you can save the categories from the box map result into a new column. For example:
```
Can you save the 6 categories (index starts from 1) into a new column "kidscat" from the box map result?
```
:::tip
Expand the 'tableTool' function calling to see the result. The AI Assistant uses the following SQL query to get the categories:
SELECT ..., CASE
WHEN KIDS2000 < 10.8864 THEN 1
WHEN KIDS2000 >= 10.8864 AND KIDS2000 < 30.090975 THEN 2
WHEN KIDS2000 >= 30.090975 AND KIDS2000 < 38.2278 THEN 3
WHEN KIDS2000 >= 38.2278 AND KIDS2000 < 42.894025 THEN 4
WHEN KIDS2000 >= 42.894025 AND KIDS2000 < 62.0986 THEN 5
WHEN KIDS2000 >= 62.0986 THEN 6
END AS kidscat FROM nyctable;
:::
To replicate the same result in the original [GeoDa lab](https://geodacenter.github.io/workbook/3a_mapping/lab3a.html), you can use the following prompt:
```
Can you create a unique values map using 'kidscat' in the new dataset with Paired color scheme?
```
Then, you can do the same for the variable `pubast00` to save the categories into a new column. For example:
```
Can you create a box map for the variable 'pubast00' with the hinge criterion of 1.5 using BuRd color scheme?
```
```
Can you save the categories (index starts from 1) into a new column "asstcat" from the box map result?
```
To replicate the same result in the original GeoDa lab, you can use the following prompt:
```
Can you create a unique values map using 'asstcat' in the new dataset with Paired color scheme?
```
### Co-location Map
The co-location map is a map that shows the co-location of two categorical variables. It is a variant of the unique value map, where the categories for multiple variables are compared.
To create a co-location map for the variables `kidscat` and `asstcat`, you can use the following prompt:
```
Can you compare the two categorical values 'asstcat' and 'kidscat' (keep the value if they are the same, 0 if they are different) and save the result into a new column 'co_location' to a new dataset?
```
```
Can you create a unique values map using 'co_location' in the new dataset with Paired color scheme? please assign gray color to value 0.
```
The above steps show how to create a co-location map of two variables step by step:
- create a categorical variable from a continuous variable A using e.g. box map
- create a categorical variable from a continuous variable B using the same method
- compare the two categorical variables and save the result into a new column 'co_location' to a new dataset
- create a unique values map using 'co_location' in the new dataset with Paired color scheme
In Kepler.gl AI Assistant, we create a specific 'colocation' tool, so you can create a co-location map just with the following prompt:
```
Can you create a co-location map for the variables 'kids2000' and 'pubast00' using quantile breaks (k=5)?
```
From the screenshot, you can see how AI Assistant plans the similar steps to create the co-location map:
- Classify 'kids2000' into 5 quantile bins.
- Classify 'pubast00' into 5 quantile bins.
- Create a new dataset with both categorical variables.
- Compare the two categorical variables:
- Assign the same value if they match.
- Assign -1 if they differ.
- Visualize the result with a unique color for each match and gray for mismatches.
### Custom Classification
In addition to the range of pre-defined classifications available for choropleth maps, it is also possible to create a custom classification using AI Assistant. This is often useful when substantive concerns dictate the cut points, rather than data driven criteria. For example, this may be appropriate when specific income categories are specified for certain government programs.
A custom classification may also be useful when comparing the spatial distribution of a variable over time. All included pre-defined classifications are relative and would be re-computed for each time period. For example, when mapping crime rates over time, in an era of declining rates, the observations in the upper quartile in a later period may have crime rates that correspond to a much lower category in an earlier period. This would not be apparent using the pre-defined approaches, but could be visualized by setting the same break points for each time period.
For example, you can create a custom classification for the variable `rent2008` with the following prompt:
```
Can you create a new map layer using the variable 'kids2000' with the break points: [20, 30, 40, 45, 50] and color scheme YlOrBr?
```
Tip: to create a custom classification, what you need to prompt includes:
- the variable name
- the custom break values
- the color scheme (optional)
Kepler.gl has a custom classification tool that allows you to adjust the break points by simply dragging the break points. See [Custom Breaks Editor](https://docs.foursquare.com/analytics-products/docs/layers-color-scale-and-palettes#custom-breaks-editor).
## ~~Conditional Map~~
## Cartogram
A cartogram is a map type where the original layout of the areal unit is replaced by a geometric form (usually a circle, rectangle, or hexagon) that is proportional to the value of the variable for the location. This is in contrast to a standard choropleth map, where the size of the polygon corresponds to the area of the location in question. The cartogram has a long history and many variants have been suggested, some quite creative. In essence, the construction of a cartogram is an example of a nonlinear optimization problem, where the geometric forms have to be located such that they reflect the topology (spatial arrangement) of the locations as closely as possible (see [Tobler 2004](https://www.jstor.org/stable/3694068), for an extensive discussion of various aspects of the cartogram).
The AI assistant in Kepler.gl implements a circular cartogram [algorithm](https://github.com/GeoDaCenter/geoda-lib/blob/main/cpp/src/geometry/cartogram.h), in which the areal units are represented as circles, whose size (and color) is proportional to the value observed at that location. The changed shapes remove the misleading effect that the area of the unit might have on perception of magnitude. This circular cartogram is implemented as the `cartogram` tool in the AI assistant.
To create a cartogram for the variable `rent2008`, you can use the following prompt:
```
Can you create a cartogram for the variable 'rent2008' and create a box map using the cartogram with color scheme BuRd?
```
The cartogram is most insightful when used in conjunction with a regular choropleth map. Selecting an observation in the cartogram then immediately links it with the corresponding area in the choropleth map.
Except for multi-layer and base map, the cartogram has all the same options as a regular choropleth map, with one addition. The positioning of the circles in the cartogram is the result of a non-linear optimization algorithm. This tries to locate the center of the circle as close as possible to the centroid of the areal unit with which it corresponds, while respecting the contiguity structure as much as possible. There is no unique solution to this problem, and it is often good practice to experiment with further iterations that will slightly reposition the circles. This is implemented in the Improve Cartogram by specify the number of different iterations.
```
Can you create a cartogram for the variable 'rent2008' with 200 iterations and create a box map using the cartogram with color scheme BuRd?
```
You can use split map in Kepler.gl to compare the cartogram and the box map.
## ~~Map Animation~~
================================================
FILE: docs/spatial-analysis-tutorial/get-started.md
================================================
# Get Started
Kepler.gl AI Assistant is a plugin for Kepler.gl that allows you to perform spatial data analysis and visualization using AI.
## Start AI Assistant
To use AI Assistant, you can click the "AI Assistant" button in the top right corner of the Kepler.gl UI.
## Configure AI Assistant
You will see the AI Assistant configuration panel on the right side of the Kepler.gl UI. You can adjust the width of the panel by dragging the border between the panel and the Kepler.gl UI.
The configuration panel includes several important settings:
### AI Provider
Select your preferred AI provider from the dropdown menu. Currently supports:
- **OpenAI** - OpenAI's GPT models
- **Google** - Google's Gemini models
- **Anthropic** - Anthropic's Claude models
- **Deepseek** - Deepseek's chat models
- **XAI** - xAI's Grok models
- **Ollama** - Local models via Ollama
### Select LLM Model
Choose the specific language model that supports tools to use for AI interactions. Available options vary by provider:
| Provider | Available Models |
| ------------- | ---------------------------------------------------------------------------------------------------------------- |
| **OpenAI** | gpt-4.1, gpt-4o, gpt-4o-mini, gpt-4, gpt-3.5-turbo, o1, o1-preview, o1-mini |
| **Google** | gemini-2.5-flash-preview-04-17, gemini-2.5-pro-preview-05-06, gemini-2.0-flash, gemini-1.5-flash, gemini-1.5-pro |
| **Anthropic** | claude-3.7-sonnet, claude-3.5-sonnet, claude-3.5-haiku, claude-3-opus, claude-3-sonnet, claude-3-haiku |
| **XAI** | grok-3, grok-3-fast, grok-3-mini, grok-3-mini-fast |
| **Deepseek** | deepseek-chat |
| **Ollama** | Custom models (check "Input Model Name" to manually enter a custom model name) |
For more details, please visit the documentation [here](https://github.com/geodacenter/openassistant).
### Authentication
**For Cloud Providers (OpenAI, Google, Anthropic, Deepseek, XAI):**
- **Enter Your API Key** - Provide your API key for the selected provider. This is required to authenticate and use the AI services. Your API key is stored locally and used only for making requests to the AI provider.
For example: visit [https://platform.openai.com/docs/api-reference](https://platform.openai.com/docs/api-reference) to get your OpenAI API key, or visit [https://docs.anthropic.com/en/api/getting-started](https://docs.anthropic.com/en/api/getting-started) to get your Anthropic API key.
**For Ollama (Local):**
- **Base URL** - Enter the base URL for your Ollama instance (default: `http://localhost:11434/api`)
- **Input Model Name** - Optionally check this to manually enter a model name instead of selecting from the dropdown
See Ollama documentation for more details: [https://ollama.com/docs](https://ollama.com/docs)
### Temperature
Control the creativity and randomness of AI responses using the temperature slider:
- **0** (left) - More focused and deterministic responses
- **2** (right) - More creative and varied responses
- Range: 0.0 to 2.0 with 0.1 increments
- Default setting is **0** for more precise analytical responses
### Top P
Fine-tune the diversity of AI responses with the Top P parameter:
- **0** (left) - More focused on the most likely responses
- **1** (right) - Consider a broader range of possible responses
- Range: 0.0 to 1.0 with 0.1 increments
- Default setting is **1.0** for comprehensive responses
### Mapbox Token (Optional For Route/Isochrone)
If you plan to use routing or isochrone analysis features, you can optionally provide your Mapbox access token. This enables advanced spatial analysis capabilities like:
- Route e.g. "What is the driving route from 123 Main St to 456 Main St in San Francisco?"
- Isochrone e.g. "What is the 30-minute travel time isochrone from 123 Main St in San Francisco?"
## Use AI Assistant
If the connection to the selected AI provider is successful, you will see the AI Assistant chat interface.
**Welcome Message**: You'll be greeted with "Hi, I am Kepler.gl AI Assistant!" confirming that the assistant is ready to help with your spatial analysis tasks.
**Suggested Actions**: The interface displays helpful suggestion buttons to get you started quickly based on the dataset loaded in Kepler.gl. For example, in the screenshot above:
- **Create a Bubble Chart**: "Visualize the relationship between AGE_2..." - Helps you create scatter plots and bubble charts to explore relationships between variables
- **Generate a Histogram**: "Show the distribution of AGE_LT_21..." - Assists in creating histograms to understand the distribution of your data
**Prompt Input**: Use the "Enter a prompt here" field to type your questions, requests, or commands in natural language.
:::tip
some useful prompts:
what datasets are available to use?
what tools are available to use?
:::
#### Tips for Effective Prompting
- **Be specific**: Include details about the data columns, analysis type, or visualization you want
- **Use examples**: Reference specific field names or geographic areas in your dataset
- **Ask follow-up questions**: Build on previous responses to refine your analysis
- **Experiment**: Try different phrasings if the first attempt doesn't give you the desired result
### Additional Features
The AI Assistant includes several advanced features to enhance your interaction experience:
#### Screenshot to Ask
Click the **"Screenshot to Ask"** button to capture specific areas of your map or interface and ask questions about them.
##### How to use screenshot to ask?
**Taking Screenshots**
1. Click the "Screenshot to Ask" button in the chat interface
2. A semi-transparent overlay will appear
3. Click and drag to select the area you want to capture
4. Release to complete the capture
**Asking Questions**
1. After capturing, the screenshot will be attached to your next message
2. Type your question about the captured area
3. Send your message to get AI assistance
**Managing Screenshots**
1. Click the "X" button on the screenshot preview to remove it
2. Use onRemoveScreenshot callback for programmatic removal
#### Talk to Ask (Voice-to-Text)
The voice-to-text feature allows users to record their voice, which will be converted to text using the LLM.
##### How to use voice-to-text?
When using the voice-to-text feature for the first time, users will be prompted to grant microphone access. The browser will display a permission dialog that looks like this:
Users can choose from three options:
- **Allow while visiting the site**: Grants temporary microphone access
- **Allow this time**: Grants one-time microphone access
- **Never allow**: Blocks microphone access
Then, user can start recording their voice. User can stop recording by clicking the stop button or by clicking the microphone icon again. The text will be translated by LLM and displayed in the input box.
This feature is only available with certain AI providers:
- OpenAI (using Whisper model)
- Google (using Gemini)
If using an unsupported provider, you'll receive a "Method not implemented" error.
## Next Tutorial
Next Tutorial: [Spatial Data Wrangling](./spatial-data-wrangling.md)
================================================
FILE: docs/spatial-analysis-tutorial/rate-mapping.md
================================================
# Maps for Rates or Proportions
Original GeoDa lab by Luc Anselin: https://geodacenter.github.io/workbook/3b_ratemaps/lab3b.html
## Introduction
In this chapter, we will explore some important concepts that are relevant when mapping rates or proportions. Such data are characterized by an intrinsic variance instability, in that the precision of the rate as an estimate for underlying risk is inversely proportional to the population at risk. Specifically, this implies that rates estimated from small populations (e.g., small rural counties) may have a large standard error. Furthermore, such rate estimates may potentially erroneously suggest the presence of outliers.
In what follows, we will cover two basic methods to map rates. We will also consider the most commonly used rate smoothing technique, based on the Empirical Bayes approach. Spatially explicit smoothing techniques will be treated after we cover distance-based spatial weights.
### Objectives
- Create thematic maps for rates
- Assess extreme rate values by means of an excess risk map
- Understand the principle behind shrinkage estimation or smoothing rates
- Apply the Empirical Bayes smoothing principle to maps for rates
## Getting Started
In this chapter, we will use a sample data set with lung cancer data for the 88 counties of the state of Ohio. This is a commonly used example in many texts that cover disease mapping and spatial statistics.2 The data set is also included as one of the Center for Spatial Data Science example data sets and can be downloaded from the [Ohio Lung Cancer Mortality page](https://geodacenter.github.io/data-and-lab/ohiolung/).
- [ohlung.geojson](https://geodacenter.github.io/data-and-lab/data/ohlung.geojson)
We can load the data by prompting:
```
Can you load the dataset: https://geodacenter.github.io/data-and-lab/data/ohlung.geojson?
```
## Choropleth Map for Rates
### Spatially extensive and spatially intensive variables
We start our discussion of rate maps by illustrating something we should not be doing. This pertains to the important difference between a spatially extensive and a spatially intensive variable. In many applications that use public health data, we typically have access to a count of events, such as the number of cancer cases (a spatially extensive variable), as well as to the relevant population at risk, which allows for the calculation of a rate (a spatially intensive variable).
In our example, we could consider the number (count) of lung cancer cases by county among white females in Ohio (say, in 1968). The corresponding variable in our data set is LFW68. We can create a box map (hinge 1.5) in the by now familar prompt:
```
Can you create a box map (hinge 1.5) for the LFW68 variable using color theme BuRd?
```
Anyone familiar with the geography of Ohio will recognize the outliers as the counties with the largest populations, i.e., the metropolitan areas of Cincinnati, Columbus, Cleveland, etc. The labels for these cities in the base layer make this clear. This highlights a major problem with spatially extensive variables like total counts, in that they tend to vary with the size (population) of the areal units. So, everything else being the same, we would expect to have more lung cancer cases in counties with larger populations.
Instead, we opt for a spatially intensive variable, such as the ratio of the number of cases over the population. More formally, if $O_i$ is the number of cancer cases in area $i$, and $P_i$ is the corresponding population at risk (in our example, the total number of white females), then the raw or crude rate or proportion follows as:
$$r_i = \frac{O_i}{P_i}$$
#### Variance instability
The crude rate is an estimator for the unknown underlying risk. In our example, that would be the risk of a white woman to be exposed to lung cancer. The crude rate is an unbiased estimator for the risk, which is a desirable property. However, its variance has an undesirable property, namely
$$Var[r_i] = \frac{\pi_i(1-\pi_i)}{P_i}$$
where $\pi_i$ is the unknown underlying risk. This implies that the larger the population of an area ($P_i$ in the denominator), the smaller the variance for the estimator, or, in other words, the greater the precision.
The flip side of this result is that for areas with sparse populations (small $P_i$), the estimate for the risk will be imprecise (large variance). Moreover, since the population typically varies across the areas under consideration, the precision of each rate will vary as well. This variance instability needs to somehow be reflected in the map, or corrected for, to avoid a spurious representation of the spatial distribution of the underlying risk. This is the main motivation for smoothing rates, to which we return below.
The AI assistant in kepler.gl provides a tool to calculate the different types of rates:
- [Raw Rate]()
- [Excess Risk]()
- [Empirical Bayes Rate]()
- [Spatial Rate]()
- [Spatial Empirical Bayes Rate]()
### Raw rate map
First, we consider the Raw Rate or crude rate (proportion), the simple ratio of the events (number of lung cancer cases) over the population at risk (the county population). For example, we can use the following prompt:
```
Can you calculate the raw rates using event variable LFW68 and base variable POPFW68, and create a box map using the raw rates?
```
We immediately notice that the counties identified as upper outliers in this screenshot are very different from what the map for the counts suggested in the previous box map.
If we use split map to compare the two maps, we can see that none of the original count outliers remain as extreme values in the rate map. In fact, some counties are in the lower quartiles (blue color) for the rates.
#### Raw rate values in table
From the response text, we can see that there is a new dataset 'rates_qxxx' has been created and added in Kepler.gl. If we click on the table icon, we can see the raw rates column:
### Excess risk map
#### Relative risk
A commonly used notion in demography and public health analysis is the concept of a standardized mortality rate (SMR), sometimes also referred to as relative risk or excess risk. The idea is to compare the observed mortality rate to a national (or regional) standard. More specifically, the observed number of events is compared to the number of events that would be expected had a reference risk been applied.
In most applications, the reference risk is estimated from the aggregate of all the observations under consideration. For example, if we considered all the counties in Ohio, the reference rate would be the sum of all the events over the sum of all the populations at risk. Note that this average is not the average of the county rates. Instead, it is calculated as the ratio of the total sum of all events over the total sum of all populations at risk (e.g., in our example, all the white female deaths in the state over the state white female population). Formally, this is expressed as:
$$\tilde{\pi} = \frac{\sum_{i=1}^{n} O_i}{\sum_{i=1}^{n} P_i},$$
which yields the expected number of events for each area $i$ as:
$$E_i = \tilde{\pi} \times P_i.$$
The relative risk then follows as the ratio of the observed number of events (e.g., cancer cases) over the expected number:
$$SMR_i = \frac{O_i}{E_i}.$$
#### Excess risk map
We can map the standardized rates directly using the following prompt:
```
Can you calculate the excess risk rates using event variable LFW68 and base variable POPFW68, and create a box map using the excess risk rates?
```
In the excess risk map, the legend categories are hard coded, with the blue tones representing counties where the risk is less than the state average (excess risk ratio < 1), and the brown tones corresponding to those counties where the risk is higher than the state average (excess risk ratio > 1).
In the map above, we have six counties with an SMR greater than 2 (the brown colored counties), suggesting elevated rates relative to the state average.
## Empirical Bayes (EB) Smoothed Rate Map
### Borrowing strength
As mentioned in the introduction, rates have an intrinsic variance instability, which may lead to the identification of spurious outliers. In order to correct for this, we can use smoothing approaches (also called shrinkage estimators), which improve on the precision of the crude rate by borrowing strength from the other observations. This idea goes back to the fundamental contributions of James and Stein (the so-called James-Stein paradox), who showed that in some instances biased estimators may have better precision in a mean squared error sense.
The AI assistant in kepler.gl includes three methods to smooth the rates: an Empirical Bayes approach, a spatial averaging approach, and a combination between the two. We will consider the spatial approaches after we discuss distance-based spatial weights. Here, we focus on the Empirical Bayes (EB) method. First, we provide some formal background on the principles behind smoothing and shrinkage estimators.
#### Bayes Law
The formal logic behind the idea of smoothing is situated in a Bayesian framework, in which the distribution of a random variable is updated after observing data. The principle behind this is the so-called Bayes Law, which follows from the decomposition of a joint probability (or density) into two conditional probabilities:
$$P[AB] = P[A|B] \times P[B] = P[B|A] \times P[A],$$
where $A$ and $B$ are random events, and |
stands for the conditional probability of one event, given a value for the other. The second equality yields the formal expression of Bayes law as:
$$P[A|B] = \frac{P[B|A] \times P[A]}{P[B]}.$$
In most instances in practice, the denominator in this expression can be ignored, and the equality sign is replaced by a proportionality sign:
$$P[A|B] \propto P[B|A] \times P[A].$$
In the context of estimation and inference, the $A$ typically stands for a parameter (or a set of parameters) and $B$ stands for the data. The general strategy is to update what we know about the parameter $A$ a priori (reflected in the prior distribution $P[A]$), after observing the data $B$, to yield a posterior distribution, $P[A|B]$. The link between the prior and posterior distribution is established through the likelihood, $P[B|A]$. Using a more conventional notation with say $\pi$ as the parameter and $y$ as the observations, this gives:
$$P[\pi|y] \propto P[y|\pi] \times P[\pi].$$
#### The Poisson-Gamma model
For each particular estimation problem, we need to specify distributions for the prior and the likelihood in such a way that a proper posterior distribution results. In the context of rate estimation, the standard approach is to specify a Poisson distribution for the observed count of events (conditional upon the risk parameter), and a Gamma distribution for the prior of the risk parameter $\pi$. This is referred to as the Poisson-Gamma model.
In this model, the prior distribution for the (unknown) risk parameter $\pi$ is $\text{Gamma}(\alpha, \beta)$, where $\alpha$ and $\beta$ are the shape and scale parameters of the Gamma distribution. In terms of the more familiar notions of mean and variance, this implies:
$$E[\pi] = \frac{\alpha}{\beta},$$
and
$$\text{Var}[\pi] = \frac{\alpha}{\beta^2}.$$
Using standard Bayesian principles, the combination of a Gamma prior for the risk parameter with a Poisson distribution for the count of events ($O$) yields the posterior distribution as $\text{Gamma}(O + \alpha, P + \beta)$. The new shape and scale parameters yield the mean and variance of the posterior distribution for the risk parameter as:
$$E[\pi|O, P] = \frac{O + \alpha}{P + \beta},$$
and
$$\text{Var}[\pi|O, P] = \frac{O + \alpha}{(P + \beta)^2}.$$
Different values for the $\alpha$ and $\beta$ parameters (reflecting more or less precise prior information) will yield smoothed rate estimates from the posterior distribution. In other words, the new risk estimate adjusts the crude rate with parameters from the prior Gamma distribution.
#### The Empirical Bayes approach
In the Empirical Bayes approach, values for $\alpha$ and $\beta$ of the prior Gamma distribution are estimated from the actual data. The smoothed rate is then expressed as a weighted average of the crude rate, say $r_i$, and the prior estimate, say $\theta$. The latter is estimated as a reference rate, typically the overall statewide average or some other standard.
In essence, the EB technique consists of computing a weighted average between the raw rate for each county and the state average, with weights proportional to the underlying population at risk. Simply put, small counties (i.e., with a small population at risk) will tend to have their rates adjusted considerably, whereas for larger counties the rates will barely change.
More formally, the EB estimate for the risk in location $i$ is:
$$\pi_{EBi} = w_i r_i + (1 - w_i) \theta.$$
In this expression, the weights are:
$$w_i = \frac{\sigma^2}{\sigma^2 + \mu/P_i},$$
with $P_i$ as the population at risk in area $i$, and $\mu$ and $\sigma^2$ as the mean and variance of the prior distribution.
In the empirical Bayes approach, the mean $\mu$ and variance $\sigma^2$ of the prior (which determine the scale and shape parameters of the Gamma distribution) are estimated from the data.
For $\mu$ this estimate is simply the reference rate (the same reference used in the computation of the SMR),
$\sum_{i=1}^{n} O_i / \sum_{i=1}^{n} P_i$.
The estimate of the variance is a bit more complex:
$$\sigma^2 = \frac{\sum_{i=1}^{n} P_i (r_i - \mu)^2}{\sum_{i=1}^{n} P_i} - \frac{\mu \sum_{i=1}^{n} P_i}{n}.$$
While easy to calculate, the estimate for the variance can yield negative values. In such instances, the conventional approach is to set $\sigma^2$ to zero. As a result, the weight $w_i$ becomes zero, which in essence equates the smoothed rate estimate to the reference rate.
### EB rate map
You can use the following prompt to create an EB smoothed rate map by using the dataset with raw rates, which we will compare to the EB rates in the next step:
```
Can you calculate the empirical bayes smoothed rates using event variable LFW68 and base variable POPFW68 from dataset with raw rates, and create a box map using the empirical bayes smoothed rates?
```
In comparison to the box map for the crude rates and the excess rate map, none of the original outliers remain identified as such in the smoothed map. Instead, a new outlier is shown in the very southwestern corner of the state (Hamilton county).
Since many of the original outlier counties have small populations at risk (check in the data table), their EB smoothed rates are quite different (lower) from the original. In contrast, Hamilton county is one of the most populous counties (it contains the city of Cincinnati), so that its raw rate is barely adjusted. Because of that, it percolates to the top of the distribution and becomes an outlier.
To illustrate this phenomenon, we can systematically select observations in the box plot for the raw rates and compare their position in the box plot for the smoothed rates. This will reveal which observations are affected most.
We create the box plots in the usual way using the raw rates and the empirical bayes smoothed rates by prompting:
```
Can you create a box plot for the raw rates and the empirical bayes smoothed rates?
```
Now, the AI assistant will create two box plots for the raw rates and the empirical bayes smoothed rates. We select the three outliers in the raw rates box plot. The corresponding observations are within the upper quartile for the EB smoothed rates, but well within the fence, and thus no longer outliers after smoothing. We can of course also locate these observations on the map, or any other open views.
Next, we can carry out the reverse and select the outlier in the box plot for the EB smoothed rate. Its position is around the 75 percentile in the box plot for the crude rate. Also note how the range of the rates has shrunk. Many of the higher crude rates are well below 0.00012 for the EB rate, whereas the value for the EB outlier has barely changed.
Here is a screen captured video of the above steps:

================================================
FILE: docs/spatial-analysis-tutorial/spatial-data-gis.md
================================================
# Spatial Data Wrangling (2) – GIS Operations
Original GeoDa lab by Luc Anselin: https://geodacenter.github.io/workbook/01_datawrangling_2/lab1b.html
## Introduction
Even though Kepler.gl is not GIS by design, a range of spatial data manipulation functions are available that perform some specialized GIS operations using the AI assistant. This includes ~~an efficient treatment of projections~~, conversion between points and polygons, the computation of a minimum spanning tree, and spatial aggregation and spatial join through multi-layer support.
## Objectives
- Understand how projections are expressed in a coordinate reference system (CRS)
- ~~Be able to efficiently change from one projection to another~~
- Create shape centers (mean center and centroid) for polygons
- Construct Thiessen polygons for a point layer
- Compute a minimum spanning tree based on the max-min distance between points
- Operate on more than one layer
- Dissolve areal units and compute aggregate values
- Compute aggregate values based on a common indicator in a table
- Implement a spatial join to carry out point in polygon operations
- ~~Visualize the common link between two layers~~
## Preliminaries
We will continue to illustrate the various operations by means of a series of example data sets, all contained in the [GeoDa Center data set collection](https://geodacenter.github.io/data-and-lab/).
Some of these are the same files used in the previous chapter. For the sake of completeness, we list all the sample data sets used:
- Chicago commpop: population data for 77 Chicago Community Areas in 2000 and 2010 https://geodacenter.github.io/data-and-lab/data/chicago_commpop.geojson
- Groceries: the location of 148 supermarkets in Chicago in 2015 https://geodacenter.github.io/data-and-lab//data/chicago_sup.geojson
- Natregimes: homicide and socio-economic data for 3085 U.S. counties in 1960-1990 https://geodacenter.github.io/data-and-lab/data/natregimes.geojson
- Home Sales: home sales in King County, WA during 2014-2015 (point data) https://geodacenter.github.io/data-and-lab//data/KingCountyHouseSales2015.geojson
## Projections
Spatial observations need to be georeferenced, i.e., associated with specific geometric objects for which the location is represented in a two-dimensional Cartesian coordinate system. Since all observations originate on the surface of the three-dimensional near-spherical earth, this requires a transformation. The transformation involves two steps that are often confused by non-geographers. The topic is complex and forms the basis for the discipline of geodesy. A detailed treatment is beyond our scope, but a good understanding of the fundamental concepts is important. The classic reference is Snyder (1993), and a recent overview of a range of technical issues is offered in Kessler and Battersby (2019).
The basic building blocks are degrees latitude and longitude that situate each location with respect to the equator and the Greenwich Meridian (near London, England). Longitude is the horizontal dimension (x), and is measured in degrees East (positive) and West (negative) of Greenwich, ranging from 0 to 180 degrees. Since the U.S. is west of Greenwich, the longitude for U.S. locations is negative. Latitude is the vertical dimension (y), and is measured in degrees North (positive) and South (negative) of the equator, ranging from 0 to 90 degrees. Since the U.S. is in the northern hemisphere, its latitude values will be positive.
### Selecting a projection
In Kepler.gl, the WGS84 geographic coordinate system is used by default. All data is visualized using latitude and longitude in this system to represent geographic locations accurately. Note: the GeoJSON format uses the WGS84 geographic coordinate system by default. If you have datasets not in the WGS84 geographic coordinate system, you can convert them to WGS84 using other software like GDAL or GeoDa (see [Reprojection](https://geodacenter.github.io/workbook/01_datawrangling_2/lab1b.html)).
However, when computing geometric measurements—such as distance, buffer, area, length, and perimeter—the AI assistant automatically uses GeoDa library to convert geographic coordinates (latitude and longitude) into projected coordinates (easting and northing) using the UTM projection with the WGS84 datum. This ensures accurate calculations in meters.
For Universal Transverse Mercator or UTM, the global map is divided into parallel zones, as shown in Figure below. With each zone corresponds a specific projection that can be used to convert geographic coordinates (latitude and longitude) into projected coordinates (easting and northing).
UTM zones for North America (source: GISGeography)
## Converting Between Points and Polygons
So far, we have represented the geography of the community areas by their actual boundaries. However, this is not the only possible way. We can equally well choose a representative point for each area, such as a mean center or a centroid. In addition, we can create new polygons to represent the community areas as tessellations around those central points, such as Thiessen polygons. The key factor is that all three representations are connected to the same cross-sectional data set. As we will see in later chapters, for some types of analyses it is advantageous to treat the areal units as points, whereas in other situations Thiessen polygons form a useful alternative to dealing with an actual point layer.
The center point and Thiessen polygon functionality is brought up through the options menu associated with any map view (right click on the map to bring up the menu). We illustrate these features with the projected community area map we just created.
### Mean centers and centroids
The **mean centers** is obtained as the simple average of the the X and Y coordinates that define the vertices of the polygon. The **centroid** is more complex, and is the actual center of mass of the polygon (image a cardboard cutout of the polygon, the centroid is the central point where a pin would hold up the cutout in a stable equilibrium).
Both methods can yield strange results when the polygons are highly irregular or in a so-called multi-polygon situation (different polygons associated with the same ID, such as a mainland area and an island belonging to the same county). In those instances the centers can end up being located outside the polygon. Nevertheless, the shape centers are a handy way to convert a polygon layer to a corresponding point layer with the same underlying geography. For example, as we will see in a later chapter, they are used under the hood to calculate distance-based spatial weights for polygons.
To add centroids of the map layer, you can use the following prompt to create a map layer first:
```
Can you create a map layer from https://geodacenter.github.io/data-and-lab/data/chicago_commpop.geojson?
```
After the map layer is created, you can add centroids by just prompting:
```
Can you get the centroids from the chicago commpop dataset?
```
### Thiessen polygons
Point layers can be turned into a so-called tessellation or regular tiling of polygons centered around the points. Thiessen polygons are those polygons that define an area that is closer to the central point than to any other point. In other words, the polygon contains all possible locations that are nearest neighbors to the central point, rather than to any other point in the data set. The polygons are constructed by considering a line perpendicular at the midpoint to a line connecting the central point to its neighbors.
For example, we can prompt the AI assistant to create Thiessen polygons for the point layer:
```
Can you create Thiessen polygons for the point layer?
```
### Minimum spanning tree
A graph is a data structure that consists of nodes and vertices connecting these nodes. In our later discussions, we will often encounter a connectivity graph, which shows the observations that are connected for a given distance band. The connected points are separated by a distance that is smaller than the specified distance band.
An important graph is the so-called max-min connectivity graph, which shows the connectedness structure among points for the smallest distance band that guarantees that each point has at least one other point it is connected to.
A minimum spanning tree (MST) associated with a graph is a path through the graph that ensures that each node is visited once and which achieves a minimum cost objective. A typical application is to minimize the total distance traveled through the path. The MST is employed in a range of methods, particularly clustering algorithms.
The Ai assistant uses GeoDa library to construct an MST based on the max-min connectivity graph for any point layer. The construction of the MST employs Prim’s algorithm, which is illustrated in more detail in the [Appendix](https://geodacenter.github.io/workbook/01_datawrangling_2/lab1b.html#appendix).
To create a minimum spanning tree for the point layer, you can use the following prompt:
```
Can you create a minimum spanning tree for the point layer?
```
## Aggregation
Spatial data sets often contain identifiers of larger encompassing units, such as states for counties, or census tracts for individual household data. Spatial disolve is a function that allows us to aggregate the smaller units into the larger units.
We illustrate this functionality with the natregimes dataset using **spatial dissolve** tool. First, load the dataset:
```
Load the dataset https://geodacenter.github.io/data-and-lab/data/natregimes.geojson
```
While the observations are for counties, each county also includes a numeric code for the encompassing state in the variable STFIPS. We can use this variable to aggregate the counties into states.
```
Can you aggregate the counties into states based on the STFIPS variable?
```
If you want to aggregate the properties values of the counties into the states, you can use the following prompt:
```
Can you aggregate the counties into the states based on the STFIPS and aggregate the numeric variables by SUM?
```
## Multi-Layer Support
Kepler.gl supports multi-layer visualization by default. When you load more datasets, the map layers will be automatically added to current map. You can drag-n-drop the layers to reorder them. This multi-layer infrastructure allows for the calculation of variables for one layer, based on the observations in a different layer.
```
Load the dataset https://geodacenter.github.io/data-and-lab/data/chicago_commpop.geojson
```
```
Load the dataset https://geodacenter.github.io/data-and-lab/data/chicago_sup.geojson
```
## Spatial Join
This is an example of a point in polygon GIS operation. There are two applications of this process. In one, the ID variable (or any other variable) of a spatial area is assigned to each point that is within the area’s boundary. We refer to this as Spatial Assign. The reverse of this process is to count (or otherwise aggregate) the number of points that are within a given area. We refer to this as Spatial Count.
Even though the default application is simply assigning an ID or counting the number of points, more complex assignments and aggregations are possible as well. For example, rather than just counting the point, an aggregate over the points can be computed for a given variable, such as the mean, median, standard deviation, or sum. This process is called **Spatial Join**.
### Spatial assign
We start the process illustrating the Spatial Assign operation by first loading the Chicago supermarkets point layer, chicago_sup.geojson, followed by the projected community area layer, chicago_commpop.geojson.
The purpose of the Spatial Assign operation is to assign the community area ID to each supermarket. This is done by using the **Spatial Join** tool.
```
Can you assign the community name to each supermarket in chicago_sup.geojson?
```
### Spatial count
The Spatial Count process works in the reverse order by counting the number of supermarkets in each community area.
```
Can you spatial join the points to the community areas and count the number of points in each community area?
```
:::tip
You can click on the spatialJoin tool to see the details of how spatial join tool has been applied on the datasets.
:::
### Spatial join with aggregation
We can also carry out an aggregation over the points in each area. For example, when joining the points to the community areas, we can aggregate the points by the mean of the variable `NEAR_DIST` to get e.g. the nearest distance of the supermarkets in each community area.
```
Can you spatial join the points to the community areas and aggregate the mean value of the variable 'NEAR_DIST' of points in each community area?
```
The aggregation options that are supported now include: COUNT, SUM, MEAN, MIN, MAX, UNIQUE.
## ~~Linked Multi-Layers~~
================================================
FILE: docs/spatial-analysis-tutorial/spatial-data-wrangling.md
================================================
# Spatial Data Wrangling
Original GeoDa lab by Luc Anselin: https://geodacenter.github.io/workbook/01_datawrangling_1/lab1a.html
## Introduction
In this chapter, we tackle the topic of data wrangling, i.e., the process of getting data from its raw input into a form that is amenable for analysis. This is often considered to be the most time consuming part of a data science project, taking as much as 80% of the effort ([Dasu and Johnson 2003](https://onlinelibrary.wiley.com/doi/book/10.1002/0471448354)). However, with Kepler.gl AI Assistant, we can now achieve the same data manipulation goals with significantly less effort compared to traditional approaches using software like GeoDa.
While data wrangling has increasingly evolved into a field of its own, with a growing number of operations turning into automatic procedures embedded into software ([Rattenbury et al. 2017](https://www.oreilly.com/library/view/principles-of-data/9781491938911/)), the integration of AI assistance represents the next evolution in making these processes even more intuitive and efficient. A detailed discussion of the underlying technical implementations is beyond our scope, but we'll provide practical examples of how to harness this technology for your spatial analysis needs.
### Objectives
- Load a spatial layer from a range of formats
- Create a point layer from coordinates in a table
- Create a grid layer
- Create new variables
- Variable standardization
- Merging tables
## Preliminaries
We will illustrate the basic data input operations by means of a series of example data sets, all contained in the GeoDa Center data set collection.
Specifically, we will use files from the following data sets:
- Chicago commpop: population data for 77 Chicago Community Areas in 2000 and 2010
- Groceries: the location of 148 supermarkets in Chicago in 2015
- Natregimes: homicide and socio-economic data for 3085 U.S. counties in 1960-1990
- SanFran Crime: San Francisco crime incidents in 2012 (point data)
You can download these data sets from the [GeoDa Center data and lab](https://geodacenter.github.io/data-and-lab). In this tutorial, we will use the following urls:
- Chicago commonpop: https://geodacenter.github.io/data-and-lab/data/chicago_commpop.geojson
- Groceries: https://geodacenter.github.io/data-and-lab//data/chicago_sup.geojson
- Natregimes: https://geodacenter.github.io/data-and-lab/data/natregimes.geojson
- SanFran Crime: https://geodacenter.github.io/data-and-lab/data/SFcartheft_july12.geojson
A GeoJSON file is simple text and can easily be read by humans. As shown in Figure below, we see how the locational information is combined with the attributes. After some header information follows a list of features. Each of these contains properties, of which the first set consists of the different variable names with the associated values, just as would be the case in any standard data table. However, the final item refers to the geometry. It includes the type, here a MultiPolygon, followed by a list of x-y coordinates. In this fashion, the spatial information is integrated with the attribute information.
### Spatial Data and GIS files
If you are not familiar with spatial data and GIS files, you can refer to the [Spatial Data and GIS files](https://geodacenter.github.io/workbook/01_datawrangling_1/lab1a.html) chapter.
### Polygon Layer
Most of the analyses covered in these chapters will pertain to areal units, or polygon layers. In Kepler.gl, you can drag and drop the e.g. chicago_commonpop.geojson file to load the data and create a polygon layer automatically (see [Add Data to your Map](https://docs.kepler.gl/docs/user-guides/j-get-started)).
Here we will use the AI Assistant to load the data and create a polygon layer.
```
Can you create a map layer from https://geodacenter.github.io/data-and-lab/data/chicago_commpop.geojson
?
```
### Point Layer
Point layer GIS files are loaded in the same fashion. For example, we can load the chicago_sup.geojson file to create a point layer.
```
Can you create a map layer from https://geodacenter.github.io/data-and-lab/data/chicago_sup.geojson?
```
### Tabular files
Tabular files e.g. the comma separated value (csv) files are also supported. For example, we can load the commpopulation.csv file, which doesn't contain any geometric data.
```
Can you load a dataset from https://geodacenter.github.io/data-and-lab/data/commpopulation.csv?
```
If the csv file contains coordinates, the AI Assistant will automatically create a point layer.
Here we convert the chicago_sup.dbf, which is used in [GeoDa workbook](https://geodacenter.github.io/workbook/01_datawrangling_1/lab1a.html), to chicago_sup.csv file:
```
Can you create a map layerfrom https://geodacenter.github.io/data-and-lab/data/chicago_sup.csv?
```
As you can see in the screenshot above, the AI Assistant confirms with you what type of map layer you want to create. Then, it performs fetching the data from the URL. However, it is not sure about which columns should be used for latitude and longitude coordinates since the columns in the csv file are "XCoord" and "YCoord" not named as "latitude" and "longitude".
In the GeoDa workbook, you will need to specify the latitude/longitude columns in the configuration UI. However, with AI assistant, you can simply ask it to guess the columns based on the data. Once you confirm that you want to guess the columns, the AI Assistant successfully identifies the appropriate columns and creates the point layer, showing the grocery store locations as points on the map.
## Grid
Grid layers are useful to aggregate counts of point locations in order to calculate point pattern statistics, such as quadrat counts. In Kepler.gl, users can create a grid layer from a dataset easily. See [Kepler.gl Grid Layer](https://docs.kepler.gl/docs/user-guides/c-types-of-layers/d-grid) for more details.
In this tutorial, we are using the Ai assistant to create a grid layer from either the current map view (the map bounds defind by northwest and southweast points), or use the bounding box of an available data source.
```
Can you create a 20x20 grid layer over the chicago_commpop areas?
```
Since there is a spatial join tool in the AI Assistant, we can also use it to filter the grids that intersect with chicago commpop polygons. The result will be more useful for a spatial data analysis.
```
Can you filter the grids that intersect with chicago commpop polygons?
```
## Table Manipulations
A range of variable transformations are supported through the query tool in the AI Assistant. To illustrate these, we will use the Natregimes sample data set. After loading the natregimes.shp file, we obtain the base map of 3085 U.S. counties, shown in the screenshot below.
```
Can you create a map layer from https://geodacenter.github.io/data-and-lab/data/natregimes.geojson?
```
The table of the dataset can be opened by using the 'Show Data Table' button when mouse over the dataset name in Kepler.gl layer panel.
This is a view only table. You can not e.g. edit the data, or add/remove a column in this table. The Foursqure Studio, which is developed based on Kepler.gl, has a more powerful table editor (see docs [here](https://docs.foursquare.com/analytics-products/docs/data)). We hope these features will be upstream back to Kepler.gl in the future.
However, using different AI Assistant tools, like query, standardizeVariable, etc., you can achieve the same goal of manipulating the data in the table. The limitation is that you can not directly edit the data in the table, but you can create a new dataset with the manipulated data.
```
Can you create a new variable called "HR60_Z" and assign the z-value of the variable HR60 to it?
```
### Variable properties
### Change variable properties
One of the most used initial transformations pertains to getting the data into the right format. Often, observation identifiers, such as the FIPS code used by the U.S. census, are recorded as character or string variables, not in a numeric format. In order to use these variables effectively, we need to convert them to a different format. For example:
```
Can you change the column NOSOUTH to integer type and save it in a new dataset?
```
:::info
The AI Assistant calls the `tableTool` to achieve the goal. You can click to expand the `tableTool` to see the details of the tool. This tool uses a SQL query and a in-memory duckdb database to manipulate the data in the table e.g. `SELECT _geojson, ..., CAST(NOSOUTH AS VARCHAR) AS NOSOUTH, ... FROM natregimes_geojson_123456`. The result arrow object is a duckdb table, which can be used to create a new dataset in Kepler.gl.
:::
### Other variable operations
The other variable operations, like add a variable, delete a variable or rename a variable, should also be supported via the `tableTool`.
## Calculator
The calculator functionality is to create a new variable with:
- special functions
- univariate and bivariate operations
- spatial lag
- rates
- data/time operations
Spatial Lag and Rates are advanced functions that are discussed separately in later chapters.
To illustrate the calculator functionality, we return to the Chicago community area sample data and load the commpopulation.csv file. This file only contains the population totals.
```
Can you load a dataset from https://geodacenter.github.io/data-and-lab/data/commpopulation.csv?
```
##### Special
The three Special functions are:
- **NORMAL**: generate random numbers with normal distribution
- **UNIFORM RANDOM**: generate random numbers with uniform distribution
- **ENUMERATE**: generate a sequence of numbers, which is especially useful to retain the order of observations after sorting on a given variable
For example:
```
Can you create a new variable called "RANDOM" and assign random numbers with normal distribution to it?
```
> As you can see from the screenshot, the AI Assistant tries to use `tableTool` to add a new column "RANDOM" using the Box-Muller transform with SQL query: `SELECT community, NID, POP2010, POP2000, (sqrt(-2 * log(random())) * cos(2 * pi() * random())) AS RANDOM FROM commpopulation_246810)`.
:::note
AI Assistant can make mistakes by trying to generate complex SQL query to add variable. One way to improve the result is to add SQL examples with your prompt, e.g. `can you create a variable using [random()](https://duckdb.org/docs/stable/sql/functions/numeric.html#random) function?`
:::
##### Univariate
In Kepler.gl AI Assistant, there are six straightforward univariate transformations:
- **NEGATIVE**: changing the sign
- **INVERSE**: taking the inverse
- **SQUARE ROOT**: taking the square root
- **LOG (base 10/e)**: carrying out a log transformation
- **ASSIGN**: assign a new variable to be set equal to any other variable, or to a constant (the typical use)
- **SHUFFLE**: shuffle the values of a variable, which is an efficient way to implement spatial randomness, i.e., an allocation of values to locations, but where the location itself does not matter (any location is equally likely to receive a given observation value).
For example:
```
Can you create a new variable called "POP2010_INV" and assign the inverse of the variable POP2010 to it?
```
Since the `tableTool` uses DuckDB to manipulate the data, it can support more univariate transformations. For example, you can use functions like pow(), sqrt(), abs() etc., to transform the variable. For more details, you can refer to the [DuckDB documentation](https://duckdb.org/docs/stable/sql/functions/numeric).
##### Variable Standardization
The univariate operations also include five types of variable standardization:
- **STANDARDIZED (Z)**
- **DEVIATION FROM MEAN**
- **STANDARDIZED (MAD)**
- **RANGE ADJUST**
- **RANGE STANDARDIZED**
The most commonly used is undoubtedly **STANDARDIZED (Z)**. This converts the specified variable such that its mean is zero and variance one, i.e., it creates a z-value as
$$
z = \frac{x - \mu}{\sigma}
$$
where $x$ is the original variable, $\mu$ is the mean, and $\sigma$ is the standard deviation.
```
Can you apply standardization (Z-score) to the variable POP2010?
```
A subset of this standardization is **DEVIATION FROM MEAN**, which only computes the numerator of the z-transformation.
An alternative standardization is **STANDARDIZED (MAD)**, which uses the mean absolute deviation (MAD) as the denominator in the standardization. This is preferred in some of the clustering literature, since it diminishes the effect of outliers on the standard deviation (see, for example, the illustration in Kaufman and Rousseeuw 2005, 8–9). The mean absolute deviation for a variable $x$ is computed as:
$$
mad = \frac{1}{n} \sum_{i} |x_i - \bar{x}|,
$$
i.e., the average of the absolute deviations between an observation and the mean for that variable. The estimate for mad takes the place of $\sigma(x)$ in the denominator of the standardization expression.
```
Can you apply STANDARDIZED (MAD) to the variable POP2010?
```
Two additional transformations that are based on the range of the observations, i.e., the difference between the maximum and minimum. These are the **RANGE ADJUST** and the **RANGE STANDARDIZE**.
RANGE ADJUST divides each value by the range of observations:
$$
r_a = \frac{x_i - x_{max}}{x_{max} - x_{min}}
$$
While RANGE ADJUST simply rescales observations in function of their range, RANGE STANDARDIZE turns them into a value between zero (for the minimum) and one (for the maximum):
$$
r_s = \frac{x_i - x_{min}}{x_{max} - x_{min}}
$$
In original GeoDa lab, the standardization is limited to one variable at a time, which is not very efficient. However, with the AI Assistant, you can apply the standardization to multiple variables at once in Kepler.gl.
```
Can you apply standardization (Z-score) to the variables POP2010 and POP2000?
```
##### Bivariate or Multivariate
The bivariate functionality includes all classic algebraic operations. For example, to compute the population change for the Chicago community areas between 2010 and 2000, you can create a new variable `POPCH = POP2010 - POP2000`:
```
Can you create a new variable POPCH = POP2010 - POP2000?
```
:::tip
Since the AI Assistant can use SQL query to manipulate the data, you can also use it to create a new variable with multiple variables and operations. One example is the **NORMAL** function in the previous example: `SELECT community, NID, POP2010, POP2000, (sqrt(-2 * log(random())) * cos(2 * pi() * random())) AS RANDOM FROM commpopulation_246810)`.
:::
##### Date and time
To illustrate these operations, we will use the SanFran Crime data set from the sample collection, which is one of the few sample data sets that contains a date stamp.
We load the sf_cartheft dataset from the Crime Events subdirectory of the sample data set. This data set contains the locations of 3384 car thefts in San Francisco between July and December 2012.
```
Can you create a map layer from https://geodacenter.github.io/data-and-lab/data/SFcartheft_july12.geojson?
```
We bring up the data table and note the variable Date in the seventh column. We can ask the AI Assistant to create a new variable called "YEAR" and assign the year of the Date to it.
```
Can you create a new variable called "YEAR" and assign the year of the Date to it?
```
:::note
You will see the AI assistant tried to call tableTools several times to complete the task. If the tool returns error, the AI assistant will try to fix it and recall the tool. The best practice is providing some extra information or example with your prompt e.g. please use date_part() function.
:::
## Merging tables
An important operation on tables is the ability to Merge new variables into an existing data set. We illustrate this with the Chicago community area population data.
First load the chicago_commpop.geojson file to create a polygon layer.
```
Can you create a map layer from https://geodacenter.github.io/data-and-lab/data/chicago_commpop.geojson?
```
A number of important parameters need to be selected. First is the datasource from which the data will be merged. In our example, we have chosen commpopulation.csv. Even though this contains the same information as we already have, we select it to illustrate the principles behind the merging operation.
```
Can you load a dataset from https://geodacenter.github.io/data-and-lab/data/commpopulation.csv?
```
There are two ways to merge two datasets: horizontal merge and vertical merge. The default method is Merge horizontally, but Stack (vertically) is supported as well. The latter operation is used to add observations to an existing data set.
Best practice to carry out a merging operation is to select a key, i.e., a variable that contains (numeric) values that match the observations in both data sets.
```
Can you merge the table commpopulation.csv to chicago_commpop.geojson using NID as key?
```
Since we are using SQL to merge the two datasets, the key column is required to merge horizontally.
If you want to specify which columns you want to merge, you can mention them in the prompt:
```
Can you merge the table commpopulation.csv to chicago_commpop.geojson using NID as key and merge the column 'community'?
## Queries
With the AI Assistant, you can easily query the dataset by just prompting.
Load the sf_cartheft.geojson file to create a point layer.
```
Can you create a map layer from https://geodacenter.github.io/data-and-lab/data/sf_cartheft.geojson?
```
Then, you can query the dataset by just prompting.
```
Can you query the sf_cartheft dataset in October?
```
================================================
FILE: docs/table-of-contents.json
================================================
{
"id": "table-of-contents",
"chapters": [
{
"title": "User Guides",
"chapters": [
{
"title": "Overview",
"entries": [
{"entry": "docs"},
{"entry": "docs/user-guides/a-introduction"},
{"entry": "docs/user-guides/b-kepler-gl-workflow/a-add-data-to-the-map"},
{"entry": "docs/user-guides/c-types-of-layers"},
{"entry": "docs/user-guides/d-layer-attributes"},
{"entry": "docs/user-guides/e-filters"},
{"entry": "docs/user-guides/f-map-styles"},
{"entry": "docs/user-guides/g-interactions"},
{"entry": "docs/user-guides/h-playback"},
{"entry": "docs/user-guides/i-FAQ"},
{"entry": "docs/user-guides/j-get-started"},
{"entry": "docs/user-guides/k-save-and-export"},
{"entry": "docs/user-guides/l-color-attributes"},
{"entry": "docs/user-guides/m-map-settings"}
]
},
{
"title": "Workflow",
"entries": [
{"entry": "docs/user-guides/b-kepler-gl-workflow/b-add-data-layers/a-adding-data-layers"},
{"entry": "docs/user-guides/b-kepler-gl-workflow/b-add-data-layers/b-create-a-layer"},
{"entry": "docs/user-guides/b-kepler-gl-workflow/b-add-data-layers/c-hide-edit-and-delete-layers"},
{"entry": "docs/user-guides/b-kepler-gl-workflow/b-add-data-layers/d-blend-and-rearrange-layers"}
]
},
{
"title": "Layer Types",
"entries": [
{"entry": "docs/user-guides/c-types-of-layers/a-point"},
{"entry": "docs/user-guides/c-types-of-layers/b-arc"},
{"entry": "docs/user-guides/c-types-of-layers/c-line"},
{"entry": "docs/user-guides/c-types-of-layers/d-grid"},
{"entry": "docs/user-guides/c-types-of-layers/e-polygon"},
{"entry": "docs/user-guides/c-types-of-layers/f-cluster"},
{"entry": "docs/user-guides/c-types-of-layers/g-icon"},
{"entry": "docs/user-guides/c-types-of-layers/h-hexbin"},
{"entry": "docs/user-guides/c-types-of-layers/i-heatmap"},
{"entry": "docs/user-guides/c-types-of-layers/j-h3"},
{"entry": "docs/user-guides/c-types-of-layers/k.trip"}
]
}
]
},
{
"title": "API Reference",
"chapters": [
{
"title": "Overview",
"entries": [
{"entry": "docs/api-reference/overview"}
]
},
{
"title": "Actions",
"entries": [
{"entry": "docs/api-reference/actions/overview"},
{"entry": "docs/api-reference/actions/actions"}
]
},
{
"title": "Components",
"entries": [
{"entry": "docs/api-reference/components/overview"}
]
},
{
"title": "Processors",
"entries": [
{"entry": "docs/api-reference/processors/overview"},
{"entry": "docs/api-reference/processors/processors"}
]
},
{
"title": "Reducers",
"entries": [
{"entry": "docs/api-reference/reducers/overview"},
{"entry": "docs/api-reference/reducers/combine"},
{"entry": "docs/api-reference/reducers/map-state"},
{"entry": "docs/api-reference/reducers/map-style"},
{"entry": "docs/api-reference/reducers/reducers"},
{"entry": "docs/api-reference/reducers/ui-state"},
{"entry": "docs/api-reference/reducers/vis-state"}
]
},
{
"title": "Schemas",
"entries": [
{"entry": "docs/api-reference/schemas/overview"}
]
},
{
"title": "Advanced Usage",
"entries": [
{"entry": "docs/api-reference/advanced-usages/custom-initial-state"},
{"entry": "docs/api-reference/advanced-usages/custom-mapbox-host"},
{"entry": "docs/api-reference/advanced-usages/forward-actions"},
{"entry": "docs/api-reference/advanced-usages/reducer-plugin"},
{"entry": "docs/api-reference/advanced-usages/replace-ui-component"},
{"entry": "docs/api-reference/advanced-usages/saving-loading-w-schema"},
{"entry": "docs/api-reference/advanced-usages/using-updaters"}
]
}
]
},
{
"title": "kepler.gl-jupyter",
"entries": [
{"entry": "docs/keplergl-jupyter/user-guide"}
]
}
]
}
================================================
FILE: docs/user-guides/README.md
================================================
# User guides
Kepler.gl is designed for geospatial data analysis. It allows technical and non-technical audiences to visualize trends in a city or region. With Kepler.gl, you can…
Visualize a large amount of location data in your browser.
Playback geo-temporal trends over time.
Explore, filter, and deeply engage with location data to gain insight
See the sample maps in the demo app for more examples.

This guide will teach you how to perform data analysis in Kepler.gl by adding data to a map, creating layers, adding filters, and more.
## Table of contents:
#### [Get Started](./j-get-started.md)
#### [The kepler.gl workflow](./b-kepler-gl-workflow/README.md)
* [Add data to the map](./b-kepler-gl-workflow/a-add-data-to-the-map.md)
* [Adding data layers](./b-kepler-gl-workflow/b-add-data-layers/a-adding-data-layers.md)
* [Create a layer](./b-kepler-gl-workflow/b-add-data-layers/b-create-a-layer.md)
* [Hide, edit and delete layers](./b-kepler-gl-workflow/b-add-data-layers/c-hide-edit-and-delete-layers.md)
* [Blend and rearrange layers](./b-kepler-gl-workflow/b-add-data-layers/d-blend-and-rearrange-layers.md)
#### [Layers](./c-types-of-layers/README.md)
* [Point](./c-types-of-layers/a-point.md)
* [Arc](./c-types-of-layers/b-arc.md)
* [Line](./c-types-of-layers/c-line.md)
* [Grid](./c-types-of-layers/d-grid.md)
* [Polygon](./c-types-of-layers/e-polygon.md)
* [Cluster](./c-types-of-layers/f-cluster.md)
* [Icon](./c-types-of-layers/g-icon.md)
* [Hexbin](./c-types-of-layers/h-hexbin.md)
* [Heatmap](./c-types-of-layers/i-heatmap.md)
* [H3](./c-types-of-layers/j-h3.md)
* [Trip](./c-types-of-layers/k-trip.md)
* [S2](./c-types-of-layers/l-s2.md)
* [Vector Tile Layer](./c-types-of-layers/m-vector-tile-layer.md)
* [Raster Tile Layer](./c-types-of-layers/n-raster-tile-layer.md)
* [WMS Layer](./c-types-of-layers/o-wms-layer.md)
#### [Layer attributes](./d-layer-attributes.md)
#### [Color Palettes](./l-color-attributes.md)
#### [Filters](./e-filters.md)
#### [Map styles](./f-map-styles.md#map-styles.md)
* [Base map styles](./f-map-styles.md#base-map-styles.md)
* [Map layers](./f-map-styles.md#map-layers.md)
* [Custom styles](./f-map-styles.md#custom-styles.md)
#### [Interactions](./g-interactions.md)
* [Tooltips](./g-interactions.md#tooltips)
* [Brushing](./g-interactions.md#brushing)
* [Display Coordinates](./g-interactions.md#display-coordinates)
#### [Map Settings](./m-map-settings.md)
* [View maps in 3d](./m-map-settings.md#view-maps-in-3d)
* [Display legend](./m-map-settings.md#display-legend)
* [Split maps](./m-map-settings.md#split-maps)
#### [SQL Data Explorer](./sql-data-explorer.md)
#### [AI Assistant](./ai-assistant.md)
#### [Time playback](./h-playback.md)
#### [Save and export](./k-save-and-export.md)
#### [FAQ](./i-FAQ.md)
================================================
FILE: docs/user-guides/ai-assistant.md
================================================
# AI Assistant
> Note: This feature is currently undergoing development. Stay tuned for updates!
The AI assistant in Kepler.gl is not only a LLM based chatbot, it is engineered to help users with creating maps and analyzing their spatial data. The AI assistant provides a new way that allows users to interact with the data and the map in a more natural and creative way.

Your conversations can be advanced: `Create a geojson layer using population with quantile color scale and update its colors inspired by Van Gogh's Starry Night`. Or: `Check the correlation between temperature and precipitation in the dataset`.
## Supported Providers
The following providers and models are currently supported.
> Note: we are working on feature to allow users specify their own providers, models and base URL.
| **Provider** | **Models** |
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| **OpenAI** | `gpt-4o`, `gpt-4o-mini`, `gpt-3.5-turbo`, `gpt-3.5-turbo-0125`, `o1-mini`, `o1-preview` |
| **Google** | `gemini-2.0-flash-exp`, `gemini-1.5-flash`, `gemini-1.5-pro`, `gemini-1.0-pro` |
| **Ollama** (local) | `deepseek-r1`, `phi4`, `phi3.5`, `qwen2.5-coder`, `qwen2`, `qawa`, `llava`, `mistral`, `gemma2`, `llama3.3`, `llama3.2`, `llama3.1`, `llama3.1:70b` |
| **DeepSeek** | `deepseek-chat`, `deepseek-reasoner` |
## Parameters
Before initating the AI assistant, the following parameters are required. A temperature and Top P are selected for you; however, you will need to provide an API key for a remote model, and a base URL for local models.
| **Parameter** | **Description** |
| --------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| **Temperature** | Controls the randomness of the model's output. Range: `0-2`, Default: `1`. Lower values make responses more focused and deterministic. |
| **Top P** | Controls the diversity of the output by limiting the cumulative probability of token selection. Range: `0-1`, Default: `0.8`. |
| **API Key** | Required for OpenAI (`gpt` models) and Google (`gemini` models). |
| **Base URL** | Required for Ollama (`localhost:11434` or another specified base URL). |
## Built-in Features
- Take screenshot to ask [[Demo]](https://geoda.ai/img/highlight-screenshot.mp4)
- Talk to ask [[Demo]](https://geoda.ai/img/highlight-ai-talk.mp4)
### Take a Screenshot to Ask
This feature enables users to capture a screenshot anywhere within kepler.gl application and ask questions about the screenshot.
For example, users can take a screenshot of the map (or partial of the map) and ask questions about the map e.g. _`how many counties are in this screenshot`_, or take a screenshot of the layer configuration panel and ask questions about how to use it, e.g. _`How can I adjust the opacity`_. Users can even take a screenshot of the plots in the chat panel and ask questions about the plots e.g. _`Can you give me a summary of the plot?`_.

#### How to use this feature?
1. Click the "Screenshot to Ask" button in the chat interface
2. A semi-transparent overlay will appear
3. Click and drag to select the area you want to capture
4. Release to complete the capture
5. The screenshot will be displayed in the chat interface
6. You can click the x button on the top right corner of the screenshot to delete the screenshot
### Talk to Ask
This feature enables users to "talk" to the AI assistant. After clicking the "Talk to Ask" button, users can start talking using microphone. When clicking the same button again, the AI assistant will stop listening and send the transcript to the input box.
When using the voice-to-text feature for the first time, users will be prompted to grant microphone access. The browser will display a permission dialog that looks like this:

After granting access, users can start talking to the AI assistant.
> Note: for OpenAI, the whisper model is used to transcribe the audio. Google's gemini models are multimodal models, so the audio-to-text feature is supported by default.
## Map and Data Analysis Assistant
Using LLM function tools, kepler.gl's AI assistant can help transform users's prompt into actions that executed inside kepler.gl. This allows users to interact with kepler.gl in a more natural and creative way.
### Why use LLM function tools?
Function calling enables the AI Assistant to perform specialized tasks that LLMs cannot handle directly, such as complex calculations, data analysis, visualization generation, and integration with external services. This allows the assistant to execute specific operations within kepler.gl while maintaining natural language interaction with users.
### Is my data secure?
Yes, the data you used in kepler.gl stays within the browser, and will **never** be sent to the LLM. Using function tools, we can engineer the AI assistant to use only the meta data for function calling, e.g. the name of the dataset, the name of the layer, the name of the variables, etc. Here is a process diagram to show how the AI assistant works:

### Actions available to use
The current supported actions are:
- System:
- Show dataset/layer/variable info.
- Load data from url.
- Change the basemap style.
- Mapping and Data Analysis:
- Create map layer from variable.
- Query the data using SQL (coming soon)
- Classify the data of a variable.
- Quantile / Natural (Jenks) Breaks / Percentile / Box / Standard Deviation
- Plots
- Create histogram.
- Create scatter plot with regression line.
- Spatial Analysis:
- Spatial join two datasets (e.g. count points and polygons).
> Note: to see our plan to add more actions to the AI assistant, please check out this [Kepler.gl RFC](<[https://github.com/kepler-gl/kepler.gl/issues/4689](https://github.com/keplergl/kepler.gl/discussions/2843)>) and the [integration of GeoDa with Kepler.gl](<[text](https://github.com/GeoDaCenter/openassistant/wiki/Integration-Kepler.gl---GeoDaLib)>)
Users can simply describe what they want to accomplish in plain text, and the AI Assistant will invoke the appropriate function with the correct parameters that your application can execute. The LLM will identify if the question can be answered by using one or multiple function tools, and the LLM will ask the user to confirm the parameters of each function call.
> _Can you classify the data of the variable "population" using natural breaks and create a geojson layer using the breaks with colors inspired by Van Gogh's Starry Night._
#### Plots
The plots created by the AI assistant are interactive, and can be used to explore the data.
In each plot, there is a small toolbar on the top right corner, which contains three buttons:
- **Box Select**: Select the data in the plot.
- **Keep Selection**: Keep the selected data in the plot.
- **Clear Selection**: Clear the selected data in the plot.
One can click the **Box Select** button first. Then, start selecting the data in the plot by left clicking the mouse and dragging the mouse to select the data. The selected data will be highlighted in the plot and also be highlighted in the map.
##### Scatter Plot
For scatter plot, the AI assistant will create a scatter plot with a regression line by default. If users select points in the plot, there will be 3 different regression lines created: one for all points, one for the selected points, and one for the unselected points.
If users click the 'expand' button on the top right corner of the plot, the plot will be expanded to a floating modal dialog with more details of the regressions shown in a tablt.
The regression details include:
- R-squared
- Slope
- Intercept
- P-value
- Standard Error
- Chow test for selected and unselected regression lines
This scatter plot can help users to explore the relationship between two variables, and explore the heterogeneity of the data by selecting different points.

================================================
FILE: docs/user-guides/b-kepler-gl-workflow/README.md
================================================
# Kepler.gl workflow
## Table of contents
* [Add data to the map](./a-add-data-to-the-map.md)
* [Adding data layers](./b-add-data-layers/a-adding-data-layers.md)
* [Create a layer](./b-add-data-layers/b-create-a-layer.md)
* [Hide, edit and delete layers](./b-add-data-layers/c-hide-edit-and-delete-layers.md)
* [Blend and rearrange layers](./b-add-data-layers/d-blend-and-rearrange-layers.md)
[Back to table of contents](../README.md)
================================================
FILE: docs/user-guides/b-kepler-gl-workflow/a-add-data-to-the-map.md
================================================
# Add Data to the Map
## Ways to Add Data
- Open kepler.gl/demo. You should see the following prompt:

**kepler.gl is a pure client side app. Data lives only in your machine/browser. No information or maps is sent back up to our server.**
- Choose one of three ways to add data to your map
| | |
|---|---|
| **Local files** | Upload CSV / GeoJSON files. Because data is only stored in your browser, there is a **250mb** limit on how much data Chrome allows you to upload into a browser. For datasets larger than **250mb** you should directly load them from a remote URL. See below. |
| **From URL** | Directly load data or map json by pasting a remote URL. You can link it to CSV | JSON | Kepler.gl config json. Make sure the url contains the file extension. CORS policy must be defined on your custom url domain. |
| **Sample data** | Load one of kepler.gl’s sample datasets. The sample map data and config are directly loaded from [kepler.gl-data github][kepler.gl-data-github] repo |
## Supported Projection Coordinate System
kepler.gl only supports **[Web Mercator]([https://en.wikipedia.org/wiki/Web_Mercator_projection) EPSG:3857 -- WGS84**.
Geometry coordinates should be presented with a geographic coordinate reference system, using the WGS84 datum, and with longitude and latitude units of decimal degrees.
## Supported File Formats
- [CSV](#csv)
- [GeoJSON](#geojson)
- [GeoArrow](#geoarrow)
- [kepler.gl Json](#keplergl-json)
### CSV
CSV file should contain header row and multiple columns. Each row should be 1 feature. Each column should contain only 1 data type, based on which kepler.gl will use to create layers and filters.
| id | point_latitude | point_longitude | value | start_time
|---|---|---|---|---
| a | 31.2384 | -127.30948 | 5 | 2019-08-01 12:00
| b | 31.2311 | -127.30231 | 11 | 2019-08-01 12:05
| c | 31.2334 | -127.30238 | 9 | 2019-08-01 11:55
#### 1. Data type detection
Because CSV file content is uploaded as strings, kepler.gl will attempt to detect column data type by parsing a sample of data in each column. kepler.gl can detect
| type | data
|---|---
|**_`boolean`_** | `True`, `False`|
|**_`date`_** | `2019-01-01`|
|**_`geojson`_** | **WKT string:** `POLYGON ((-74.158 40.835, -74.148 40.830, -74.151 40.832, -74.158 40.835))`, **or GeoJson String** `{"type":"Polygon","coordinates":[[[-74.158,40.835],[-74.157,40.839],[-74.148,40.830],[-74.150,40.833],[-74.151,40.832],[-74.158,40.835]]]}` |
|**_`integer`_** | `1`, `2`, `3`|
|**_`real`_** | `-74.158`, `40.832`|
|**_`string`_** | `hello`, `world` |
|**_`timestamp`_** | `2018-09-01 00:00`, `1570306147`, `1570306147000`|
**Note:** Make sure to clean up values such as `N/A`, `Null`, `\N`. If your column contains mixed type, kepler.gl will treat it as **_`string`_** to be safe.
#### 2. Layer detection based on column names
kepler.gl will auto detect layer, if the column names follows certain naming convention. kepler.gl creates a point layer if your CSV has columns that are named `_lat` and `_lng` or `_latitude` and `_longitude`, or `_lat` and `_lon`.
| layer | auto create layer from column names
|---|---
|**Point** | Point layer names have to be in pairs, and **ends with** `lat, lng`; `latitude, longitude`; `lat, lon`|
|**Arc**| If two points layers are detected, one arc layer will be created |
|**Icon**| A column named `icon` is present|
|**H3**| A column named `h3_id` or `hexagon_id` is present |
|**Polygon**| A column content contains `geojson` data types. Acceptable formats include [Well-Known Text](http://www.postgis.net/docs/ST_AsText.html) e.g. `POLYGON ((-74.158 40.835, -74.148 40.830, -74.151 40.832, -74.158 40.835))` and [GeoJSON Geometry](https://tools.ietf.org/html/rfc7946#appendix-A). e.g. `{"type":"LineString","coordinates":[[100.0, 0.0],[101.0, 1.0]]}`
#### 3. Embed Geometries in CSV
Geometries (Polygons, Points, LindStrings etc) can be embedded into CSV as a `GeoJSON` or `WKT` formatted string.
##### `GeoJSON` String
Use the geometry of a Feature, which includes type and coordinates. It should be a JSON formatted string, with the `"` corrected escaped. More info on [String escape in csv](https://gpdb.docs.pivotal.io/43250/admin_guide/load/topics/g-escaping-in-csv-formatted-files.html)
Example data.csv with GeoJSON
```txt
id,geometry
1,"{""type"":""Polygon"",""coordinates"":[[[-74.158491,40.835947],[-74.157914,40.83902]]]}"
```
##### `WKT`String
[The Well-Known Text (WKT)](https://dev.mysql.com/doc/refman/5.7/en/gis-data-formats.html#gis-wkt-format) representation of geometry values is designed for exchanging geometry data in ASCII form.
Example data.csv with WKT
```txt
id,geometry
1,"POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))"
```
### GeoJSON
#### 1. Feature types
- kepler.gl accepts GeoJSON formatted JSON that contains a single [Feature](https://tools.ietf.org/html/rfc7946#section-3.2) object or a [FeatureCollection](https://tools.ietf.org/html/rfc7946#section-3.3) object. kepler.gl creates one **`Polygon`** layer per GeoJSON file.
- A single GeoJSON Feature:
```json
{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[-10.0, -10.0],
[10.0, -10.0],
[10.0, 10.0],
[-10.0, -10.0]
]
]
},
"properties": {
"name": "foo"
}
}
```
- GeoJSON Feature Collection.
```json
{
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [102.0, 0.5]
},
"properties": {
"prop0": "value0"
}
}, {
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[102.0, 0.0],
[103.0, 1.0],
[104.0, 0.0],
[105.0, 1.0]
]
},
"properties": {
"prop0": "value0"
}
}]
}
```
kepler.gl will render all features in one `Polygon` layer even though they have different geometry types. Acceptable geometry types are
- [Point](https://tools.ietf.org/html/rfc7946#section-3.1.2)
- [MultiPoint](https://tools.ietf.org/html/rfc7946#section-3.1.3)
- [LineString](https://tools.ietf.org/html/rfc7946#section-3.1.4)
- [MultiLineString](https://tools.ietf.org/html/rfc7946#section-3.1.5)
- [Polygon](https://tools.ietf.org/html/rfc7946#section-3.1.6)
- [MultiPolygon](https://tools.ietf.org/html/rfc7946#section-3.1.7).
Feature properties will be parsed as columns. You can apply color, filters based on them.
#### 2. Auto styling
kepler.gl will read styles from GeoJSON files. If you are a GeoJSON expert, you can add style declarations to feature properties. kepler.gl will use the declarations to automatically style your feature. The acceptable style properties are:
```json
"properties": {
"lineColor": [130, 154, 227],
"lineWidth": 0.5,
"fillColor": [255, 0, 0],
"radius": 1 // Point
}
```
- See an example below:
```json
{
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[-105.1547889, 39.9862516],
[-105.1547167, 39.9862691]
]
},
"properties": {
"id": "a1398a11-d1ce-421c-bf66-a456ff525de9",
"lineColor": [130, 154, 227],
"lineWidth": 0.1
}
}]
}
```
### GeoArrow
[GeoArrow](https://geoarrow.org/) file, a binary data format which can be visualized with the [PolygonLayer](https://docs.kepler.gl/docs/user-guides/c-types-of-layers/e-polygon).
### kepler.gl JSON
JSON file exported from kepler.gl. See "[Export Map as JSON](https://docs.kepler.gl/docs/user-guides/k-save-and-export#export-map-as-json)".
### Load Map Using URL
You load data or map through custom URL. It currently supports URLs with file extension of `csv`, `json` and `kepler.gl.json`
In addition, this also by-passes 250mb file upload size limit which allows you to upload larger file to Kepler.

### Use Kepler.gl’s Sample Maps
The sample maps are a great option for new users to explore Kepler.gl and get a feel for how it works.
1. At the initial load prompt select “Try sample data” in the top right corner.

2. Choose from the options to load the sample map and explore the configurations applied.

### Add multiple datasets
To add additional datasets to your map:
1. Click __Add More Data__ in the top right corner.

2. Choose one of the options above: upload a JSON/CSV file, or use Kepler.gl’s sample data.
3. Repeat as needed. There is no limit on the number of datasets you can add. However, adding too many might cause its performance to suffer.
[Back to table of contents](../README.md)
[kepler.gl-data-github]: https://github.com/keplergl/kepler.gl-data
================================================
FILE: docs/user-guides/b-kepler-gl-workflow/b-add-data-layers/a-adding-data-layers.md
================================================
# Adding Data Layers
The term "Layer" refers to a layer of data visualization. For example, you might add a point layer to visualize all the instances where taxi trips began, as in the map of New York City below.

Each blue dot represents the point (latitude and longitude). Layers work like paint—you can build up multiple layers to change the appearance of the canvas. You might create a second point layer to show trip drop-off locations. The map then looks like this:

Learn more about the [types of layers](../../c-types-of-layers/README.md) available in Kepler.gl.
[Back to table of contents](../../README.md)
================================================
FILE: docs/user-guides/b-kepler-gl-workflow/b-add-data-layers/b-create-a-layer.md
================================================
# Create a Layer
1. Click the Data Layers icon in the left navigation bar.

2. The Layers panel displays a list of existing layers and the name of the dataset the layers belong to (Sample Trip Data, in the example below). To create a new layer, click __Add Layer__ at the bottom of the menu.

3. If your map contains multiple datasets, you’ll be asked to select the data source for your new layer.

4. Select a layer type. Read about the different [types of layers].

5. Fill in the required columns and adjust the optional settings if desired.
6. Collapse the layer settings menu when finished.
[Back to table of contents](../../README.md)
================================================
FILE: docs/user-guides/b-kepler-gl-workflow/b-add-data-layers/c-hide-edit-and-delete-layers.md
================================================
# Hide, Edit and Delete Layers
Each layer has its own tab in the __Data Layers__ menu:

Click the __down arrow__ to open up the settings menu for that layer. Click the __trashcan__ to delete a layer. Click the __eye__ to toggle show/hide.
__Note__: The colored line on the left of each layer tab represents what dataset that layer belongs to.
[Back to table of contents](../../README.md)
================================================
FILE: docs/user-guides/b-kepler-gl-workflow/b-add-data-layers/d-blend-and-rearrange-layers.md
================================================
# Blend and Rearrange Layers
Rearrange layers by dragging and dropping them in the Layers panel. The layers at the top of the list will be displayed in the foreground of the map.
Blend layers by selecting an option from the dropdown at the bottom of the Layers panel.
There are three different ways to blend layers: Normal, Additive, and Subtractive.
## Normal Blending
Normal layer blending does not alter the color values of overlapping data points.

## Additive Blending
Additive blending adds the color values for overlapping data points. It makes layers, and particularly areas of high density, easier to visualize on a dark-colored map.

## Subtractive Blending
Subtractive layer blending does not alter the color values of overlapping data points.

[Back to table of contents](../../README.md)
================================================
FILE: docs/user-guides/c-types-of-layers/README.md
================================================
# Types of Layers
## Single Feature Layers
Single feature layers render 1 feature
## Point

Point layers draw points for a given event or object based on its location - latitude and longitude.
## Arc

Arc layers draw an arc between two points. They’re useful for visualizing the distance between two points as well as comparing distances in 3D. Note that arc layers don’t show routes between points, but simply the distance between the two points. The tallest arc represents the greatest distance.
To draw arcs, your dataset must contain the latitude and longitude of two different points for each arc.
Layer Attributes: Color/ Color Based On, Opacity, Stroke Width/ Stroke Based On, High Precision Rendering
## Line

Line layers are the 2D version of arc layers. Both draw a line between two points to represent distance, but in a line layer, the drawing lies flat on the map.
Layer Attributes: Color, Stroke, High Precision Rendering
## Hexbin

Hexbin aggregates points into hexagons. The counts can be represented through color and/or height.
Layer Attributes: Color/ Color Based On, Filter by Count Percentile, Opacity, Hexagon Radius (km), Coverage (Radius), Enable Height, Elevation Scale/ Height Based On, High Precision Rendering
## Heatmap

Heatmap is a graphical representation of data in which data values are represented as colors.
Layer Attributes: Color, Opacity, Radius, Weight
## Cluster

Cluster layers visualize aggregated data based on a geospatial radius.
Layer Attributes: Color, Cluster Size
## Icon

Icon layers are a type of point layer. They allow you to differentiate between points by assigning icons to points based on a field. For example, you might use icons to differentiate between types of venues and points of interest.
Layer Attributes: Color, Radius, Label, High Precision Rendering
To see the icon menu, create a new icon layer and click how to draw an icon layer:

## Grid


Grids layers are similar to heatmaps. They show the density of points. They provide visual discrepancy in a map where multiple heatmap-style layers are present.
Layer Attributes: Color, Radius, Height, High Precision Rendering
## GeoJSON


GeoJSON layers can display either paths, polygons or points. For example, a path GeoJSON layer can display data like trip routes. A polygon GeoJSON layer is essentially a [choropleth](https://en.wikipedia.org/wiki/Choropleth_map) layer and works best for rendering geofences. To add a GeoJSON layer, your dataset must contain geometry data.
## H3

H3 layers visualize spatial data using [H3 Hexagonal Hierarchical Spatial Index](https://eng.uber.com/h3/).
To use H3 layer, you need a `hex_id` in your dataset, which can be generated using [h3-js](https://github.com/uber/h3-js) from latitude, longitude and resolution.
## S2 Layer

To use S2 layer, you need to assign a column containing S2 tokens.
## Vector Tile Layer

Vector Tile Layer makes it possible to visualize very large datasets through MVTs (Mapbox Vector Tiles). To optimize performance, the layer only loads and renders tiles containing features that are visible within the current viewport.
Supported URL templates:
- MVT (https://api.mapbox.com/v4/mapbox.mapbox-streets-v8/{z}/{x}/{y}.mvt?access_token=your-mapbox-acceess-token)
- pmtiles (https://your-cdn/filename.pmtiles)
For step-by-step instructions, see [Vector Tile Layer — How to add](./m-vector-tile-layer.md).
## Raster Tile Layer (experimental)

Raster layers are used to show satellite and aerial imagery. They allow you to work interactively directly with massive, image collections stored in .pmtiles (in raster format) or Cloud Optimized GeoTIFF format.
Supported URL templates:
- Users can reference remote **.pmtiles files in raster format** for raster layers by supplying a direct link to the file.
- **Cloud-Optimized GeoTIFFs (COG)** can also be used in raster layers by providing standardized Spatio-Temporal Asset Catalog (STAC) metadata.
- The metadata file must be a valid _STAC Item_ or _STAC Collection_, version 1.0.0 or higher.
- Raster data referenced in STAC assets should be Cloud-Optimized GeoTIFFs and need to be publicly accessible via HTTPS.
- STAC item and collections _must have Electro-Optical and Raster extensions_, and at least one asset must have both eo:bands and raster:bands information. common_name must be provided in eo:bands and data_type must be provided in raster:bands.
- To use COGs with STAC metadata, you must run your own raster tile server (e.g., TiTiler). Example implementation: [kepler-raster-server](https://github.com/igorDykhta/kepler-raster-server).
Examples of raster .pmtiles:
- Mount Whitney - https://pmtiles.io/usgs-mt-whitney-8-15-webp-512.pmtiles
- Swiss historical - https://public-bucket-for-tests.s3.us-east-1.amazonaws.com/historic-swis-18xx.pmtiles
Examples of supported STAC Items:
- Bangladesh rivers — https://4sq-studio-public.s3.us-west-2.amazonaws.com/sdk/examples/sample-data/raster/planet-skysat-opendata.json
- Antarctica ice — https://4sq-studio-public.s3.us-west-2.amazonaws.com/sdk/examples/sample-data/raster/sentinel-2-l2a.json
- Kiribati island — https://4sq-studio-public.s3.us-west-2.amazonaws.com/sdk/examples/sample-data/raster/stac-example.json
Examples of supported STAC Collections:
- sentinel-2-l1c — https://earth-search.aws.element84.com/v1/collections/sentinel-2-l1c
- modis-09A1-061 — https://planetarycomputer.microsoft.com/api/stac/v1/collections/modis-09A1-061
- landsat-c2-l1 — https://planetarycomputer.microsoft.com/api/stac/v1/collections/landsat-c2-l1
For step-by-step instructions, see [Raster Tile Layer — How to add](./n-raster-tile-layer.md).
## WMS Layer (experimental)

- Web Map Service (WMS) layers render raster tiles from OGC WMS servers.
- This feature is experimental and disabled by default. To try it, enable `enableWMSLayer: true` in the application configuration.
- When enabled, add a WMS service via the Tilesets modal by providing the service URL and selecting a named layer. Feature info on click is supported for queryable layers.
Examples of supported WMS Tiles:
- https://ows.terrestris.de/osm/service
- https://opengeo.ncep.noaa.gov/geoserver/conus/conus_cref_qcd/ows
- https://gibs.earthdata.nasa.gov/wms/epsg4326/best/wms.cgi
- https://geo.stadt-muenster.de/mapserv/starkregen_serv
For step-by-step instructions, see [WMS Layer — How to add](./o-wms-layer.md).
[Back to table of contents](../README.md)
================================================
FILE: docs/user-guides/c-types-of-layers/a-point.md
================================================
# Point

Point layers draw points for a given event or object.
__Layer Attributes__
- Basic
- Columns:
- Latitude
- Longitude
- Altitude (optional)
- Fill
- Enable fill - enabled by default
- Single color / color based on
- Color scale
- Opacity
- Outline
- Enable outline
- Single color / color based on
- Color scale
- Stroke width
- Radius
- Single radius / radius based on
- Fixed radius to meter
- Text,
- Font Size
- Font Color
- Text Anchor
[Back to table of contents](../README.md)
================================================
FILE: docs/user-guides/c-types-of-layers/b-arc.md
================================================
# Arc

Arc layers draw an arc between two points. They’re useful for visualizing the distance between two points as well as comparing distances in 3D. Note that arc layers don’t show routes between points, but simply the distance between the two points. The tallest arc represents the greatest distance.
To draw arcs, your dataset must contain the latitude and longitude of two different points for each arc.
[Back to table of contents](../README.md)
================================================
FILE: docs/user-guides/c-types-of-layers/c-line.md
================================================
# Line

Line layers are the 2D version of arc layers. Both draw a line between two points to represent distance, but in a line layer, the drawing lies flat on the map.
[Back to table of contents](../README.md)
================================================
FILE: docs/user-guides/c-types-of-layers/d-grid.md
================================================
# Grid


Grids layers are similar to heatmaps. They show the density of points. They provide visual discrepancy in a map where multiple heatmap-style layers are present.
[Back to table of contents](../README.md)
================================================
FILE: docs/user-guides/c-types-of-layers/e-polygon.md
================================================
# Polygon
Polygon layer can display all geometry types defined by [RFC 7946 (GeoJSON)](https://tools.ietf.org/html/rfc7946): `Point`, `LineString`, `Polygon`, `MultiPoint`, `MultiLineString`, `MultiPolygon`.
You can load a GeoJSON file (with a single [`Feature`](https://tools.ietf.org/html/rfc7946#section-3.2) or a [`FeatureCollection`](https://tools.ietf.org/html/rfc7946#section-3.3)) or a GeoArrow file.




A path GeoJSON layer can display data like trip routes or contours. Stroke color can be set with a numerical field.
A polygon GeoJSON layer is essentially a [choropleth](https://en.wikipedia.org/wiki/Choropleth_map) layer and works best for rendering geofences. Fill color or height can be set with a numerical field. For example, it can display population by census tracts.
To add a polygon layer, your dataset must contain geometry data.
[Back to table of contents](../README.md)
================================================
FILE: docs/user-guides/c-types-of-layers/f-cluster.md
================================================
# Cluster

Cluster layers visualize aggregated data based on a geospatial radius.
[Back to table of contents](../README.md)
================================================
FILE: docs/user-guides/c-types-of-layers/g-icon.md
================================================
# Icon

Icon layers are a type of point layer. They allow you to differentiate between points by assigning icons to points based on a field. For example, you might use icons to differentiate between types of venues and points of interest.
To see the icon menu, create a new icon layer and click how to draw an icon layer:

[Back to table of contents](../README.md)
================================================
FILE: docs/user-guides/c-types-of-layers/h-hexbin.md
================================================
# Hexbin

Hexbin layers are similar to grid layers. They display distributions of aggregate metrics such as point count within each hexbin, average/max/min/median/sum of a numerical field, or mode/unique count of a string field. Both the color and height dimensions can encode data. Users can adjust the hexagon radius and the space between hexbins.
[Back to table of contents](../README.md)
================================================
FILE: docs/user-guides/c-types-of-layers/i-heatmap.md
================================================
# Heatmap

Heatmap layers describe the intensity of data at geographical points through a colored overlap. The intensity can be weighted by a numerical field.
[Back to table of contents](../README.md)
================================================
FILE: docs/user-guides/c-types-of-layers/j-h3.md
================================================
# H3

H3 layers visualize spatial data using [H3 Hexagonal Hierarchical Spatial Index](https://eng.uber.com/h3/).
To use H3 layer, you need a `hex_id` or `hexagon_id` in your dataset, which can be generated using [h3-js](https://github.com/uber/h3-js) from latitude, longitude and resolution.
### Naming Convention
kepler.gl __auto generates__ H3 layer from column: `hex_id`, `hexagon_id`
### Sample dataset:
hex_id | value |
|----------|:------:|
89283082c2fffff | 64 |
8928308288fffff | 73 |
89283082c07ffff | 65 |
89283082817ffff | 74 |
89283082c3bffff | 66 |
89283082883ffff | 76 |
[Back to table of contents](../README.md)
================================================
FILE: docs/user-guides/c-types-of-layers/k-trip.md
================================================
# Trip layer
Trip layer can display animated path.

### How to use trip layer to animate path
**Data format**
Currently trip layer support a special `geoJSON` format where the coordinate `linestring` has a 4th element denoting timestamp.
In order to animate the path, the `geoJSON` data needs to contain `LineString` in its features' geometry, and the coordinates in the `LineString` need to have 4 elements in the format of `[longitude, latitude, altitude, timestamp]`, with the last element being a timestamp. Valid timestamp formats include unix in seconds such as `1564184363` or in milliseconds such as `1564184363000`.
**Sample data**
```
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"vendor": "A"
},
"geometry": {
"type": "LineString",
"coordinates": [
[-74.20986, 40.81773, 0, 1564184363],
[-74.20987, 40.81765, 0, 1564184396],
[-74.20998, 40.81746, 0, 1564184409]
]
}
}
]
}
```
**Note** Support for more data formats such as csv will be added in future releases.
**Layer attributes**
- Color
The path can be colored by an attribute from the properties.
- Stroke Width
Stroke width can be set by an attribute from the properties.
- Trail Length
Trail length determines how long it takes for a path to completely fade out in seconds. This can be adjusted using the slider. Short trail length retains few historical locations while long trail length retain more and show a longer tail.
- Animation speed
Animation speed can be adjusted using the animation control at the bottom.
**When there are multiple layers**
- Multiple trip layers
When you add multiple trip layers, the time range from all the layers will be combined and the animation control will span the entire time range of those layers.
- Multiple layers containing trip layer and other layers
Other static layers can be added besides the trip layers. Upon hiding the trip layer, its animation control will also hide, giving place to the filter control.
**Export**
To export an animated map, you can use a screen recording or gif capture tool. You can also export the map as an interactive HTML to open in the browser.
[Back to table of contents](../README.md)
================================================
FILE: docs/user-guides/c-types-of-layers/l-s2.md
================================================
# S2 Layer

To use S2 layer, you need to assign a column containing S2 tokens.
### Naming Convention
Kepler.gl **auto generates** S2 layer from column named `s2` or `s2_token`
### Simple Dataset
| token | value |
| -------- | :-----------------: |
| 80858004 | 0.5979242952642347 |
| 8085800c | 0.5446256069712141 |
| 80858014 | 0.1187171597109975 |
| 8085801c | 0.2859146314037557 |
| 80858024 | 0.19549012367504126 |
| 80858034 | 0.3373452974230604 |
| 8085803c | 0.9218176408795662 |
| 80858044 | 0.23470692356446143 |
| 8085804c | 0.1580509670379684 |
| 80858054 | 0.15992745628743954 |
[Back to table of contents](../README.md)
================================================
FILE: docs/user-guides/c-types-of-layers/m-vector-tile-layer.md
================================================
# Vector Tile Layer — How to add
Follow these steps to add a Vector Tile layer (MVT or pmtiles):
1. Open Add Data → Tilesets.
2. Select Vector Tile tileset type.
3. Enter a tileset URL:
- Mapbox Vector Tiles (MVT) template, e.g.
`https://api.mapbox.com/v4/mapbox.mapbox-streets-v8/{z}/{x}/{y}.mvt?access_token=YOUR_TOKEN`
- pmtiles URL, e.g. `https://your-cdn/filename.pmtiles`
4. Click Add. A new Vector Tile layer will appear in the Layers panel.
5. Style the layer (color, stroke, height, dynamic color) in the Layers panel.
Notes:
- Use Vector Tile layer for vector data in MVT/pmtiles formats. For raster pmtiles or COG/STAC imagery, use Raster Tile layer.
Example Vector Tile sources:
- US population — https://4sq-studio-public.s3.us-west-2.amazonaws.com/vector-tile/cb_v2/{z}/{x}/{y}.pbf
- New Zealand buildings — https://r2-public.protomaps.com/protomaps-sample-datasets/nz-buildings-v3.pmtiles
- US Zip Codes - https://r2-public.protomaps.com/protomaps-sample-datasets/cb_2018_us_zcta510_500k.pmtiles
- Railways — https://4sq-studio-public.s3.us-west-2.amazonaws.com/pmtiles-test/161727fe-7952-4e57-aa05-850b3086b0b2.pmtiles
[Back to layer overview](./README.md)
================================================
FILE: docs/user-guides/c-types-of-layers/n-raster-tile-layer.md
================================================
# Raster Tile Layer — How to add (experimental)
Use Raster Tile layer to visualize satellite/aerial imagery from raster pmtiles or COGs via STAC metadata.
1. Open Add Data → Tilesets.
2. Select Raster Tile tileset type.
3. Paste URL to the tileset:
- pmtiles (raster format): provide a direct HTTPS URL to a .pmtiles file containing raster imagery. Raster pmtiles don't require dedicated raster tile servers, unless you want to use elevation meshes.
- STAC Item/Collection (COGs): provide a HTTPS URL to a STAC Item or Collection (v1.0.0+ with EO + Raster extensions). For this option you need to provide a [compatible raster tile server](https://github.com/igorDykhta/kepler-raster-server).
4. Click Add.
5. Style band selection and opacity as needed in Layers panel.
Important notes for COGs via STAC:
- The STAC Item/Collection must include EO and Raster extensions with `eo:bands` and `raster:bands` .
- COG assets must be publicly accessible over HTTPS.
- You must run your own raster tile server (e.g., TiTiler). Example implementation that supports collections and elevations: [kepler-raster-server](https://github.com/igorDykhta/kepler-raster-server).
# Elevation
To enable elevation rendering, you must provide one or more compatible raster tile servers when adding the tileset. Enter them in the "Raster tile servers" field of the Add Tileset form.
- For STAC Items/Collections: compatible raster tile servers are required.
- For raster .pmtiles: raster tile servers are optional for imagery, but required if you plan to use elevation.
- The server must expose COGs as XYZ tiles and support elevation/DEM tiles. Example implementation: [kepler-raster-server](https://github.com/igorDykhta/kepler-raster-server) (TiTiler-based).
Example Raster .pmtiles:
- Mount Whitney - https://pmtiles.io/usgs-mt-whitney-8-15-webp-512.pmtiles
- Swiss historical - https://public-bucket-for-tests.s3.us-east-1.amazonaws.com/historic-swis-18xx.pmtiles
Example STAC Items:
- Bangladesh rivers — https://4sq-studio-public.s3.us-west-2.amazonaws.com/sdk/examples/sample-data/raster/planet-skysat-opendata.json
- Antarctica ice — https://4sq-studio-public.s3.us-west-2.amazonaws.com/sdk/examples/sample-data/raster/sentinel-2-l2a.json
- Kiribati island — https://4sq-studio-public.s3.us-west-2.amazonaws.com/sdk/examples/sample-data/raster/stac-example.json
Example STAC Collections:
- sentinel-2-l1c — https://earth-search.aws.element84.com/v1/collections/sentinel-2-l1c
- modis-09A1-061 — https://planetarycomputer.microsoft.com/api/stac/v1/collections/modis-09A1-061
- landsat-c2-l1 — https://planetarycomputer.microsoft.com/api/stac/v1/collections/landsat-c2-l1
[Back to layer overview](./README.md)
================================================
FILE: docs/user-guides/c-types-of-layers/o-wms-layer.md
================================================
# WMS Layer — How to add (experimental)
Use WMS Layer to render imagery from OGC Web Map Service (WMS) endpoints.
1. Open Add Data → Tilesets.
2. Select WMS tileset type.
3. Enter the WMS service URL (GetCapabilities endpoint or base service URL).
4. Click Add. A new WMS layer will appear in the Layers panel.
5. In the Layers panel you can select a named layer from the service.
Notes:
- Feature info on click is supported for queryable layers (`queryable=true`).
Example WMS services:
- https://ows.terrestris.de/osm/service
- https://opengeo.ncep.noaa.gov/geoserver/conus/conus_cref_qcd/ows
- https://gibs.earthdata.nasa.gov/wms/epsg4326/best/wms.cgi
- https://geo.stadt-muenster.de/mapserv/starkregen_serv
[Back to layer overview](./README.md)
================================================
FILE: docs/user-guides/c-types-of-layers/vector.md
================================================
# Vector Layer
Vector layers use the three basic GIS features – lines, points, and polygons – to represent real-world features in digital format.

# Settings
The following tables describe every setting in the Vector Tile layer.
## Basic
Core settings for the Vector layer.
| Setting | Description |
| ---------- | -------------------------------------------- |
| Layer Type | Must be Vector Tile to use the Vector layer. |
## Fill Color
Settings related to the fill color of the vector data.
| Setting | Description |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| Color Based On | The field to base the fill color on. |
| Color Scale | The color scale and palette for the fill color. |
| Dynamic Color | Enable to estimate color range and scale based on tiles selected for rendering. When panning the map, the color scale will update dynamically. |
| Opacity | The opacity of the fill color. 100 = fully opaque, 0 = fully transparent. |
## Stroke Color
Settings related to the stroke/outline color of the Vector layer.
| Setting | Description |
| --------------------- | ---------------------------------------------------------------------------------- |
| Stroke Color | Toggle to enable stroke. |
| Stroke Color Based On | A column to base the stroke color on. When enabled, a color scale can be selected. |
| Color | The color or color scale to use for the stroke. |
| Opacity | The opacity of the stroke. |
## Stroke Width
Settings related to the stroke/outline width of the Vector layer.
| Setting | Description |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| Stroke Width | Toggle to enable stroke. |
| Stroke Width Slider | Slide or enter a number to select the width of the stroke/outline in pixels. When "Stroke Based On" is selected, this becomes a range. |
| Stroke Based On | A column to base the stroke width on. |
| Stroke Scale | The method by which to scale the stroke/outline size. Choose between Linear, Sqrt, and Log. |
## Height
> Note: Height only affects polygons on your map, not points.
Height settings for the Vector layer. Height is best viewed with the 3D viewing mode.
| Setting | Description |
| --------------- | -------------------------------------------------- |
| Height Slider | Increase to raise the height of the layer objects. |
| Height Based On | A column to base the height on. |
| Height Scale | Choose from linear, sqrt, and log. |
| Fixed Height | Applies height without additional modifications. |
[Back to table of contents](../README.md)
================================================
FILE: docs/user-guides/d-layer-attributes.md
================================================
# Layer Attributes
| Layer Attribute | Description | Available in |
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------- |
| Color/Color based on | Choose the color of your layer or assign color based on a field from your dataset(s). | All layers |
| High-precision rendering | Activate high-precision rendering when zooming in closely on a layer. High-precision rendering sometimes results in a performance cost. | Point, Arc, Line, Icon, GeoJSON, Hexagon, Grid |
| Radius/Radius based on | Change the radius of points or assign radius values based on a field from your dataset(s). | Point, Icon, GeoJSON |
| Opacity | Change the transparency of a layer. 1 = opaque, 0 = invisible. | All layers |
| Cluster size | Change the granularity of clusters. The lower the numerical value, the smaller the geospatial radius that will be used to aggregate clusters. | Cluster |
| Radius range | Set a lower and upper threshold for projected radius size. | Point, Icon, Geojson, Cluster |
| Stroke width/stroke width based on | Change the thickness of lines and arcs, or assign a width based on a field from your dataset(s). | Arc, line, Geojson |
| Stroke width range | Set a lower and upper threshold for projected stroke width. | Arc, Line, Geojson |
| Grid size | Change the number of square kilometers covered by each grid square. | Grid |
| Color Palette | Choose from multiple, predefined or customized color palettes to apply to your layer. Predefined palettes are either Uber or ColorBrewer colors. | All layers |
| Color Scale | Choose either a quantile or quantized color scale. A quantile color scale is determined by rank, while a quantized color scale is determined by value. | All layers |
| Height based on | Assign grid square height based on a field from your dataset. | Grid, Hexagon, S2 |
| Filter by count percentile | Increase or decrease the number of grid squares by choosing a range of percentiles to display. | Grid, Hexagon |
| Coverage | Change what portion of each grid cell is covered by a color square. | Grid, Hexagon |
| Height Scale | Change the height of the grid squares, hexagons or S2 when in 3D mode. | Grid, Hexagon, S2 |
| Stroked | When activated, draws outlines around geoshapes. | GeoJSON, Point |
| Filled | When activated, geo shapes are filled in with colors. | GeoJSON |
| Extruded | In 3D mode, assign polygon height values based on some value from your dataset. | GeoJSON |
| Wireframe | Create outlines around extruded polygons. | GeoJSON |
| Stroke or radius based on | Control the radius/thickness of GeoJSON line and point features. | GeoJSON |
[Back to table of contents](README.md)
================================================
FILE: docs/user-guides/e-filters.md
================================================
# Filters
Add filters to your map to limit the data that is displayed. Filters must be based on the columns in your dataset.
To add a filter:
1. Select Filters from the right navigation bar.

2. The Filters panel displays the list of existing filters, color-coded by dataset. To create a new filter, Click __Add Filter__.
3. Choose a dataset, and then a field on which to filter your data. Filter values are defined by field data type (number, string, timestamp, etc.).

4. Your filter is applied to your map as soon as you specify the field and value.
5. Delete a filter anytime by clicking the __trashcan__ to the right of the filter you wish to delete.
__Note__: filters apply to all layers in the same dataset on your map.
[Back to table of contents](README.md)
================================================
FILE: docs/user-guides/f-map-styles.md
================================================
# Map Styles
- [Base Map Styles](#base-map-styles)
- [Toggle Map Layers](#toggle-map-layers)
- [Map Layers](#map-layers)
- [Layer Order](#layer-order)
- [Custom Map Styles](#custom-map-styles)

kepler.gl provide a set of [Mapbox](https://www.mapbox.com) basemap styles as background map, including 3D buildings! You can also add your own custom map sytle using the Mapbox style link.
## Base Map Styles
Open the __Base Map panel__ to select from a list of default map styles.

Open the __base map style__ drop down menu to change map color scheme and imagery. Options include:
- __Dark__: dark base map with light-colored text.
- __Light__: light base map with dark-colored text.
## Toggle Map Layers

#### Map Layers
Hide and show water, buildings, roads, and more. Options include:
- __Labels__: shows labels for cities, neighborhoods, and so on.
- __Roads__: displays a translucent layer of road lines.
- __Borders__: shows state and continent borders.
- __Buildings__: shows building footprints.
- __Water__: displays bodies of water.
- __Land__: Shows parks, mountains, and other landscape features.
- __3d Building__: Shows 3D buildings on the map. 3D buildings are only visible in the 3D map view. Resolution automatically updates based on current map zoom level. Use the input below to edit 3D bulding color.

#### Layer Order
To control the order in which map imagery layers are displayed, toggle the move to top icon:
.
__TIP__: Move labels to the top on maps with colored layers to keep the labels from being concealed.

## Custom Map Styles

To add a custom base map style, click the add map style button to open the custom map style modal, paste in the mapbox [style Url](https://www.mapbox.com/help/studio-manual-publish/#style-url). Note that you need to paste in your [mapbox access token](https://www.mapbox.com/account/) if your style is not [published](https://www.mapbox.com/help/studio-manual-publish/#style-url).

[Back to table of contents](README.md)
================================================
FILE: docs/user-guides/g-interactions.md
================================================
# Interactions
- [Tooltips](#tooltips)
- [Brushing](#brushing)
- [Display Coordinates](#display-coordinates)
You can toggle customization options on your map, including tooltips, brush highlighting, map imagery (water, parks, etc.), and more.

To toggle customization options on your map:
1. Open the Interactions menu by clicking the Interactions icon:
2. Click the switch next to the options you wish to activate/deactivate.
There are three types of interactions to choose from: __Tooltip__, __Brushing__ and __Coordinate__. Note that only one of tooltip and brushing can be on at a time.
## Tooltips
tooltip displays metrics when hovering over a data point. You can choose which fields are displayed from the tooltip config menu.

- __Image__ Image can be added to tooltip. If field name contains ` ` and the field content contains `http` url
|id| ` -tooltip` |
|---|---|
|1|`http://my-image.com/my-image-0.png`|
|2|`http://my-image.com/my-image-1.png`|
- __Web link__
Tooltip can be a clicable weblink. To add a web link as tooltip, add url starts with `http://` to the field content.

Tip: click a point to pin the tooltip info to the map. To unpin the tooltip, press the blue pin icon.

## Brushing
- __Brush__: Brush allows you to highlight areas with the cursor. When brush is turned on, all layers darken. Only the portion you hover over with the cursor is illuminated. Brush works well with arc layers in particular.

[Back to table of contents](README.md)
## Display Coordinates

When then on coordinate, a panel contains latitude and longitude will follow your mouse
[Back to table of contents](README.md)
================================================
FILE: docs/user-guides/h-playback.md
================================================
# Playback
Follow these steps to create a playback video of an event:
1. Add a filter based on a time-related field, like timestamp. For GeoJson, property field should contain a timestamp entry.
2. The playback window will appear on the bottom of the map. The bars are distribution graphs of all data points by time. Select the desired rolling time window:

3. Press play to start the video. Click on the speed value and select/input your desired value _1x_, _2x_, _4x_ on the top right to change the playback speed.

4. Choose custom y axis. You can click __Select Y Axis__ to change the default distribution graph to a timeseries of the selected column. An example use of this function is to show a distance vs. time graph of a given trip.

[Back to table of contents](README.md)
================================================
FILE: docs/user-guides/i-FAQ.md
================================================
# FAQ
## Can I export my map to a video file?
Kepler.gl does not have built-in functionality for exporting video. It only allows you to export maps as an image. However, you can use screen capture softwares such as Quicktime Player, LICEcap, Giffy, and others to export your map.
## How can I get data from my back-end service into Kepler.gl?
You can create a react redux app with kepler.gl as your map display component, requesting data with any kind of server-side calls. The kepler.gl demo app uses simple AJAX calls to load data from a URL.
## Is there a limit on the number of datasets that can be added to a map?
There is no limit, but the more datasets you add, the more likely it is that performance will suffer.
## What is the maximum file upload size?
Kepler.gl accepts files no larger than 250mb in chrome. You can load bigger files in safari, but performance will be limited.
## How many layers can I add to a map?
There is no limit on the amount of layers you can add. However, note that the more layers you have on your map, the more likely it is that performance will suffer.
## Why does my layer color change during filtering?
When layer color is based on a numerical value (e.g, trip fare, distance, ETA), Kepler.gl recalculates the color scale based on filtered data. This is not the case for categorical values such as vehicle_name, cuisine_type and app version.
[Back to table of contents](README.md)
================================================
FILE: docs/user-guides/j-get-started.md
================================================
# Get Started
Kepler.gl is a tool designed for geospatial data analysis. This guide will help you get started creating visualizations in kepler.gl.
## 1) Add Data to your Map

Kepler.gl will prompt you to add data to your map as soon as you open the web page. Upload your own CSV or GEOJSON file, or add kepler.gl sample data.
Sample data is a great way to explore and get familiar with kepler.gl’s features.
Read more about adding [Add data to the map](./b-kepler-gl-workflow/a-add-data-to-the-map.md).
## 2) Add Layers

Open the Data Layers menu to start building your visualization. Layers are simply data visualizations that can be built on top of one another. The map pictured above contains a GeoJSON path layer showing trip routes.
If you’re new to kepler.gl, play around with the different settings for each type of layer. Layers of the same type can differ greatly in appearance depending on how they’re configured, opening up new possibilities for data analysis.
Learn more about [adding data layers](./b-kepler-gl-workflow/b-add-data-layers/a-adding-data-layers.md)
.
## 3) Add Filters

Add filters to your map to limit the data that is displayed. Filters must be based on the columns in your dataset. To create a new filter, open the Filter menu and click Add Filter. Note that filters apply to all layers and cannot be toggled on and off.
Learn more about [filters](./e-filters.md).
## 4) Customize Map Settings

Change the settings on your map in the Interactions and Base Map menus. Customization options include tooltips, brush highlighting, base map style, map imagery toggles (water, parks, satellite image, etc.), and many more.
Read about [base map styles](./f-map-styles.md), [interactions](./g-interactions.md) and [map settings](./m-map-settings.md).
## 5) Save and Export

Save your map as an image, export current map data, export current map as a json file to be load back into kepler.gl.
Read about [Save and export](./k-save-and-export.md).
[Back to table of contents](README.md)
================================================
FILE: docs/user-guides/k-save-and-export.md
================================================
# Save and Export

kepler.gl is a client-side only application. In the demo app, the data you uploaded stays in your browser. kepler.gl does not send or store any user data to any backends. This rule poses an limitation on how you can save and share your maps.
However, in the demo app, you can:
- [Export map as an image](#export-image).
- [Export filtered or unfiltered data as a csv](#export-data).
- [Export Map](#export-map)
- [Share Public URL (Dropbox)](#export-dropbox)
## Export Image

You can export the current map as an image. The export window will use the current map viewport, and the preview will show the entire exported map area. To adjust the viewport, you will have to close the export dialog. You can choose different export ratios or resolutions, and also to add a map legend.
## Export Data

You can export map data as a csv file, with the option to export ONLY the filtered data or the entire dataset.
## Export Map
You can export the current map using two different formats. The __Export Map__ window provides two options:
- HTML: create a single html file loads and renders your current map.
- JSON: create a json file with your current map config and data.
### Export Map as HTML

To save and export your current map as HTML file, click on __Export Map__ and subsequently on __Export__.
When prompted provide your own mapbox token to be used in the newly generated file. If you don't provide a Mapbox Token,
Kepler.gl will use a default one which can expire at anytime without any communication and therefore break your your existing map.
#### How to update an exported map token
In order to edit the mapbox token in your html file you simply need to perform the following steps:
1. [Create a new mapbox token](https://docs.mapbox.com/help/how-mapbox-works/access-tokens/) or use your existing one.
2. Open the kepler.gl.map file with your favorite text editor.
3. Locate the following line in the exported file __kepler.gl.html__:
```javascript
/**
* Provide your MapBox Token
**/
const MAPBOX_TOKEN = 'CURRENT_TOKEN';
```
4. Replace the current value a new valid token. The code should now look like the following:
```javascript
/**
* Provide your MapBox Token
**/
const MAPBOX_TOKEN = 'pk.eyJ1IjoidWJlcmRh...';
```
### Export Map as JSON

You can export the current map as a `json` file. This is useful when you are running your own kepler.gl application and want to load your map programmatticaly.
The JSON file includes:
- dataset: processed data to create used to render your map
- config: layer, filter, map style and interaction settings.
The map config includes the current layer, filter, map style and interaction settings.
**Note:** kepler.gl map config is coupled with loaded datasets. The __`dataId`__ key is used to bind layers, filters and tooltip settings to a specific dataset. If you try to upload a configuration with a dataset in your own kepler.gl app, you also need to make sure your dataset __`id`__ matches the __`dataId`__ in the config.
## Share Public URL (Dropbox)

To export the current map into your Dropbox account, click on __Share Public Url__ and select Dropbox as your cloud storage.
Perform the authentication against Dropbox using your credentials. Once the authentication process is completed,
click on __Upload__ and Kepler.gl will push your current map onto your account.
At the end of the process Kepler.gl will automatically generate a permalink for your work you can share with other users.
[Back to table of contents](README.md)
================================================
FILE: docs/user-guides/l-color-attributes.md
================================================
# Color Palettes
Color palettes pride both predefined and customized options and can be applied to either fill or stroke. Predefined palettes comes in diverging, sequential and qualitative types.
To choose a palette:
1. Expand layer pane and click on the color bar from either filled color or stroke color section. Click on the three dots to select the field to color by.
2. To choose a custom palette, toggle on custom button. Click on each color to pick new color either by clicking on the color picker or inputting HEX/RGB values. Colors steps can be added, removed or shuffled.
3) Your color is applied to your map as soon as you select the predefined palette or confirm the choices of customized colors.
[Back to table of contents](README.md)
================================================
FILE: docs/user-guides/m-map-settings.md
================================================
# Map Settings
- [Split Maps](#split-maps)
- [View Maps in 3D](#view-maps-in-3d)
- [Display Legend](#display-legend)

## Split Maps
You can display a side-by-side comparison of the same map area with different layers with the Split Map functionality.

1. Enable this by clicking the Split Map icon in the top right corner of your map:

2. Toggle the layers visible in each map with the layer icon in the top right corner of each map.


3. Zoom in and out on each map and the other will automatically mimic.
## View Maps in 3D
View your map in 3D by clicking the 3D icon in the top right corner of your map

- __drag__: pan
- __cmd + drag__ (mac) or __ctrl + drag__ (win): rotate

## Display Legend
View your map in 3D by clicking the 3D icon in the top right corner of your map:


[Back to table of contents](README.md)
================================================
FILE: docs/user-guides/sql-data-explorer.md
================================================
# SQL/DuckDB Data Explorer
**This feature is currently undergoing development. Stay tuned for updates!**
The new SQL data explorer provides a DucKDB instance where you can use SQL to transform and add data to the map.

You will need local data (i.e. data upload for your machine) or data accessible via a remote URL.
Any dataset already added to kepler can be accessed via SQL editor by selecting it via its name in kepler. For instance, if your dataset is named `world-cities.csv`, you can select the entire dataset by writing `SELECT * FROM 'world-cities.csv'`.
The data does not need to be pre-loaded to kepler -- you may also select data remotely via SQL. The following example loads earthquake data from our sample data repository:
```
SELECT * FROM 'https://raw.githubusercontent.com/keplergl/kepler.gl-data/refs/heads/master/earthquakes/data.csv'
```
Once you have a data selection you are satisfied with, click **Add to Map**. Your new dataset will be added to kepler. If you have a column that contains recognizable geography data, (i.e. lat/lng columns or polygon geometries), layers will automatically be created.
================================================
FILE: esbuild/umd-esbuild.config.mjs
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import esbuild from 'esbuild';
import {replace} from 'esbuild-plugin-replace';
import {umdWrapper} from 'esbuild-plugin-umd-wrapper';
import process from 'node:process';
import {spawn} from 'node:child_process';
import {join} from 'node:path';
import KeplerPackage from '../package.json' assert {type: 'json'};
const LIB_DIR = './';
const NODE_MODULES_DIR = join(LIB_DIR, 'node_modules');
const SRC_DIR = join(LIB_DIR, 'src');
const config = {
entryPoints: ['./src/index.js'],
bundle: true,
platform: 'browser',
outfile: './umd/keplergl.min.js',
format: 'umd',
logLevel: 'error',
minify: true,
sourcemap: false,
treeShaking: true,
external: ['react', 'react-dom', 'redux', 'react-redux', 'styled-components'],
plugins: [
// automatically injected kepler.gl package version into the bundle
replace({
__PACKAGE_VERSION__: KeplerPackage.version,
include: /constants\/src\/default-settings\.ts/
}),
umdWrapper({
libraryName: "KeplerGl",
globals: {
"react": "React",
"react-dom": "ReactDOM",
'redux': 'Redux',
'react-redux': 'ReactRedux',
'styled-components': 'styled'
}
})
]
};
(async () => {
await esbuild
.build({
...config
})
.catch(e => {
console.error(e);
process.exit(1);
});
})();
================================================
FILE: examples/README.md
================================================
# Examples
A list of examples to demonstrate adding `kepler.gl` to your app. Each of the examples is a complete project that can be ran locally.
To start each example, cd into the folder then run:
```
yarn && yarn start
```
- ### [Demo App][demo-app]
kepler.gl as a single page app, loading sample maps from remote url, saving map data to dropbox. This is also the source code of kepler.gl/#/demo.
- ### [Open Modal][open-modal]
Open kepler.gl in a modal.
- ### [Custom Reducer][custom-reducer]
Customize kepler.gl reducer initial state, adding more actions using plugin.
- ### [umd client][umd-client]
A single html file loading kepler.gl
- ### [Replace UI Component][replace-component]
Example showing how to replace kepler.gl default ui components using `injectComponents` method.
- ### [Custom theme][custom-theme]
Customize kepler.gl theme by override default style properties.
- ### [Node App][node-app]
Embed Kepler.gl in a node/express/webpack application.
- ### [Custom map style][custom-map-style]
Demo how to use kepler.gl with other basemap services other than Mapbox.
[custom-reducer]: custom-reducer/README.md
[demo-app]: demo-app/README.md
[node-app]: node-app/README.md
[open-modal]: open-modal/README.md
[umd-client]: umd-client/README.md
[replace-component]: replace-component/README.md
[custom-theme]: custom-theme/README.md
[custom-map-style]: custom-map-style/README.md
================================================
FILE: examples/custom-map-style/.babelrc
================================================
{
"presets": [
"@babel/preset-env",
"@babel/preset-react",
"@babel/preset-typescript"
],
"plugins": [
"@babel/plugin-transform-modules-commonjs",
"@babel/plugin-transform-class-properties",
"@babel/plugin-transform-optional-chaining",
"@babel/plugin-transform-logical-assignment-operators",
"@babel/plugin-transform-nullish-coalescing-operator",
"@babel/plugin-transform-export-namespace-from"
]
}
================================================
FILE: examples/custom-map-style/README.md
================================================
# Custom Map Style

Demo how to use kepler.gl with other basemap services other than Mapbox.
Read more about [Custom Map Style][custom-map-styles]
### Run Example
#### 1. Install
```sh
yarn
```
#### 2. Start the app
```sh
yarn start
```
[custom-map-styles]: ./docs/api-reference/advanced-usages/custom-map-styles.md
================================================
FILE: examples/custom-map-style/esbuild.config.mjs
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import esbuild from 'esbuild';
import {replace} from 'esbuild-plugin-replace';
import {dotenvRun} from '@dotenv-run/esbuild';
import copyPlugin from 'esbuild-plugin-copy';
import process from 'node:process';
import fs from 'node:fs';
import {spawn} from 'node:child_process';
import {join} from 'node:path';
const args = process.argv;
const port = 8080;
const NODE_ENV = JSON.stringify(process.env.NODE_ENV || 'production');
// Ensure a single instance of React and friends to avoid invalid hook calls
const ROOT_NODE_MODULES = join('..', '..', 'node_modules');
const thirdPartyAliases = {
react: join(ROOT_NODE_MODULES, 'react'),
'react-dom': join(ROOT_NODE_MODULES, 'react-dom'),
'react-redux': join(ROOT_NODE_MODULES, 'react-redux', 'lib'),
'styled-components': join(ROOT_NODE_MODULES, 'styled-components'),
'apache-arrow': join(ROOT_NODE_MODULES, 'apache-arrow')
};
const config = {
platform: 'browser',
format: 'iife',
logLevel: 'info',
loader: {
'.js': 'jsx',
'.ts': 'ts',
'.tsx': 'tsx',
'.css': 'css',
'.ttf': 'file',
'.woff': 'file',
'.woff2': 'file'
},
entryPoints: ['src/main.tsx'],
outfile: 'dist/bundle.js',
bundle: true,
define: {
NODE_ENV,
'process.env.MapboxAccessToken': JSON.stringify(process.env.MapboxAccessToken || '')
},
plugins: [
dotenvRun({
verbose: true,
environment: NODE_ENV,
root: '../../.env'
}),
replace({
__PACKAGE_VERSION__: '3.1.10',
include: /constants\/src\/default-settings\.ts/
}),
copyPlugin({
resolveFrom: 'cwd',
assets: {
from: ['index.html'],
to: ['dist/index.html']
}
})
]
};
function openURL(url) {
const cmd = {
darwin: ['open'],
linux: ['xdg-open'],
win32: ['cmd', '/c', 'start']
};
const command = cmd[process.platform];
if (command) {
spawn(command[0], [...command.slice(1), url]);
}
}
(async () => {
if (args.includes('--build')) {
const result = await esbuild
.build({
...config,
alias: thirdPartyAliases,
minify: true,
sourcemap: false,
metafile: true,
define: {
...config.define,
'process.env.NODE_ENV': '"production"'
},
drop: ['console', 'debugger'],
treeShaking: true
})
.catch(e => {
console.error(e);
process.exit(1);
});
fs.writeFileSync('dist/esbuild-metadata.json', JSON.stringify(result.metafile));
}
if (args.includes('--start')) {
await esbuild
.context({
...config,
alias: thirdPartyAliases,
minify: false,
sourcemap: true,
banner: {
js: `new EventSource('/esbuild').addEventListener('change', () => location.reload());`
}
})
.then(async ctx => {
await ctx.watch();
await ctx.serve({
servedir: 'dist',
port,
fallback: 'dist/index.html',
onRequest: ({remoteAddress, method, path, status, timeInMS}) => {
console.info(remoteAddress, status, `"${method} ${path}" [${timeInMS}ms]`);
}
});
console.info(`kepler.gl custom-map-style example running at ${`http://localhost:${port}`}`);
openURL(`http://localhost:${port}`);
})
.catch(e => {
console.error(e);
process.exit(1);
});
}
})();
================================================
FILE: examples/custom-map-style/index.html
================================================
kepler.gl demo
================================================
FILE: examples/custom-map-style/package.json
================================================
{
"scripts": {
"start": "node esbuild.config.mjs --start",
"build": "node esbuild.config.mjs --build",
"start-local": "NODE_ENV=local node esbuild.config.mjs --start"
},
"dependencies": {
"@kepler.gl/components": "^3.1.10",
"@kepler.gl/reducers": "^3.1.10",
"global": "^4.3.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-palm": "^3.3.6",
"react-redux": "^8.0.5",
"react-virtualized": "^9.21.0",
"redux-actions": "^2.2.1",
"styled-components": "6.1.8"
},
"devDependencies": {
"@dotenv-run/esbuild": "^1.5.0",
"esbuild": "^0.25.0",
"esbuild-plugin-copy": "^2.1.1",
"esbuild-plugin-replace": "^1.4.0"
}
}
================================================
FILE: examples/custom-map-style/src/app.tsx
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React from 'react';
import {connect} from 'react-redux';
import KeplerGl from '@kepler.gl/components';
import AutoSizer from 'react-virtualized/dist/commonjs/AutoSizer';
const localeMessages = {
en: {
mapLayers: {
terrain: 'Terrain'
}
}
};
const App = () => (
{({height, width}) => (
)}
);
const mapStateToProps = state => state;
const dispatchToProps = dispatch => ({dispatch});
export default connect(mapStateToProps, dispatchToProps)(App);
================================================
FILE: examples/custom-map-style/src/main.tsx
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React from 'react';
import ReactDOM from 'react-dom/client';
import document from 'global/document';
import {Provider} from 'react-redux';
import store from './store.ts';
import App from './app.tsx';
const Root = () => (
);
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render( );
================================================
FILE: examples/custom-map-style/src/store.ts
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {createStore, combineReducers, applyMiddleware, compose} from 'redux';
import keplerGlReducer, {enhanceReduxMiddleware} from '@kepler.gl/reducers';
const mapStyles = {
voyager: {
id: 'voyager',
label: 'Voyager',
url: 'https://api.maptiler.com/maps/voyager/style.json?key=ySQ0fIYn7eSl3ppOeEJd',
icon: 'https://api.maptiler.com/maps/voyager/256/0/0/0.png?key=ySQ0fIYn7eSl3ppOeEJd'
},
terrain: {
id: 'terrain',
label: 'Outdoor',
url: 'https://api.maptiler.com/maps/outdoor/style.json?key=ySQ0fIYn7eSl3ppOeEJd',
icon: 'https://openmaptiles.org/img/styles/terrain.jpg',
layerGroups: [
{
slug: 'label',
filter: ({id}) => id.match(/(?=(label|place-|poi-))/),
defaultVisibility: true
},
{
slug: 'road',
filter: ({id}) => id.match(/(?=(road|railway|tunnel|street|bridge))(?!.*label)/),
defaultVisibility: true
},
{
slug: 'terrain',
filter: ({id}) => id.match(/(?=(hillshade))/),
defaultVisibility: true
},
{
slug: 'building',
filter: ({id}) => id.match(/building/),
defaultVisibility: true
}
]
}
};
const customizedKeplerGlReducer = keplerGlReducer.initialState({
mapStyle: {
mapStyles,
styleType: 'voyager'
}
});
const reducers = combineReducers({
keplerGl: customizedKeplerGlReducer
});
const middlewares = enhanceReduxMiddleware([]);
const enhancers = [applyMiddleware(...middlewares)];
export default createStore(reducers, {}, compose(...enhancers));
================================================
FILE: examples/custom-reducer/.babelrc
================================================
{
"presets": [
"@babel/preset-env",
"@babel/preset-react",
"@babel/preset-typescript"
],
"plugins": [
"@babel/plugin-transform-modules-commonjs",
"@babel/plugin-transform-class-properties",
"@babel/plugin-transform-optional-chaining",
"@babel/plugin-transform-logical-assignment-operators",
"@babel/plugin-transform-nullish-coalescing-operator",
"@babel/plugin-transform-export-namespace-from"
]
}
================================================
FILE: examples/custom-reducer/README.md
================================================
# Customize kepler.gl Reducer
This example demos how to customize kepler.gl reducer
1. Customize reducer initialState by `keplerGlReducer.initialState`
2. Adding custom actions by `keplerGlReducer.plugins`
### Local dev
```
yarn
```
add mapbox access token to node env
```
export MapboxAccessToken=
```
then
```
yarn start
```
================================================
FILE: examples/custom-reducer/esbuild.config.mjs
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import esbuild from 'esbuild';
import {replace} from 'esbuild-plugin-replace';
import {dotenvRun} from '@dotenv-run/esbuild';
import copyPlugin from 'esbuild-plugin-copy';
import process from 'node:process';
import fs from 'node:fs';
import {spawn} from 'node:child_process';
import {join} from 'node:path';
const args = process.argv;
const port = 8080;
const NODE_ENV = JSON.stringify(process.env.NODE_ENV || 'production');
// Ensure a single instance of React and friends to avoid invalid hook calls
const ROOT_NODE_MODULES = join('..', '..', 'node_modules');
const thirdPartyAliases = {
react: join(ROOT_NODE_MODULES, 'react'),
'react-dom': join(ROOT_NODE_MODULES, 'react-dom'),
'react-redux': join(ROOT_NODE_MODULES, 'react-redux', 'lib'),
'styled-components': join(ROOT_NODE_MODULES, 'styled-components'),
'apache-arrow': join(ROOT_NODE_MODULES, 'apache-arrow')
};
const config = {
platform: 'browser',
format: 'iife',
logLevel: 'info',
loader: {
'.js': 'jsx',
'.css': 'css',
'.ttf': 'file',
'.woff': 'file',
'.woff2': 'file'
},
entryPoints: ['src/main.js'],
outfile: 'dist/bundle.js',
bundle: true,
define: {
NODE_ENV,
'process.env.MapboxAccessToken': JSON.stringify(process.env.MapboxAccessToken || '')
},
plugins: [
dotenvRun({
verbose: true,
environment: NODE_ENV,
root: '../../.env'
}),
replace({
__PACKAGE_VERSION__: '3.1.10',
include: /constants\/src\/default-settings\.ts/
}),
copyPlugin({
resolveFrom: 'cwd',
assets: {
from: ['index.html'],
to: ['dist/index.html']
}
})
]
};
function openURL(url) {
const cmd = {
darwin: ['open'],
linux: ['xdg-open'],
win32: ['cmd', '/c', 'start']
};
const command = cmd[process.platform];
if (command) {
spawn(command[0], [...command.slice(1), url]);
}
}
(async () => {
if (args.includes('--build')) {
const result = await esbuild
.build({
...config,
alias: thirdPartyAliases,
minify: true,
sourcemap: false,
metafile: true,
define: {
...config.define,
'process.env.NODE_ENV': '"production"'
},
drop: ['console', 'debugger'],
treeShaking: true
})
.catch(e => {
console.error(e);
process.exit(1);
});
fs.writeFileSync('dist/esbuild-metadata.json', JSON.stringify(result.metafile));
}
if (args.includes('--start')) {
await esbuild
.context({
...config,
alias: thirdPartyAliases,
minify: false,
sourcemap: true,
banner: {
js: `new EventSource('/esbuild').addEventListener('change', () => location.reload());`
}
})
.then(async ctx => {
await ctx.watch();
await ctx.serve({
servedir: 'dist',
port,
fallback: 'dist/index.html',
onRequest: ({remoteAddress, method, path, status, timeInMS}) => {
console.info(remoteAddress, status, `"${method} ${path}" [${timeInMS}ms]`);
}
});
console.info(`kepler.gl custom-reducer example running at ${`http://localhost:${port}`}`);
openURL(`http://localhost:${port}`);
})
.catch(e => {
console.error(e);
process.exit(1);
});
}
})();
================================================
FILE: examples/custom-reducer/index.html
================================================
kepler.gl demo
================================================
FILE: examples/custom-reducer/package.json
================================================
{
"scripts": {
"start": "node esbuild.config.mjs --start",
"build": "node esbuild.config.mjs --build",
"start-local": "NODE_ENV=local node esbuild.config.mjs --start"
},
"dependencies": {
"@kepler.gl/actions": "^3.1.10",
"@kepler.gl/components": "^3.1.10",
"@kepler.gl/reducers": "^3.1.10",
"global": "^4.3.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-palm": "^3.3.6",
"react-redux": "^8.0.5",
"react-virtualized": "^9.21.0",
"redux-actions": "^2.2.1",
"styled-components": "6.1.8"
},
"devDependencies": {
"@dotenv-run/esbuild": "^1.5.0",
"esbuild": "^0.25.0",
"esbuild-plugin-copy": "^2.1.1",
"esbuild-plugin-replace": "^1.4.0"
}
}
================================================
FILE: examples/custom-reducer/src/app-reducer.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {createAction, handleActions} from 'redux-actions';
// CONSTANTS
export const INIT = 'INIT';
// ACTIONS
export const appInit = createAction(INIT);
// INITIAL_STATE
const initialState = {
appName: 'example',
loaded: false
};
// REDUCER
const appReducer = handleActions(
{
[INIT]: state => ({
...state,
loaded: true
})
},
initialState
);
export default appReducer;
================================================
FILE: examples/custom-reducer/src/app.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React, {Component} from 'react';
import {connect} from 'react-redux';
import AutoSizer from 'react-virtualized/dist/commonjs/AutoSizer';
import KeplerGl from '@kepler.gl/components';
import {createAction} from 'redux-actions';
import {addDataToMap, wrapTo} from '@kepler.gl/actions';
import sampleData from './data/sample-data';
import config from './configurations/config';
const MAPBOX_TOKEN = process.env.MapboxAccessToken; // eslint-disable-line
// extra actions plugged into kepler.gl reducer (store.js)
const hideAndShowSidePanel = createAction('HIDE_AND_SHOW_SIDE_PANEL');
class App extends Component {
componentDidMount() {
this.props.dispatch(
wrapTo(
'map1',
addDataToMap({
datasets: sampleData,
config
})
)
);
}
_toggleSidePanelVisibility = () => {
this.props.dispatch(wrapTo('map1', hideAndShowSidePanel()));
};
render() {
return (
Hide / Show Side Panel
{({height, width}) => (
)}
);
}
}
const mapStateToProps = state => state;
const dispatchToProps = dispatch => ({dispatch});
export default connect(mapStateToProps, dispatchToProps)(App);
================================================
FILE: examples/custom-reducer/src/configurations/config.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
export default {
version: 'v1',
config: {
visState: {
filters: [],
layers: [
{
id: '1s8r5md',
type: 'point',
config: {
dataId: 'tree_data',
label: 'location',
color: [18, 147, 154],
columns: {
lat: 'Location_latitude',
lng: 'Location_longitude',
altitude: null
},
isVisible: true,
visConfig: {
radius: 10,
fixedRadius: false,
opacity: 0.8,
outline: false,
thickness: 2,
colorRange: {
name: 'Ice And Fire',
type: 'diverging',
category: 'Uber',
colors: ['#D50255', '#FEAD54', '#FEEDB1', '#E8FEB5', '#49E3CE', '#0198BD'],
reversed: true
},
radiusRange: [33.6, 96.2],
'hi-precision': false
}
},
visualChannels: {
colorField: {
name: 'Species',
type: 'string'
},
colorScale: 'ordinal',
sizeField: {
name: 'Age',
type: 'integer'
},
sizeScale: 'sqrt'
}
},
{
id: '7otjdz',
type: 'hexagon',
config: {
dataId: 'tree_data',
label: 'Density',
color: [23, 184, 190],
columns: {
lat: 'Location_latitude',
lng: 'Location_longitude'
},
isVisible: true,
visConfig: {
opacity: 0.2,
worldUnitSize: 0.8,
resolution: 8,
colorRange: {
name: 'ColorBrewer GnBu-6',
type: 'sequential',
category: 'ColorBrewer',
colors: ['#f0f9e8', '#ccebc5', '#a8ddb5', '#7bccc4', '#43a2ca', '#0868ac'],
reversed: false
},
coverage: 1,
sizeRange: [0, 500],
percentile: [0, 100],
elevationPercentile: [0, 100],
elevationScale: 5,
'hi-precision': false,
colorAggregation: 'average',
sizeAggregation: 'average',
enable3d: false
}
},
visualChannels: {
colorField: null,
colorScale: 'quantile',
sizeField: null,
sizeScale: 'linear'
}
}
],
interactionConfig: {
tooltip: {
fieldsToShow: {
tree_data: ['TreeID', 'Species', 'Address', 'Has_Species', 'SiteInfo']
},
enabled: true
},
brush: {
size: 0.5,
enabled: false
},
geocoder: {
enabled: false
}
},
layerBlending: 'normal',
splitMaps: []
},
mapState: {
bearing: 0,
dragRotate: false,
latitude: 37.76544453921235,
longitude: -122.46289885132524,
pitch: 0,
zoom: 12.032736770460689,
isSplit: false
},
mapStyle: {
styleType: 'light',
topLayerGroups: {
label: true
},
visibleLayerGroups: {
label: true,
road: true,
border: false,
building: true,
water: true,
land: true
}
}
}
};
================================================
FILE: examples/custom-reducer/src/data/sample-data.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
export default {
info: {
label: 'San Francisco Trees',
id: 'tree_data'
},
data: {
fields: [
{
name: 'TreeID'
},
{
name: 'Species'
},
{
name: 'Address'
},
{
name: 'Has_Species'
},
{
name: 'SiteInfo'
},
{
name: 'PlantType'
},
{
name: 'PlantDate'
},
{
name: 'Plan'
},
{
name: 'Age'
},
{
name: 'DBH'
},
{
name: 'Location_latitude'
},
{
name: 'Location_longitude'
}
],
rows: [
[
141565,
'Myoporum laetum :: Myoporum',
'501X Baker St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'7/21/88 0:00',
1988,
29,
21,
37.77596769,
-122.4413967
],
[
232565,
'Metrosideros excelsa :: New Zealand Xmas Tree',
'940 Elizabeth St',
false,
'Sidewalk: Curb side : Yard',
'Tree',
'3/20/17 0:00',
2017,
0,
3,
37.75171022,
-122.441498
],
[
119263,
'Pinus radiata :: Monterey Pine',
'495X Lakeshore Dr',
false,
'Median : Yard',
'Tree',
null,
null,
null,
null,
null,
null
],
[
207368,
'Ligustrum japonicum :: Japanese Privet',
'920 Kirkham St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
6,
37.76021031,
-122.4707394
],
[
188702,
'Acacia melanoxylon :: Blackwood Acacia',
'1501 Evans Ave',
false,
':',
'Tree',
null,
null,
null,
17,
37.74220867,
-122.3872932
],
[
141566,
'Myoporum laetum :: Myoporum',
'501X Baker St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
14,
37.77570453,
-122.4414629
],
[
188697,
'Acacia melanoxylon :: Blackwood Acacia',
'1301 Evans Ave',
false,
':',
'Tree',
null,
null,
null,
15,
37.73973386,
-122.3829339
],
[
122650,
'Acer rubrum :: Red Maple',
'300x Hickory St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'11/10/16 0:00',
2016,
1,
3,
null,
null
],
[
203507,
'Agonis flexuosa :: Peppermint Willow',
'920 Kirkham St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
23,
37.76018051,
-122.4708661
],
[
122670,
'Lyonothamnus floribundus subsp. asplenifolius :: Santa Cruz Ironwood',
'301x Hickory St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'11/10/16 0:00',
2016,
1,
3,
null,
null
],
[
122658,
'Acer rubrum :: Red Maple',
'300x Hickory St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'11/10/16 0:00',
2016,
1,
3,
null,
null
],
[
122660,
'Acer rubrum :: Red Maple',
'300x Hickory St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'11/10/16 0:00',
2016,
1,
3,
null,
null
],
[
122648,
'Acer rubrum :: Red Maple',
'300x Hickory St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'11/10/16 0:00',
2016,
1,
3,
null,
null
],
[
196590,
'Pyrus calleryana :: Ornamental Pear',
'43 Lafayette St',
false,
':',
'Tree',
null,
null,
null,
10,
37.77303718,
-122.4172458
],
[
196591,
'Pyrus calleryana :: Ornamental Pear',
'43 Lafayette St',
false,
':',
'Tree',
null,
null,
null,
13,
37.77305251,
-122.4172809
],
[
122649,
'Acer rubrum :: Red Maple',
'300x Hickory St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'11/10/16 0:00',
2016,
1,
3,
null,
null
],
[
145278,
'Fraxinus uhdei :: Shamel Ash: Evergreen Ash',
'730 11th Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/20/17 0:00',
2017,
0,
0,
37.77448101,
-122.4691091
],
[
96369,
'Lophostemon confertus :: Brisbane Box',
'168 Cervantes Blvd',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'8/9/11 0:00',
2011,
6,
24,
37.80468521,
-122.4402315
],
[
182260,
"Arbutus 'Marina' :: Hybrid Strawberry Tree",
'1471 28th Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
5,
37.75995923,
-122.4866885
],
[
251179,
'Podocarpus gracilor :: Fern Pine',
'1043 Minna St',
false,
'Sidewalk: Property side : Cutout',
'Tree',
null,
null,
null,
null,
37.77353367,
-122.4169045
],
[
251178,
'Podocarpus gracilor :: Fern Pine',
'1043 Minna St',
false,
'Sidewalk: Property side : Cutout',
'Tree',
null,
null,
null,
null,
37.77353367,
-122.4169045
],
[
203506,
'Agonis flexuosa :: Peppermint Willow',
'910 Kirkham St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
15,
37.76026555,
-122.4705695
],
[
52566,
'Hakea suaveolens :: Sweet Hakea Tree',
'1555 40th Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'1/12/16 0:00',
2016,
1,
2,
37.75778273,
-122.4993677
],
[
22346,
'Lophostemon confertus :: Brisbane Box',
'5280 03rd St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'6/27/14 0:00',
2014,
3,
3,
37.72954822,
-122.3926894
],
[
23567,
'Platanus x hispanica :: Sycamore: London Plane',
'2975 Van Ness Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'5/27/92 0:00',
1992,
25,
3,
37.80304673,
-122.4250636
],
[
237469,
'Prunus cerasifera :: Cherry Plum',
'4200 23rd St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'7/17/00 0:00',
2000,
17,
0,
37.7528239,
-122.4366208
],
[
244214,
'Tree(s) ::',
'342 Scott St',
false,
'Sidewalk: Curb side : Yard',
'Tree',
'3/20/17 0:00',
2017,
0,
3,
37.77300994,
-122.4355982
],
[
21823,
'Platanus x hispanica :: Sycamore: London Plane',
'2741 Taylor St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'8/19/06 0:00',
2006,
11,
3,
37.80797069,
-122.4158502
],
[
188686,
'Acacia melanoxylon :: Blackwood Acacia',
'1300 Evans Ave',
false,
':',
'Tree',
null,
null,
null,
12,
37.73901484,
-122.381104
],
[
196592,
'Pyrus calleryana :: Ornamental Pear',
'43 Lafayette St',
false,
':',
'Tree',
null,
null,
null,
8,
37.77310137,
-122.4173585
],
[
22614,
'Acacia melanoxylon :: Blackwood Acacia',
'1001 Turk St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
24,
37.78136501,
-122.4248636
],
[
10933,
'Lophostemon confertus :: Brisbane Box',
'1359 Hudson Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
12,
37.73743182,
-122.3840631
],
[
2889,
'Platanus x hispanica :: Sycamore: London Plane',
'1545 California St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
65,
37.79059396,
-122.4198251
],
[
240126,
"Prunus serrulata 'Kwanzan' :: Kwanzan Flowering Cherry",
'20 Lily St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
4,
37.77473647,
-122.4213262
],
[
183515,
'Myoporum laetum :: Myoporum',
'2562 26th Ave',
false,
'Sidewalk: Curb side : Yard',
'Tree',
'3/21/17 0:00',
2017,
0,
3,
37.73970633,
-122.4828998
],
[
13434,
'Platanus x hispanica :: Sycamore: London Plane',
'2X Market St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
6,
37.79448363,
-122.3950546
],
[
226924,
'Juniperus chinensis :: Juniper',
'1 Newburg St',
false,
'Sidewalk: Property side : Pot',
'Tree',
null,
null,
null,
11,
37.74625595,
-122.4338758
],
[
192589,
'Lophostemon confertus :: Brisbane Box',
'1390 Mission St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
4,
37.7755405,
-122.4157935
],
[
3558,
'Lophostemon confertus :: Brisbane Box',
'101 Cargo Way',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/21/17 17:52',
2017,
0,
6,
37.74050235,
-122.3776366
],
[
222540,
'Callistemon viminalis :: Weeping Bottlebrush',
'1 Newburg St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
6,
37.74632546,
-122.4338277
],
[
192590,
'Lophostemon confertus :: Brisbane Box',
'1390 Mission St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
4,
37.7755405,
-122.4157935
],
[
28375,
'Magnolia grandiflora :: Southern Magnolia',
'3014 Sacramento St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'10/9/03 0:00',
2003,
14,
3,
37.78875791,
-122.4429785
],
[
222539,
'Callistemon viminalis :: Weeping Bottlebrush',
'1 Newburg St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
6,
37.74630146,
-122.4338571
],
[
226925,
'Juniperus chinensis :: Juniper',
'1 Newburg St',
false,
'Sidewalk: Property side : Pot',
'Tree',
null,
null,
null,
19,
37.74628109,
-122.4338516
],
[
27522,
'Metrosideros excelsa :: New Zealand Xmas Tree',
'3201 California St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
8,
37.78709954,
-122.4473685
],
[
18228,
'Maytenus boaria :: Mayten',
'1737-1795 Post St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'4/9/04 0:00',
2004,
13,
12,
37.78534132,
-122.431005
],
[
17325,
'Fraxinus americana :: American Ash',
'150 Otis St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'8/31/16 0:00',
2016,
1,
3,
37.77095437,
-122.4203558
],
[
3528,
'Lophostemon confertus :: Brisbane Box',
'201X Cargo Way',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/21/17 16:23',
2017,
0,
3,
37.74144532,
-122.3793046
],
[
251186,
'Juniperus chinensis :: Juniper',
'3042 Steiner St',
false,
'Sidewalk: Property side : Cutout',
'Tree',
null,
null,
null,
null,
37.79753285,
-122.4371106
],
[
138938,
'Tree(s) ::',
'632 HAYES ST',
false,
'Sidewalk: Curb side : Yard',
'Tree',
'3/21/17 0:00',
2017,
0,
3,
37.77646121,
-122.4269126
],
[
60867,
'Tree(s) ::',
null,
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'4/25/83 0:00',
1983,
34,
null,
null,
null
],
[
233897,
'Araucaria heterophylla :: Norfolk Island Pine',
'1021 Noe St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
9,
37.75266993,
-122.4318862
],
[
251187,
'Schinus terebinthifolius :: Brazilian Pepper',
'1 Baker St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.77112958,
-122.4406092
],
[
121137,
'Pittosporum undulatum :: Victorian Box',
'1388x Minna St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'9/8/16 0:00',
2016,
1,
3,
null,
null
],
[
2909,
'Platanus x hispanica :: Sycamore: London Plane',
'1700 California St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
30,
37.79038763,
-122.4229834
],
[
27602,
'Pittosporum undulatum :: Victorian Box',
'988 Fulton St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
20,
37.77766599,
-122.4324106
],
[
44642,
'Tree(s) ::',
null,
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'4/29/01 0:00',
2001,
16,
null,
null,
null
],
[
4749,
'Acacia melanoxylon :: Blackwood Acacia',
'1255 Columbus Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'8/3/15 0:00',
2015,
2,
8,
37.80577303,
-122.4182612
],
[
44994,
'Tree(s) ::',
null,
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'4/25/01 0:00',
2001,
16,
null,
null,
null
],
[
121139,
'Pittosporum undulatum :: Victorian Box',
'1388x Minna St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'9/8/16 0:00',
2016,
1,
3,
null,
null
],
[
226596,
'Leptospermum scoparium :: New Zealand Tea Tree',
'1 Newburg St',
false,
'Sidewalk: Property side : Pot',
'Tree',
null,
null,
null,
4,
37.74632473,
-122.4337918
],
[
239043,
'Pyrus calleryana :: Ornamental Pear',
'10 12th St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
13,
37.77381038,
-122.4194082
],
[
222541,
'Callistemon citrinus :: Lemon Bottlebrush',
'1 Newburg St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
5,
37.7463451,
-122.433801
],
[
138748,
'Lophostemon confertus :: Brisbane Box',
'1614 Broderick St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
0,
37.7853077,
-122.4415226
],
[
226926,
'Juniperus chinensis :: Juniper',
'1 Newburg St',
false,
'Sidewalk: Property side : Pot',
'Tree',
null,
null,
null,
15,
37.74630146,
-122.4338212
],
[
222538,
'Callistemon viminalis :: Weeping Bottlebrush',
'1 Newburg St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
6,
37.74627164,
-122.4338847
],
[
166623,
'Potential Site :: Potential Site',
'520 Jersey St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/21/17 0:00',
2017,
0,
3,
37.75036438,
-122.4371358
],
[
251188,
'Schinus terebinthifolius :: Brazilian Pepper',
'1 Baker St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.77112958,
-122.4406092
],
[
19206,
'Laurus nobilis :: Sweet Bay: Grecian Laurel',
'630 Sansome St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
12,
37.79625001,
-122.4016986
],
[
121138,
'Pittosporum undulatum :: Victorian Box',
'1388x Minna St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'9/8/16 0:00',
2016,
1,
3,
null,
null
],
[
251206,
"Prunus serrulata 'Kwanzan' :: Kwanzan Flowering Cherry",
'270 Trumbull St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.73083203,
-122.4245292
],
[
25725,
'Platanus x hispanica :: Sycamore: London Plane',
'729 Grove St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
12,
37.77705272,
-122.4286972
],
[
251249,
'Private shrub :: Private Shrub',
'161 Lundys Ln',
false,
'Front Yard : Yard',
'Landscaping',
null,
null,
null,
null,
37.7429691,
-122.4194092
],
[
251293,
'::',
'3789 Market St',
false,
'Sidewalk: Property side : Cutout',
'Landscaping',
null,
null,
null,
null,
37.75373446,
-122.442203
],
[
221749,
'Pittosporum undulatum :: Victorian Box',
'275 Grattan St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
null,
null,
null,
24,
37.76366261,
-122.4520649
],
[
221750,
'Pittosporum undulatum :: Victorian Box',
'275 Grattan St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
null,
null,
null,
11,
37.76366331,
-122.4521462
],
[
245474,
'Pittosporum undulatum :: Victorian Box',
'275 Grattan St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
null,
null,
null,
19,
37.76363745,
-122.4522558
],
[
251419,
'Melaleuca quinquenervia :: Cajeput',
'39 Jones St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'4/14/15 0:00',
2015,
2,
null,
37.78164643,
-122.4122686
],
[
251418,
'Melaleuca quinquenervia :: Cajeput',
'39 Jones St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'4/14/15 0:00',
2015,
2,
null,
37.78164643,
-122.4122686
],
[
16698,
'Pittosporum undulatum :: Victorian Box',
'950X Noriega St',
false,
'Median : Cutout',
'Landscaping',
null,
null,
null,
12,
37.75434951,
-122.4740143
],
[
251532,
'::',
'2100X 20th St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'5/15/17 0:00',
2017,
0,
3,
null,
null
],
[
251531,
'::',
'2100X 20th St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'5/15/17 0:00',
2017,
0,
3,
null,
null
],
[
251642,
'Shrub :: Shrub',
'2253 Broderick St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
null,
null,
null,
null,
37.79122797,
-122.4428704
],
[
251700,
'::',
'1560 Sanchez St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'6/5/17 0:00',
2017,
0,
3,
37.74408823,
-122.4290963
],
[
253008,
'::',
'1201 Tennessee St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'7/10/17 0:00',
2017,
0,
3,
37.7563302,
-122.3890342
],
[
208471,
'Cordyline australis :: Dracena Palm',
'1175 Kirkham St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'8/23/17 0:00',
2017,
0,
3,
37.75989512,
-122.4735278
],
[
253411,
'Lophostemon confertus :: Brisbane Box',
'1321 Mission St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'8/30/17 0:00',
2017,
0,
3,
37.77599135,
-122.4149312
],
[
253409,
'Lophostemon confertus :: Brisbane Box',
'1321 Mission St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'8/30/17 0:00',
2017,
0,
3,
37.77599135,
-122.4149312
],
[
253410,
'Lophostemon confertus :: Brisbane Box',
'1321 Mission St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'8/30/17 0:00',
2017,
0,
3,
37.77599135,
-122.4149312
],
[
253412,
'Lophostemon confertus :: Brisbane Box',
'1321 Mission St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'8/30/17 0:00',
2017,
0,
3,
37.77599135,
-122.4149312
],
[
225282,
'Pittosporum crassifolium :: Karo Tree',
'101 Rivoli St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
null,
null,
null,
6,
37.76244046,
-122.4496446
],
[
173852,
'::',
'450 Toland St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'1/27/17 0:00',
2017,
0,
3,
37.74445161,
-122.3985096
],
[
173849,
'::',
'450 Toland St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'1/27/17 0:00',
2017,
0,
3,
37.74445161,
-122.3985096
],
[
173850,
'::',
'450 Toland St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'1/27/17 0:00',
2017,
0,
3,
37.74445161,
-122.3985096
],
[
173851,
'::',
'450 Toland St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'1/27/17 0:00',
2017,
0,
3,
37.74445161,
-122.3985096
],
[
173848,
'::',
'450 Toland St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'1/27/17 0:00',
2017,
0,
3,
37.74445161,
-122.3985096
],
[
173846,
'::',
'450 Toland St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'1/27/17 0:00',
2017,
0,
3,
37.74445161,
-122.3985096
],
[
173847,
'::',
'450 Toland St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'1/27/17 0:00',
2017,
0,
3,
37.74445161,
-122.3985096
],
[
173853,
'::',
'450 Toland St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'1/27/17 0:00',
2017,
0,
3,
37.74445161,
-122.3985096
],
[
107717,
'Tree(s) ::',
'2400X 25th Ave',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'10/16/14 0:00',
2014,
3,
3,
37.74238326,
-122.4917845
],
[
110194,
'Ginkgo biloba :: Maidenhair Tree',
'2123 Pierce St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/26/15 0:00',
2015,
2,
3,
37.78980712,
-122.4374813
],
[
59839,
'Metrosideros excelsa :: New Zealand Xmas Tree',
'1201 Palou Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'10/10/81 0:00',
1981,
36,
3,
37.72976741,
-122.3836854
],
[
183689,
'Rhamnus alaternus :: Italian Buckthorn',
'1341 42nd Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
6,
37.76162779,
-122.5017998
],
[
18916,
'Olea europaea :: Olive Tree',
'2621 Sacramento St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
14,
37.78950262,
-122.4361188
],
[
20281,
'Metrosideros excelsa :: New Zealand Xmas Tree',
'20X Sunset Blvd',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
12,
null,
null
],
[
119758,
'Maytenus boaria :: Mayten',
'151X Octavia St Frontage West',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
null,
null
],
[
228560,
'Lophostemon confertus :: Brisbane Box',
'700 Valencia St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
7,
37.76151469,
-122.4216727
],
[
18052,
'Ulmus parvifolia :: Chinese Elm',
'2840 Pine St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
18,
37.78687837,
-122.4426898
],
[
212622,
'Prunus cerasifera :: Cherry Plum',
'115 Beverly St',
false,
'Sidewalk: Property side : Yard',
'Tree',
null,
null,
null,
4,
37.71819234,
-122.4717606
],
[
20398,
'Cupressus macrocarpa :: Monterey Cypress',
'262X Sunset Blvd',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
24,
null,
null
],
[
66855,
'Maytenus boaria :: Mayten',
'2041 Hayes St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'11/15/91 0:00',
1991,
26,
8,
37.77336241,
-122.4501107
],
[
237033,
"Prunus serrulata 'Kwanzan' :: Kwanzan Flowering Cherry",
'100 Octavia St',
false,
':',
'Tree',
null,
null,
null,
6,
37.77334931,
-122.4236445
],
[
116641,
'Ginkgo biloba :: Maidenhair Tree',
'270 Brannan St',
false,
'Sidewalk: Property side : Cutout',
'Tree',
null,
null,
null,
1,
37.78270018,
-122.3912181
],
[
218972,
'Fraxinus americana :: American Ash',
'742 Myra Way',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
10,
37.74058076,
-122.4513096
],
[
47510,
"Arbutus 'Marina' :: Hybrid Strawberry Tree",
'54X Cayuga Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/27/17 0:00',
2017,
0,
3,
37.73158339,
-122.4295272
],
[
237030,
"Prunus serrulata 'Kwanzan' :: Kwanzan Flowering Cherry",
'100 Octavia St',
false,
':',
'Tree',
null,
null,
null,
5,
37.77325086,
-122.4236179
],
[
213016,
'Tree(s) ::',
'120 Ortega St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/27/17 0:00',
2017,
0,
3,
37.75295695,
-122.4649514
],
[
228561,
'Lophostemon confertus :: Brisbane Box',
'700 Valencia St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
7,
37.76156532,
-122.4216758
],
[
72565,
'Ginkgo biloba :: Maidenhair Tree',
'270 Brannan St',
false,
'Sidewalk: Property side : Cutout',
'Tree',
'11/16/96 0:00',
1996,
21,
3,
37.78270018,
-122.3912181
],
[
116640,
'Ginkgo biloba :: Maidenhair Tree',
'270 Brannan St',
false,
'Sidewalk: Property side : Cutout',
'Tree',
null,
null,
null,
1,
37.78270018,
-122.3912181
],
[
6337,
'Metrosideros excelsa :: New Zealand Xmas Tree',
'1916 Ellis St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
18,
37.78175831,
-122.4377689
],
[
832,
'Lagunaria patersonii :: Primrose Tree',
'1396 47th Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:18',
2017,
0,
3,
37.76054428,
-122.5069327
],
[
251241,
'Cupressocyparis leylandii :: Leyland Cypress',
'2305 Golden Gate Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.77731326,
-122.448748
],
[
18836,
"Ficus microcarpa nitida 'Green Gem' :: Indian Laurel Fig Tree 'Green Gem'",
'2055 Sacramento St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
12,
37.79068779,
-122.4267446
],
[
11598,
'Lagunaria patersonii :: Primrose Tree',
'4134 Judah St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 11:51',
2017,
0,
3,
37.76048345,
-122.5065435
],
[
111561,
'Eriobotrya deflexa :: Bronze Loquat',
'1498x Kansas St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 0:00',
2017,
0,
3,
37.75089751,
-122.402317
],
[
97319,
'Lagunaria patersonii :: Primrose Tree',
'1038 Taraval St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:52',
2017,
0,
3,
37.74306751,
-122.4774242
],
[
58021,
'Lagunaria patersonii :: Primrose Tree',
'4026 Irving St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:07',
2017,
0,
3,
37.76257173,
-122.5012197
],
[
175046,
'Metrosideros excelsa :: New Zealand Xmas Tree',
'80X Junipero Serra Blvd',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
4,
37.71164354,
-122.4709833
],
[
26071,
'Melaleuca quinquenervia :: Cajeput',
'247 Orizaba Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 13:41',
2017,
0,
3,
37.71342972,
-122.4626502
],
[
11606,
'Lagunaria patersonii :: Primrose Tree',
'4200x Judah St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 11:54',
2017,
0,
3,
37.76045095,
-122.5071358
],
[
36617,
'Robinia x ambigua :: Locust',
null,
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'5/20/98 0:00',
1998,
19,
null,
null,
null
],
[
24532,
'Lagunaria patersonii :: Primrose Tree',
'1395 47th Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:21',
2017,
0,
3,
37.76072337,
-122.5070915
],
[
5972,
'Pittosporum undulatum :: Victorian Box',
'1550 Eddy St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'2/2/90 0:00',
1990,
27,
8,
37.78138444,
-122.4331105
],
[
830,
"Tristaniopsis laurina 'Elegant' :: Small-leaf Tristania 'Elegant'",
'1384 47th Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:15',
2017,
0,
3,
37.76071635,
-122.5069447
],
[
251225,
'Jacaranda mimosifolia :: Jacaranda',
'1 Yukon St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.75927435,
-122.4422441
],
[
54712,
'Lagunaria patersonii :: Primrose Tree',
'4508 Irving St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 11:58',
2017,
0,
3,
37.76234527,
-122.5063635
],
[
3193,
'Platanus x hispanica :: Sycamore: London Plane',
'3698 California St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
16,
37.78640011,
-122.454267
],
[
21682,
'Prunus serrulata :: Ornamental Cherry',
'1830 Sutter St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 0:00',
2017,
0,
3,
37.78651577,
-122.4305403
],
[
97322,
'Lagunaria patersonii :: Primrose Tree',
'1055 Taraval St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:42',
2017,
0,
3,
37.74287614,
-122.4775411
],
[
175377,
'Ulmus pumila :: Siberian Elm',
'80X Junipero Serra Blvd',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
2,
37.71516198,
-122.4717512
],
[
142720,
'::',
'1170 COLUMBUS AVE',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.80483123,
-122.416565
],
[
251231,
'Pinus radiata :: Monterey Pine',
'164 Serrano Dr',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.72047169,
-122.4780251
],
[
29943,
"Tristaniopsis laurina 'Elegant' :: Small-leaf Tristania 'Elegant'",
'242 Broad St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:23',
2017,
0,
3,
37.71323398,
-122.4605594
],
[
97323,
'Lagunaria patersonii :: Primrose Tree',
'1011 Taraval St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:25',
2017,
0,
3,
37.74289372,
-122.4772138
],
[
11582,
'Lagunaria patersonii :: Primrose Tree',
'4000 Judah St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 11:49',
2017,
0,
3,
37.76055019,
-122.5050036
],
[
251230,
'Ligustrum lucidum :: Glossy Privet',
'99x Ogden Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.73605476,
-122.4163909
],
[
251232,
'Ligustrum lucidum :: Glossy Privet',
'99x Ogden Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.73605476,
-122.4163909
],
[
179480,
'Schinus terebinthifolius :: Brazilian Pepper',
'100 Serrano Dr',
false,
'Sidewalk: Curb side : Yard',
'Tree',
null,
null,
null,
11,
37.72024935,
-122.4780157
],
[
251221,
'Tree(s) ::',
'2401X Washington St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 0:00',
2017,
0,
3,
null,
null
],
[
48827,
'Lophostemon confertus :: Brisbane Box',
'435 Pacific Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'11/7/02 0:00',
2002,
15,
5,
37.79736024,
-122.4027685
],
[
251242,
'Cupressocyparis leylandii :: Leyland Cypress',
'2449 Golden Gate Ave',
false,
'Sidewalk: Property side : Cutout',
'Tree',
null,
null,
null,
null,
37.7770353,
-122.4514366
],
[
48332,
'Tree(s) ::',
null,
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'7/17/02 0:00',
2002,
15,
null,
null,
null
],
[
175044,
'Metrosideros excelsa :: New Zealand Xmas Tree',
'80x Junipero Serra Blvd',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
19,
37.71158043,
-122.4709734
],
[
251226,
'Koelreuteria paniculata :: Golden Rain Tree',
'1 Yukon St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.75950087,
-122.4421669
],
[
17881,
'Olea europaea :: Olive Tree',
'2205 Pine St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
12,
37.78806671,
-122.4322373
],
[
24515,
'Lophostemon confertus :: Brisbane Box',
'2030 Fell St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'4/7/16 7:40',
2016,
1,
3,
37.77238102,
-122.4513341
],
[
97317,
'Lagunaria patersonii :: Primrose Tree',
'1000 Taraval St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:59',
2017,
0,
3,
37.74308434,
-122.4769891
],
[
2985,
'Platanus x hispanica :: Sycamore: London Plane',
'2253 California St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
65,
37.78912498,
-122.4314293
],
[
182083,
'Lagunaria patersonii :: Primrose Tree',
'1101 Taraval St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:33',
2017,
0,
3,
37.74285808,
-122.4780077
],
[
18700,
'Platanus x hispanica :: Sycamore: London Plane',
'100X Richardson Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
18,
37.79975916,
-122.4460044
],
[
9914,
"Ficus microcarpa nitida 'Green Gem' :: Indian Laurel Fig Tree 'Green Gem'",
'1900 Gough St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
126,
37.79116413,
-122.4257789
],
[
93463,
"Prunus x 'Amanogawa' :: Flowering Cherry",
'1739 Taraval St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 13:05',
2017,
0,
3,
37.74255391,
-122.4849289
],
[
15429,
"Ficus microcarpa nitida 'Green Gem' :: Indian Laurel Fig Tree 'Green Gem'",
'2125 Mission St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'4/9/15 0:00',
2015,
2,
15,
37.76296062,
-122.419386
],
[
138801,
'Maytenus boaria :: Mayten',
'2375 PINE ST',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'5/9/97 0:00',
1997,
20,
2,
37.78770158,
-122.4350685
],
[
251243,
"Ceanothus 'Ray Hartman' :: California Lilac 'Ray Hartman'",
'299x Chapman St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.7417247,
-122.411639
],
[
138359,
'Ficus retusa nitida :: Banyan Fig',
'2060 SUTTER ST',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
15,
37.78607841,
-122.4338643
],
[
251248,
'Corymbia ficifolia :: Red Flowering Gum',
'829 Chenery St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.73477716,
-122.4360662
],
[
138368,
'Ficus retusa nitida :: Banyan Fig',
'2060 SUTTER ST',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
13,
37.78600955,
-122.4344937
],
[
138807,
'Ulmus parvifolia :: Chinese Elm',
'2355 PINE ST',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
13,
37.78777373,
-122.4346006
],
[
57209,
'Magnolia grandiflora :: Southern Magnolia',
'2898 Clay St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'12/15/14 0:00',
2014,
3,
3,
37.78998742,
-122.4404101
],
[
210495,
'Myoporum laetum :: Myoporum',
'365 San Leandro Way',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
21,
37.73051136,
-122.4689316
],
[
138369,
'Ficus retusa nitida :: Banyan Fig',
'2060 SUTTER ST',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
16,
37.78599791,
-122.4345397
],
[
6069,
'Metrosideros excelsa :: New Zealand Xmas Tree',
'1930 Eddy St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'5/26/15 0:00',
2015,
2,
3,
37.78057618,
-122.439557
],
[
138802,
'Ulmus parvifolia :: Chinese Elm',
'2375 PINE ST',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
12,
37.78771109,
-122.4350205
],
[
138365,
'Ficus retusa nitida :: Banyan Fig',
'2060 SUTTER ST',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
19,
37.78603526,
-122.4342542
],
[
251246,
'Metrosideros excelsa :: New Zealand Xmas Tree',
'722X Mendell St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.73887284,
-122.3866046
],
[
251245,
'Corymbia ficifolia :: Red Flowering Gum',
'701 Chenery St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'6/4/92 0:00',
1992,
25,
null,
37.73445362,
-122.4338962
],
[
103786,
'Magnolia grandiflora :: Southern Magnolia',
'1221 Polk St',
false,
'Sidewalk: Curb side : Pot',
'Tree',
'11/1/09 0:00',
2009,
8,
3,
37.78810145,
-122.4202677
],
[
138362,
'Ficus retusa nitida :: Banyan Fig',
'2060 SUTTER ST',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
15,
37.78605488,
-122.4340541
],
[
134567,
'Platanus x hispanica :: Sycamore: London Plane',
'99 Grove St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'7/6/11 0:00',
2011,
6,
4,
37.77846618,
-122.4173997
],
[
138367,
'Ficus retusa nitida :: Banyan Fig',
'2060 SUTTER ST',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
15,
37.78601298,
-122.4344509
]
]
}
};
================================================
FILE: examples/custom-reducer/src/main.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React from 'react';
import ReactDOM from 'react-dom/client';
import document from 'global/document';
import Modal from 'react-modal';
import {Provider} from 'react-redux';
import store from './store';
import App from './app';
Modal.setAppElement('#root');
const Root = () => (
);
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render( );
================================================
FILE: examples/custom-reducer/src/store.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {createStore, combineReducers, applyMiddleware, compose} from 'redux';
import keplerGlReducer, {uiStateUpdaters, enhanceReduxMiddleware} from '@kepler.gl/reducers';
import appReducer from './app-reducer';
import Window from 'global/window';
const customizedKeplerGlReducer = keplerGlReducer
.initialState({
uiState: {
// hide side panel to disallower user customize the map
readOnly: true,
// customize which map control button to show
mapControls: {
...uiStateUpdaters.DEFAULT_MAP_CONTROLS,
visibleLayers: {
show: false
},
mapLegend: {
show: true,
active: true
},
toggle3d: {
show: false
},
splitMap: {
show: false
}
}
}
})
// handle additional actions
.plugin({
HIDE_AND_SHOW_SIDE_PANEL: state => ({
...state,
uiState: {
...state.uiState,
readOnly: !state.uiState.readOnly
}
})
});
const reducers = combineReducers({
keplerGl: customizedKeplerGlReducer,
app: appReducer
});
const middlewares = enhanceReduxMiddleware([]);
const enhancers = [applyMiddleware(...middlewares)];
const initialState = {};
// add redux devtools
const composeEnhancers = Window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
export default createStore(reducers, initialState, composeEnhancers(...enhancers));
================================================
FILE: examples/custom-theme/.babelrc
================================================
{
"presets": [
"@babel/preset-env",
"@babel/preset-react",
"@babel/preset-typescript"
]
}
================================================
FILE: examples/custom-theme/README.md
================================================
# Customize kepler.gl Theme
This example show how to customize Kepler.gl theme
1. Define an object (theme) to override Kepler.gl style
2. Pass the newly created object as prop to KeplerGl react component
#### 1. Install
```sh
yarn
```
#### 2. Mapbox Token
add mapbox access token to node env
```sh
export MapboxAccessToken=
```
#### 3. Start the app
```sh
yarn start
```
================================================
FILE: examples/custom-theme/esbuild.config.mjs
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import esbuild from 'esbuild';
import {replace} from 'esbuild-plugin-replace';
import {dotenvRun} from '@dotenv-run/esbuild';
import copyPlugin from 'esbuild-plugin-copy';
import process from 'node:process';
import fs from 'node:fs';
import {spawn} from 'node:child_process';
import {join} from 'node:path';
const args = process.argv;
const port = 8080;
const NODE_ENV = JSON.stringify(process.env.NODE_ENV || 'production');
// Ensure a single instance of React and friends to avoid invalid hook calls
const ROOT_NODE_MODULES = join('..', '..', 'node_modules');
const thirdPartyAliases = {
react: join(ROOT_NODE_MODULES, 'react'),
'react-dom': join(ROOT_NODE_MODULES, 'react-dom'),
'react-redux': join(ROOT_NODE_MODULES, 'react-redux', 'lib'),
'styled-components': join(ROOT_NODE_MODULES, 'styled-components'),
'apache-arrow': join(ROOT_NODE_MODULES, 'apache-arrow')
};
const config = {
platform: 'browser',
format: 'iife',
logLevel: 'info',
loader: {
'.js': 'jsx',
'.css': 'css',
'.ttf': 'file',
'.woff': 'file',
'.woff2': 'file'
},
entryPoints: ['src/main.js'],
outfile: 'dist/bundle.js',
bundle: true,
define: {
NODE_ENV,
'process.env.MapboxAccessToken': JSON.stringify(process.env.MapboxAccessToken || '')
},
plugins: [
dotenvRun({
verbose: true,
environment: NODE_ENV,
root: '../../.env'
}),
replace({
__PACKAGE_VERSION__: '3.1.10',
include: /constants\/src\/default-settings\.ts/
}),
copyPlugin({
resolveFrom: 'cwd',
assets: {
from: ['index.html'],
to: ['dist/index.html']
}
})
]
};
function openURL(url) {
const cmd = {
darwin: ['open'],
linux: ['xdg-open'],
win32: ['cmd', '/c', 'start']
};
const command = cmd[process.platform];
if (command) {
spawn(command[0], [...command.slice(1), url]);
}
}
(async () => {
if (args.includes('--build')) {
const result = await esbuild
.build({
...config,
alias: thirdPartyAliases,
minify: true,
sourcemap: false,
metafile: true,
define: {
...config.define,
'process.env.NODE_ENV': '"production"'
},
drop: ['console', 'debugger'],
treeShaking: true
})
.catch(e => {
console.error(e);
process.exit(1);
});
fs.writeFileSync('dist/esbuild-metadata.json', JSON.stringify(result.metafile));
}
if (args.includes('--start')) {
await esbuild
.context({
...config,
alias: thirdPartyAliases,
minify: false,
sourcemap: true,
banner: {
js: `new EventSource('/esbuild').addEventListener('change', () => location.reload());`
}
})
.then(async ctx => {
await ctx.watch();
await ctx.serve({
servedir: 'dist',
port,
fallback: 'dist/index.html',
onRequest: ({remoteAddress, method, path, status, timeInMS}) => {
console.info(remoteAddress, status, `"${method} ${path}" [${timeInMS}ms]`);
}
});
console.info(`kepler.gl custom-theme example running at ${`http://localhost:${port}`}`);
openURL(`http://localhost:${port}`);
})
.catch(e => {
console.error(e);
process.exit(1);
});
}
})();
================================================
FILE: examples/custom-theme/index.html
================================================
kepler.gl demo
================================================
FILE: examples/custom-theme/package.json
================================================
{
"scripts": {
"start": "node esbuild.config.mjs --start",
"build": "node esbuild.config.mjs --build",
"start-local": "NODE_ENV=local node esbuild.config.mjs --start"
},
"dependencies": {
"@kepler.gl/components": "^3.1.10",
"@kepler.gl/reducers": "^3.1.10",
"global": "^4.3.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-palm": "^3.3.6",
"react-redux": "^8.0.5",
"react-virtualized": "^9.21.0",
"redux-actions": "^2.2.1",
"styled-components": "6.1.8"
},
"devDependencies": {
"@dotenv-run/esbuild": "^1.5.0",
"esbuild": "^0.25.0",
"esbuild-plugin-copy": "^2.1.1",
"esbuild-plugin-replace": "^1.4.0"
}
}
================================================
FILE: examples/custom-theme/src/actions.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
// CONSTANTS
export const INIT = 'INIT';
// ACTIONS
export function initApp() {
return {
type: INIT
};
}
================================================
FILE: examples/custom-theme/src/app.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React, {useEffect, useState} from 'react';
import styled from 'styled-components';
import Window from 'global/window';
import {connect} from 'react-redux';
import KeplerGl from '@kepler.gl/components';
const MAPBOX_TOKEN = process.env.MapboxAccessToken; // eslint-disable-line
const theme = {
sidePanelBg: '#ffffff',
titleTextColor: '#000000',
sidePanelHeaderBg: '#f7f7F7',
subtextColorActive: '#2473bd',
tooltipBg: '#1869b5',
tooltipColor: '#ffffff',
dropdownListBgd: '#ffffff',
textColorHl: '#2473bd',
inputBgd: '#f7f7f7',
inputBgdHover: '#ffffff',
inputBgdActive: '#ffffff',
dropdownListHighlightBg: '#f0f0f0',
panelBackground: '#f7f7F7',
panelBackgroundHover: '#f7f7F7',
secondaryInputBgd: '#f7f7F7',
secondaryInputBgdActive: '#f7f7F7',
secondaryInputBgdHover: '#ffffff',
panelActiveBg: '#f7f7F7'
};
const emptyTheme = {};
const StyleSwitch = styled.div`
position: absolute;
bottom: 24px;
right: 24px;
background-color: whitesmoke;
padding: 4px;
z-index: 1000;
border-radius: 3px;
border: 1px solid mediumseagreen;
`;
function App() {
const [customTheme, setTheme] = useState(false);
const [windowDimension, setDimension] = useState({
width: Window.innerWidth,
height: Window.innerHeight
});
useEffect(() => {
const handleResize = () => {
setDimension({width: Window.innerWidth, height: Window.innerHeight});
};
Window.addEventListener('resize', handleResize);
return () => Window.removeEventListener('resize', handleResize);
}, []);
return (
Custom theme
setTheme(e.target.checked)}
/>
state.demo.keplerGl}
width={windowDimension.width}
height={windowDimension.height}
theme={customTheme ? theme : emptyTheme}
/>
);
// }
}
const mapStateToProps = state => state;
const dispatchToProps = dispatch => ({dispatch});
export default connect(mapStateToProps, dispatchToProps)(App);
================================================
FILE: examples/custom-theme/src/main.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React from 'react';
import ReactDOM from 'react-dom/client';
import document from 'global/document';
import Modal from 'react-modal';
import {Provider} from 'react-redux';
import store from './store';
import App from './app';
Modal.setAppElement('#root');
const Root = () => (
);
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render( );
================================================
FILE: examples/custom-theme/src/reducers/index.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {combineReducers} from 'redux';
import {handleActions} from 'redux-actions';
import keplerGlReducer from '@kepler.gl/reducers';
import {INIT} from '../actions';
// INITIAL_APP_STATE
const initialAppState = {
appName: 'example'
};
// App reducer
export const appReducer = handleActions(
{
[INIT]: state => ({
...state,
loaded: true
})
},
initialAppState
);
// export demoReducer to be combined in website app
export default combineReducers({
// mount keplerGl reducer
keplerGl: keplerGlReducer,
app: appReducer
});
================================================
FILE: examples/custom-theme/src/store.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import Window from 'global/window';
import {combineReducers, createStore, applyMiddleware, compose} from 'redux';
import {enhanceReduxMiddleware} from '@kepler.gl/reducers';
import demoReducer from './reducers/index';
const reducers = combineReducers({
demo: demoReducer
});
const middlewares = enhanceReduxMiddleware([]);
export const enhancers = [applyMiddleware(...middlewares)];
const initialState = {};
// add redux devtools
const composeEnhancers = Window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
export default createStore(reducers, initialState, composeEnhancers(...enhancers));
================================================
FILE: examples/demo-app/.yarnrc.yml
================================================
# https://yarnpkg.com/configuration/yarnrc
nodeLinker: node-modules
# Define the registry to use when fetching packages.
npmRegistryServer: 'https://registry.yarnpkg.com'
================================================
FILE: examples/demo-app/README.md
================================================
# Demo App
This is the src code of kepler.gl demo app. You can copy this folder out and run it locally.
#### Pre requirement
- [Node.js ^18.x](http://nodejs.org): We use Node to generate the documentation, run a
development web server, run tests, and generate distributable files. Depending on your system,
you can install Node either from source or as a pre-packaged bundle.
- [Yarn 4.4.0](https://yarnpkg.com): We use Yarn to install our Node.js module dependencies
(rather than using npm). See the detailed [installation instructions][yarn-install].
#### 1. Install Dependencies
Go to the root directory and install the dependencies using yarn:
```sh
yarn bootstrap
```
Then, go to the `examples/demo-app` directory and install the dependencies using yarn:
```sh
yarn install
```
#### 2. Environment Variables
Create a `.env` file at the root directory by copying from `.env.template`:
```sh
cp .env.template .env
```
Then update the following environment variables in your `.env` file:
```sh
MAPBOX_ACCESS_TOKEN=
DROPBOX_CLIENT_ID=
MAPBOX_EXPORT_TOKEN=
CARTO_CLIENT_ID=
FOURSQUARE_CLIENT_ID=
FOURSQUARE_DOMAIN=
FOURSQUARE_USER_MAPS_URL=
```
#### 3. Start the app
```sh
yarn start:local
```
[yarn-install]: https://yarnpkg.com/getting-started/install
================================================
FILE: examples/demo-app/esbuild.config.mjs
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import esbuild from 'esbuild';
import {replace} from 'esbuild-plugin-replace';
import {dotenvRun} from '@dotenv-run/esbuild';
import process from 'node:process';
import fs from 'node:fs';
import {spawn} from 'node:child_process';
import {join} from 'node:path';
import KeplerPackage from '../../package.json' assert {type: 'json'};
const args = process.argv;
const BASE_NODE_MODULES_DIR = './node_modules';
const LIB_DIR = '../../';
const NODE_MODULES_DIR = join(LIB_DIR, 'node_modules');
const SRC_DIR = join(LIB_DIR, 'src');
// For debugging deck.gl, load deck.gl from external deck.gl directory
const EXTERNAL_DECK_SRC = join(LIB_DIR, 'deck.gl');
// For debugging loaders.gl, load loaders.gl from external loaders.gl directory
const EXTERNAL_LOADERS_SRC = join(LIB_DIR, 'loaders.gl');
// For debugging hubble.gl, load hubble.gl from external hubble.gl directory
const EXTERNAL_HUBBLE_SRC = join(LIB_DIR, '../../hubble.gl');
const port = 8080;
const getThirdPartyLibraryAliases = useKeplerNodeModules => {
const nodeModulesDir = useKeplerNodeModules ? NODE_MODULES_DIR : BASE_NODE_MODULES_DIR;
const localSources = useKeplerNodeModules
? {
// Suppress useless warnings from react-date-picker's dep
'tiny-warning': `${SRC_DIR}/utils/src/noop.ts`
}
: {};
return {
...localSources,
react: `${nodeModulesDir}/react`,
'react-dom': `${nodeModulesDir}/react-dom`,
'react-redux': `${nodeModulesDir}/react-redux/lib`,
'styled-components': `${nodeModulesDir}/styled-components`,
'react-intl': `${nodeModulesDir}/react-intl`,
'react-palm': `${nodeModulesDir}/react-palm`,
// kepler.gl and loaders.gl need to use same apache-arrow
'apache-arrow': `${nodeModulesDir}/apache-arrow`
};
};
// Env variables required for demo app
const requiredEnvVariables = [
'MapboxAccessToken',
'DropboxClientId',
'MapboxExportToken',
'CartoClientId',
'FoursquareClientId',
'FoursquareDomain',
'FoursquareAPIURL',
'FoursquareUserMapsURL'
];
/**
* Check for all required env variables to be present
*/
const checkEnvVariables = () => {
const missingVars = requiredEnvVariables.filter(key => !process.env[key]);
if (missingVars.length > 0) {
console.warn(`⚠️ Warning: Missing environment variables: ${missingVars.join(', ')}`);
} else {
console.log('✅ All required environment variables are set.');
}
};
const NODE_ENV = JSON.stringify(process.env.NODE_ENV || 'production');
const config = {
platform: 'browser',
format: 'iife',
logLevel: 'info',
loader: {
'.js': 'jsx',
'.css': 'css',
'.ttf': 'file',
'.woff': 'file',
'.woff2': 'file'
},
entryPoints: ['src/main.js'],
outfile: 'dist/bundle.js',
bundle: true,
define: {
NODE_ENV,
// Define process.env variables for browser environment
'process.env.MapboxAccessToken': JSON.stringify(process.env.MapboxAccessToken || ''),
'process.env.DropboxClientId': JSON.stringify(process.env.DropboxClientId || ''),
'process.env.MapboxExportToken': JSON.stringify(process.env.MapboxExportToken || ''),
'process.env.CartoClientId': JSON.stringify(process.env.CartoClientId || ''),
'process.env.FoursquareClientId': JSON.stringify(process.env.FoursquareClientId || ''),
'process.env.FoursquareDomain': JSON.stringify(process.env.FoursquareDomain || ''),
'process.env.FoursquareAPIURL': JSON.stringify(process.env.FoursquareAPIURL || ''),
'process.env.FoursquareUserMapsURL': JSON.stringify(process.env.FoursquareUserMapsURL || ''),
'process.env.NODE_ENV': NODE_ENV
},
plugins: [
dotenvRun({
verbose: true,
environment: NODE_ENV,
root: '../../.env'
}),
// automatically injected kepler.gl package version into the bundle
replace({
__PACKAGE_VERSION__: KeplerPackage.version,
include: /constants\/src\/default-settings\.ts/
})
]
};
function addAliases(externals, args) {
const resolveAlias = getThirdPartyLibraryAliases(true);
// Combine flags
const useLocalDeck = args.includes('--env.deck') || args.includes('--env.hubble_src');
const useRepoDeck = args.includes('--env.deck_src');
const useLocalAiAssistant = args.includes('--env.ai');
// resolve ai-assistant from local dir
if (useLocalAiAssistant) {
resolveAlias['@openassistant/core'] = join(LIB_DIR, '../openassistant/packages/core/src');
resolveAlias['@openassistant/ui'] = join(LIB_DIR, '../openassistant/packages/ui/src');
resolveAlias['@openassistant/echarts'] = join(
LIB_DIR,
'../openassistant/packages/components/echarts/src'
);
resolveAlias['@openassistant/tables'] = join(
LIB_DIR,
'../openassistant/packages/components/tables/src'
);
resolveAlias['@openassistant/geoda'] = join(
LIB_DIR,
'../openassistant/packages/tools/geoda/src'
);
resolveAlias['@openassistant/duckdb'] = join(
LIB_DIR,
'../openassistant/packages/tools/duckdb/src'
);
resolveAlias['@openassistant/plots'] = join(
LIB_DIR,
'../openassistant/packages/tools/plots/src'
);
resolveAlias['@openassistant/osm'] = join(LIB_DIR, '../openassistant/packages/tools/osm/src');
resolveAlias['@openassistant/utils'] = join(LIB_DIR, '../openassistant/packages/utils/src');
resolveAlias['@kepler.gl/ai-assistant'] = join(SRC_DIR, 'ai-assistant/src');
}
// resolve deck.gl from local dir
if (useLocalDeck || useRepoDeck) {
// Load deck.gl from root node_modules
// if env.deck_src Load deck.gl from deck.gl/modules/main/src folder parallel to kepler.gl
resolveAlias['deck.gl'] = useLocalDeck
? `${NODE_MODULES_DIR}/deck.gl/src`
: `${EXTERNAL_DECK_SRC}/modules/main/src`;
// if env.deck Load @deck.gl modules from root node_modules/@deck.gl
// if env.deck_src Load @deck.gl modules from deck.gl/modules folder parallel to kepler.gl
externals['deck.gl'].forEach(mdl => {
resolveAlias[`@deck.gl/${mdl}`] = useLocalDeck
? `${NODE_MODULES_DIR}/@deck.gl/${mdl}/src`
: `${EXTERNAL_DECK_SRC}/modules/${mdl}/src`;
// types are stored in different directory
resolveAlias[`@deck.gl/${mdl}/typed`] = useLocalDeck
? `${NODE_MODULES_DIR}/@deck.gl/${mdl}/typed`
: `${EXTERNAL_DECK_SRC}/modules/${mdl}/src/types`;
});
['luma.gl', 'probe.gl', 'loaders.gl'].forEach(name => {
// if env.deck Load ${name} from root node_modules
// if env.deck_src Load ${name} from deck.gl/node_modules folder parallel to kepler.gl
resolveAlias[name] = useLocalDeck
? `${NODE_MODULES_DIR}/${name}/src`
: name === 'probe.gl'
? `${EXTERNAL_DECK_SRC}/node_modules/${name}/src`
: `${EXTERNAL_DECK_SRC}/node_modules/@${name}/core/src`;
// if env.deck Load @${name} modules from root node_modules/@${name}
// if env.deck_src Load @${name} modules from deck.gl/node_modules/@${name} folder parallel to kepler.gl`
externals[name].forEach(mdl => {
resolveAlias[`@${name}/${mdl}`] = useLocalDeck
? `${NODE_MODULES_DIR}/@${name}/${mdl}/src`
: `${EXTERNAL_DECK_SRC}/node_modules/@${name}/${mdl}/src`;
});
});
}
if (args.includes('--env.loaders_src')) {
externals['loaders.gl'].forEach(mdl => {
resolveAlias[`@loaders.gl/${mdl}`] = `${EXTERNAL_LOADERS_SRC}/modules/${mdl}/src`;
});
}
if (args.includes('--env.hubble_src')) {
externals['hubble.gl'].forEach(mdl => {
resolveAlias[`@hubble.gl/${mdl}`] = `${EXTERNAL_HUBBLE_SRC}/modules/${mdl}/src`;
});
}
return resolveAlias;
}
function openURL(url) {
// Could potentially be replaced by https://www.npmjs.com/package/open, it was throwing an error when tried last
const cmd = {
darwin: ['open'],
linux: ['xdg-open'],
win32: ['cmd', '/c', 'start']
};
const command = cmd[process.platform];
if (command) {
spawn(command[0], [...command.slice(1), url]);
}
}
(async () => {
// local dev
const modules = ['@deck.gl', '@loaders.gl', '@luma.gl', '@probe.gl', '@hubble.gl'];
const loadAllDirs = modules.map(
dir =>
new Promise(success => {
fs.readdir(join(NODE_MODULES_DIR, dir), (err, items) => {
if (err) {
const colorRed = '\x1b[31m';
const colorReset = '\x1b[0m';
console.log(
`${colorRed}%s${colorReset}`,
`Cannot find ${dir} in node_modules, make sure it is installed. ${err}`
);
success(null);
}
success(items);
});
})
);
const externals = await Promise.all(loadAllDirs).then(results => ({
'deck.gl': results[0],
'loaders.gl': results[1],
'luma.gl': results[2],
'probe.gl': results[3],
'hubble.gl': results[4]
}));
const localAliases = addAliases(externals, args);
if (args.includes('--build')) {
await esbuild
.build({
...config,
minify: true,
sourcemap: false,
// Add alias resolution for build
alias: {
...getThirdPartyLibraryAliases(true)
},
// Add these production optimizations
define: {
...config.define,
'process.env.NODE_ENV': '"production"'
},
drop: ['console', 'debugger'],
treeShaking: true,
metafile: true,
// Optionally generate a bundle analysis
plugins: [
...config.plugins,
{
name: 'bundle-analyzer',
setup(build) {
build.onEnd(result => {
if (result.metafile) {
// Write bundle analysis to disk
fs.writeFileSync('meta.json', JSON.stringify(result.metafile));
}
});
}
}
]
})
.catch(e => {
console.error(e);
process.exit(1);
})
.then(() => {
checkEnvVariables();
});
}
if (args.includes('--start')) {
await esbuild
.context({
...config,
minify: false,
sourcemap: true,
// add alias to resolve libraries so there is only one copy of them
...(process.env.NODE_ENV === 'local'
? {alias: localAliases}
: {alias: getThirdPartyLibraryAliases(false)}),
banner: {
js: `new EventSource('/esbuild').addEventListener('change', () => location.reload());`
}
})
.then(async ctx => {
checkEnvVariables();
await ctx.watch();
await ctx.serve({
servedir: 'dist',
port,
fallback: 'dist/index.html',
onRequest: ({remoteAddress, method, path, status, timeInMS}) => {
console.info(remoteAddress, status, `"${method} ${path}" [${timeInMS}ms]`);
}
});
console.info(
`kepler.gl demo app running at ${`http://localhost:${port}`}, press Ctrl+C to stop`
);
openURL(`http://localhost:${port}`);
})
.catch(e => {
console.error(e);
process.exit(1);
});
}
})();
================================================
FILE: examples/demo-app/package.json
================================================
{
"scripts": {
"start": "node esbuild.config.mjs --start",
"build": "node esbuild.config.mjs --build",
"deploy": "yarn build && netlify deploy -d dist",
"deploy:prod": "yarn build && netlify deploy -d dist --prod",
"start:local": "NODE_ENV=local node esbuild.config.mjs --start",
"start:local-ai": "NODE_ENV=local node esbuild.config.mjs --start --env.ai",
"start:local-deck": "NODE_ENV=local node esbuild.config.mjs --start --env.deck",
"start:local-deck-src": "NODE_ENV=local node esbuild.config.mjs --start --env.deck_src",
"start:local-loaders-src": "NODE_ENV=local node esbuild.config.mjs --start --env.loaders_src",
"start:local-hubble-src": "NODE_ENV=local node esbuild.config.mjs --start --env.hubble_src"
},
"dependencies": {
"@auth0/auth0-spa-js": "^2.1.2",
"@carto/toolkit": "0.0.1-rc.18",
"@emotion/is-prop-valid": "^1.2.1",
"@kepler.gl/actions": "^3.2.0",
"@kepler.gl/ai-assistant": "^3.2.0",
"@kepler.gl/cloud-providers": "^3.2.0",
"@kepler.gl/components": "^3.2.0",
"@kepler.gl/constants": "^3.2.0",
"@kepler.gl/duckdb": "^3.2.0",
"@kepler.gl/processors": "^3.2.0",
"@kepler.gl/reducers": "^3.2.0",
"@kepler.gl/schemas": "^3.2.0",
"@kepler.gl/styles": "^3.2.0",
"@kepler.gl/utils": "^3.2.0",
"@loaders.gl/arrow": "^4.3.2",
"@loaders.gl/core": "^4.3.2",
"@loaders.gl/csv": "^4.3.2",
"@loaders.gl/json": "^4.3.2",
"@loaders.gl/parquet": "^4.3.2",
"@openassistant/core": "^0.5.17",
"@openassistant/ui": "^0.5.17",
"@types/classnames": "^2.3.1",
"@types/keymirror": "^0.1.1",
"apache-arrow": ">=15.0.0",
"classnames": "^2.2.1",
"d3-format": "^2.0.0",
"dropbox": "^4.0.12",
"esbuild": "^0.25.0",
"global": "^4.3.0",
"keymirror": "^0.1.1",
"markdown-to-jsx": "^7.7.6",
"prop-types": "^15.6.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-intl": "^6.3.0",
"react-redux": "^8.0.5",
"react-resizable-panels": "^2.1.7",
"react-router": "3.2.5",
"react-router-redux": "^4.0.8",
"react-virtualized": "^9.21.0",
"redux": "^4.2.1",
"redux-actions": "^2.2.1",
"redux-logger": "^3.0.6",
"redux-thunk": "^1.0.0",
"styled-components": "6.1.8",
"usehooks-ts": "^3.1.0"
},
"resolutions": {
"@luma.gl/core": "8.5.21",
"@luma.gl/webgl": "8.5.21",
"@deck.gl/core": "8.9.27",
"@deck.gl/extensions": "8.9.27",
"react-vis": "1.11.7"
},
"engines": {
"node": ">=18"
},
"volta": {
"node": "18.18.2",
"yarn": "4.4.0"
},
"packageManager": "yarn@4.4.0",
"devDependencies": {
"@dotenv-run/esbuild": "^1.5.0",
"esbuild-plugin-replace": "^1.4.0"
}
}
================================================
FILE: examples/demo-app/src/actions.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {push} from 'react-router-redux';
import {fetch} from 'global';
import {loadFiles, toggleModal} from '@kepler.gl/actions';
import {parseUri} from '@kepler.gl/common-utils';
import {load} from '@loaders.gl/core';
import {CSVLoader} from '@loaders.gl/csv';
import {GeoArrowLoader} from '@loaders.gl/arrow';
import {_GeoJSONLoader as GeoJSONLoader} from '@loaders.gl/json';
import {ParquetWasmLoader} from '@loaders.gl/parquet';
import {
LOADING_SAMPLE_ERROR_MESSAGE,
LOADING_SAMPLE_LIST_ERROR_MESSAGE,
MAP_CONFIG_URL
} from './constants/default-settings';
// CONSTANTS
export const INIT = 'INIT';
export const LOAD_REMOTE_RESOURCE_SUCCESS = 'LOAD_REMOTE_RESOURCE_SUCCESS';
export const LOAD_REMOTE_DATASET_PROCESSED_SUCCESS = 'LOAD_REMOTE_DATASET_PROCESSED_SUCCESS';
export const LOAD_REMOTE_RESOURCE_ERROR = 'LOAD_REMOTE_RESOURCE_ERROR';
export const LOAD_MAP_SAMPLE_FILE = 'LOAD_MAP_SAMPLE_FILE';
export const SET_SAMPLE_LOADING_STATUS = 'SET_SAMPLE_LOADING_STATUS';
// Sharing
export const PUSHING_FILE = 'PUSHING_FILE';
export const CLOUD_LOGIN_SUCCESS = 'CLOUD_LOGIN_SUCCESS';
// ACTIONS
export function initApp() {
return {
type: INIT
};
}
export function loadRemoteResourceSuccess(response, config, options, remoteDatasetConfig) {
return {
type: LOAD_REMOTE_RESOURCE_SUCCESS,
response,
config,
options,
remoteDatasetConfig
};
}
export function loadRemoteDatasetProcessedSuccessAction(result) {
return {
type: LOAD_REMOTE_DATASET_PROCESSED_SUCCESS,
payload: result
};
}
export function loadRemoteResourceError(error, url) {
return {
type: LOAD_REMOTE_RESOURCE_ERROR,
error,
url
};
}
export function loadMapSampleFile(samples) {
return {
type: LOAD_MAP_SAMPLE_FILE,
samples
};
}
export function setLoadingMapStatus(isMapLoading) {
return {
type: SET_SAMPLE_LOADING_STATUS,
isMapLoading
};
}
/**
* Actions passed to kepler.gl, called
*
* Note: exportFile is called on both saving and sharing
*
* @param {*} param0
*/
export function onExportFileSuccess({provider, options}) {
return dispatch => {
// if isPublic is true, use share Url
if (options.isPublic && provider.getShareUrl) {
dispatch(push(provider.getShareUrl(false)));
} else if (!options.isPublic && provider.getMapUrl) {
// if save private map to storage, use map url
dispatch(push(provider.getMapUrl(false)));
}
};
}
export function onLoadCloudMapSuccess({provider, loadParams}) {
return dispatch => {
const mapUrl = provider?.getMapUrl(loadParams);
if (mapUrl) {
const url = `/demo/map/${provider.name}?path=${mapUrl}`;
dispatch(push(url));
}
};
}
// This can be moved into Kepler.gl to provide ability to load data from remote URLs
/**
* The method is able to load both data and kepler.gl files.
* It uses loadFile action to dispatch and add new datasets/configs
* to the kepler.gl instance
* @param options
* @param {string} options.dataUrl the URL to fetch data from. Current supported file type json,csv, kepler.json
* @returns {Function}
*/
export function loadRemoteMap(options) {
return dispatch => {
dispatch(setLoadingMapStatus(true));
// breakdown url into url+query params
loadRemoteRawData(options.dataUrl).then(
// In this part we turn the response into a FileBlob
// so we can use it to call loadFiles
([file, url]) => {
const {file: filename} = parseUri(url);
dispatch(loadFiles([new File([file], filename)])).then(() =>
dispatch(setLoadingMapStatus(false))
);
},
error => {
const {target = {}} = error;
const {status, responseText} = target;
dispatch(loadRemoteResourceError({status, message: responseText}, options.dataUrl));
}
);
};
}
/**
* Load a file from a remote URL
* @param url
* @returns {Promise}
*/
function loadRemoteRawData(url) {
if (!url) {
// TODO: we should return reject with an appropriate error
return Promise.resolve(null);
}
return fetch(url)
.then(resp => {
if (!resp.ok) {
return resp.text().then(text => {
throw new Error(text);
});
}
return resp.blob();
})
.then(data => {
return [data, url];
});
}
// The following methods are only used to load SAMPLES
/**
*
* @param {Object} options
* @param {string} [options.dataUrl] the URL to fetch data from, e.g. https://raw.githubusercontent.com/keplergl/kepler.gl-data/master/earthquakes/data.csv
* @param {string} [options.configUrl] the URL string to fetch kepler config from, e.g. https://raw.githubusercontent.com/keplergl/kepler.gl-data/master/earthquakes/config.json
* @param {string} [options.id] the id used as dataset unique identifier, e.g. earthquakes
* @param {string} [options.label] the label used to describe the new dataset, e.g. California Earthquakes
* @param {string} [options.queryType] the type of query to execute to load data/config, e.g. sample
* @param {string} [options.imageUrl] the URL to fetch the dataset image to use in sample gallery
* @param {string} [options.description] the description used in sample galley to define the current example
* @param {string} [options.size] the number of entries displayed in the current sample
* @param {string} [keplergl] url to fetch the full data/config generated by kepler
* @returns {Function}
*/
export function loadSample(options, pushRoute = true) {
return (dispatch, getState) => {
const {routing} = getState();
if (options.id && pushRoute) {
dispatch(push(`/demo/${options.id}${routing.locationBeforeTransitions?.search ?? ''}`));
}
// if the sample has a kepler.gl config file url we load it
if (options.keplergl) {
dispatch(loadRemoteMap({dataUrl: options.keplergl}));
} else {
dispatch(loadRemoteSampleMap(options));
}
dispatch(setLoadingMapStatus(true));
};
}
/**
* Load remote map with config and data
* @param options {configUrl, dataUrl}
* @returns {Function}
*/
function loadRemoteSampleMap(options) {
return dispatch => {
// Load configuration first
const {configUrl, dataUrl, remoteDatasetConfigUrl} = options;
const toLoad = [loadRemoteConfig(configUrl)];
toLoad.push(dataUrl ? loadRemoteData(dataUrl) : null);
// Load remote dataset config for tiled layers
toLoad.push(remoteDatasetConfigUrl ? loadRemoteConfig(remoteDatasetConfigUrl) : null);
Promise.all(toLoad).then(
([config, data, remoteDatasetConfig]) => {
// TODO: these two actions can be merged
dispatch(loadRemoteResourceSuccess(data, config, options, remoteDatasetConfig));
// TODO: toggleModal when async dataset task is done, show the spinner until then
dispatch(toggleModal(null));
},
error => {
if (error) {
const {target = {}} = error;
const {status, responseText} = target;
dispatch(
loadRemoteResourceError(
{
status,
message: `${responseText} - ${LOADING_SAMPLE_ERROR_MESSAGE} ${options.id} (${configUrl})`
},
configUrl
)
);
}
}
);
};
}
/**
*
* @param url
* @returns {Promise}
*/
function loadRemoteConfig(url) {
if (!url) {
// TODO: we should return reject with an appropriate error
return Promise.resolve(null);
}
return fetch(url).then(resp => {
if (!resp.ok) {
return resp.text().then(text => {
throw new Error(text);
});
}
return resp.json();
});
}
/**
*
* @param url to fetch data from (csv, json, geojson)
* @returns {Promise}
*/
function loadRemoteData(url) {
if (!url) {
// TODO: we should return reject with an appropriate error
return Promise.resolve(null);
}
// Load data
return new Promise(resolve => {
const loaders = [CSVLoader, GeoArrowLoader, ParquetWasmLoader, GeoJSONLoader];
const loadOptions = {
csv: {
shape: 'object-row-table'
},
arrow: {
shape: 'arrow-table'
},
parquet: {
shape: 'arrow-table'
},
metadata: true
};
const data = load(url, loaders, loadOptions);
resolve(data);
});
}
/**
*
* @param sampleMapId optional if we pass the sampleMapId, after fetching
* map sample configurations we are going to load the actual map data if it exists
* @returns {function(*)}
*/
export function loadSampleConfigurations(sampleMapId = null) {
return dispatch => {
fetch(MAP_CONFIG_URL)
.then(response => {
if (!response.ok) {
return response.text().then(text => {
throw new Error(text);
});
} else {
return response.json();
}
})
.then(samples => {
dispatch(loadMapSampleFile(samples));
// Load the specified map
const map = sampleMapId && samples.find(s => s.id === sampleMapId);
if (map) {
dispatch(loadSample(map, false));
}
})
.catch(error => {
dispatch(
loadRemoteResourceError(
{message: `${error} - ${LOADING_SAMPLE_LIST_ERROR_MESSAGE}`},
MAP_CONFIG_URL
)
);
});
};
}
================================================
FILE: examples/demo-app/src/app.tsx
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React, {useCallback, useEffect, useRef, useState} from 'react';
import AutoSizer from 'react-virtualized/dist/commonjs/AutoSizer';
import styled, {ThemeProvider, StyleSheetManager} from 'styled-components';
import Window from 'global/window';
import {connect, useDispatch} from 'react-redux';
import cloneDeep from 'lodash/cloneDeep';
import isEqual from 'lodash/isEqual';
import {useSelector} from 'react-redux';
import isPropValid from '@emotion/is-prop-valid';
import {WebMercatorViewport} from '@deck.gl/core';
import {ScreenshotWrapper} from '@openassistant/ui';
import {
setStartScreenCapture,
setScreenCaptured,
AiAssistantPanel,
setMapBoundary
} from '@kepler.gl/ai-assistant';
import {panelBorderColor, theme} from '@kepler.gl/styles';
import {ParsedConfig} from '@kepler.gl/types';
import {getApplicationConfig} from '@kepler.gl/utils';
import {SqlPanel} from '@kepler.gl/duckdb/components';
import Banner from './components/banner';
import Announcement, {FormLink} from './components/announcement';
import {replaceLoadDataModal} from './factories/load-data-modal';
import {replaceMapControl} from './factories/map-control';
import {replacePanelHeader} from './factories/panel-header';
import {CLOUD_PROVIDERS_CONFIGURATION, DEFAULT_FEATURE_FLAGS} from './constants/default-settings';
import {messages} from './constants/localization';
import {
loadRemoteMap,
loadSampleConfigurations,
onExportFileSuccess,
onLoadCloudMapSuccess
} from './actions';
import {
loadCloudMap,
addDataToMap,
replaceDataInMap,
toggleMapControl,
toggleModal
} from '@kepler.gl/actions';
import {CLOUD_PROVIDERS} from './cloud-providers';
import {Panel, PanelGroup, PanelResizeHandle} from 'react-resizable-panels';
const KeplerGl = require('@kepler.gl/components').injectComponents([
replaceLoadDataModal(),
replaceMapControl(),
replacePanelHeader()
]);
// Sample data
/* eslint-disable no-unused-vars */
import sampleTripData, {testCsvData, sampleTripDataConfig} from './data/sample-trip-data';
// import sampleGeojson from './data/sample-small-geojson';
// import sampleGeojsonPoints from './data/sample-geojson-points';
import sampleGeojsonConfig from './data/sample-geojson-config';
import sampleH3Data, {config as h3MapConfig} from './data/sample-hex-id-csv';
import sampleS2Data, {config as s2MapConfig, dataId as s2DataId} from './data/sample-s2-data';
import sampleAnimateTrip, {
pointData,
pointDataId,
animateTripDataId,
replacePointData,
config as syncedTripConfig
} from './data/sample-animate-trip-data';
import sampleIconCsv from './data/sample-icon-csv';
import sampleGpsData from './data/sample-gps-data';
import sampleRowData, {config as rowDataConfig} from './data/sample-row-data';
import {processCsvData, processGeojson, processRowObject} from '@kepler.gl/processors';
/* eslint-enable no-unused-vars */
// This implements the default behavior from styled-components v5
function shouldForwardProp(propName, target) {
if (typeof target === 'string') {
// For HTML elements, forward the prop if it is a valid HTML attribute
return isPropValid(propName);
}
// For other elements, forward all props
return true;
}
const BannerHeight = 48;
const BannerKey = `banner-${FormLink}`;
const keplerGlGetState = state => state.demo.keplerGl;
const GlobalStyle = styled.div`
font-family: ff-clan-web-pro, 'Helvetica Neue', Helvetica, sans-serif;
font-weight: 400;
font-size: 0.875em;
line-height: 1.71429;
*,
*:before,
*:after {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
ul {
margin: 0;
padding: 0;
}
li {
margin: 0;
}
a {
text-decoration: none;
color: ${props => props.theme.labelColor};
}
`;
const CONTAINER_STYLE = {
transition: 'margin 1s, height 1s',
position: 'absolute',
width: '100%',
height: '100%',
left: 0,
top: 0,
display: 'flex',
flexDirection: 'column',
backgroundColor: '#333'
};
const StyledResizeHandle = styled(PanelResizeHandle)`
background-color: ${panelBorderColor};
&:hover {
background-color: #555;
}
width: 100%;
height: 5px;
cursor: row-resize;
`;
const StyledVerticalResizeHandle = styled(PanelResizeHandle)`
background-color: ${panelBorderColor};
width: 4px;
height: 100%;
cursor: row-resize;
&:hover {
background-color: #555;
}
`;
const App = props => {
const [showBanner, toggleShowBanner] = useState(false);
const {params: {id, provider} = {}, location: {query = {}} = {}} = props;
const dispatch = useDispatch();
// TODO find another way to check for existence of duckDb plugin
const duckDbPluginEnabled = (getApplicationConfig().plugins || []).some(p => p.name === 'duckdb');
const isSqlPanelOpen = useSelector(
state => duckDbPluginEnabled && state?.demo?.keplerGl?.map?.uiState.mapControls.sqlPanel?.active
);
const isAiAssistantPanelOpen = useSelector(
state => state?.demo?.keplerGl?.map?.uiState.mapControls.aiAssistant?.active
);
const prevQueryRef = useRef(null);
useEffect(() => {
// if we pass an id as part of the url
// we try to fetch along map configurations
const cloudProvider = CLOUD_PROVIDERS.find(c => c.name === provider);
if (cloudProvider) {
// Prevent constant reloading after change of the location
if (isEqual(prevQueryRef.current, {provider, id, query})) {
return;
}
dispatch(
loadCloudMap({
loadParams: query,
provider: cloudProvider,
onSuccess: onLoadCloudMapSuccess
})
);
prevQueryRef.current = {provider, id, query};
return;
}
// Load sample using its id
if (id) {
dispatch(loadSampleConfigurations(id));
}
// Load map using a custom
if (query.mapUrl) {
// TODO?: validate map url
dispatch(loadRemoteMap({dataUrl: query.mapUrl}));
}
if (duckDbPluginEnabled && query.sql) {
dispatch(toggleMapControl('sqlPanel', 0));
dispatch(toggleModal(null));
}
// delay zs to show the banner
// if (!window.localStorage.getItem(BannerKey)) {
// window.setTimeout(_showBanner, 3000);
// }
// load sample data
_loadSampleData();
// Notifications
// no dependencies, as this was part of componentDidMount
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
/**
* Update map boundary when view state changes, used by ai-assistant to
* get data from vector tiles when map boundary changes
*/
const onViewStateChange = useCallback(
viewState => {
const viewport = new WebMercatorViewport(viewState);
const nw = viewport.unproject([0, 0]);
const se = viewport.unproject([viewport.width, viewport.height]);
dispatch(setMapBoundary(nw, se));
},
[dispatch]
);
const _setStartScreenCapture = useCallback(
flag => {
dispatch(setStartScreenCapture(flag));
},
[dispatch]
);
const _setScreenCaptured = useCallback(
screenshot => {
dispatch(setScreenCaptured(screenshot));
},
[dispatch]
);
/*
const _showBanner = useCallback(() => {
toggleShowBanner(true);
}, [toggleShowBanner]);
*/
const hideBanner = useCallback(() => {
toggleShowBanner(false);
}, [toggleShowBanner]);
const _disableBanner = useCallback(() => {
hideBanner();
Window.localStorage.setItem(BannerKey, 'true');
}, [hideBanner]);
const _loadRowData = useCallback(() => {
dispatch(
addDataToMap({
datasets: [
{
info: {
label: 'Sample Visit Data',
id: 'sample_visit_data'
},
data: processRowObject(sampleRowData)
}
],
config: rowDataConfig
})
);
}, [dispatch]);
const _loadVectorTileData = useCallback(() => {
dispatch(
addDataToMap({
datasets: [
{
info: {
label: 'Railroads',
id: 'railroads.pmtiles',
color: [255, 0, 0],
type: 'vector-tile'
},
data: {
rows: [],
fields: [
{
name: 'continent',
type: 'string',
format: '',
analyzerType: 'STRING'
}
]
},
metadata: {
name: 'output.pmtiles',
description: 'output.pmtiles',
type: 'remote',
remoteTileFormat: 'pmtiles',
tilesetDataUrl:
'https://4sq-studio-public.s3.us-west-2.amazonaws.com/pmtiles-test/161727fe-7952-4e57-aa05-850b3086b0b2.pmtiles',
tilesetMetadataUrl:
'https://4sq-studio-public.s3.us-west-2.amazonaws.com/pmtiles-test/161727fe-7952-4e57-aa05-850b3086b0b2.pmtiles',
id: 'sz6uy1xtj',
format: 'rows',
label: 'output.pmtiles',
metaJson: null,
bounds: [-150.1122219, -51.8952777, 179.3577783, 69.6043747],
center: [14.0625, 50.7026397, 6],
maxZoom: 6,
minZoom: 0,
fields: [
{
name: 'continent',
id: 'continent',
format: '',
filterProps: {
domain: [
'Africa',
'Asia',
'Europe',
'North America',
'Oceania',
'South America'
],
value: [],
type: 'multiSelect',
gpu: false
},
type: 'string',
analyzerType: 'STRING'
}
]
}
}
],
options: {
autoCreateLayers: true
}
})
);
}, [dispatch]);
const _loadPointData = useCallback(() => {
dispatch(
addDataToMap({
datasets: [
{
info: {
label: 'Sample Taxi Trips 1',
id: 'test_trip_data',
color: [255, 0, 0]
},
data: {
rows: sampleTripData.rows.slice(0, 20),
fields: cloneDeep(sampleTripData.fields)
}
},
{
info: {
label: 'Sample Taxi Trips 2',
id: 'test_trip_data_2',
color: [0, 255, 0]
},
data: {
rows: sampleTripData.rows.slice(5, sampleTripData.rows.length),
fields: cloneDeep(sampleTripData.fields)
}
}
],
options: {
// centerMap: true,
keepExistingConfig: true
},
config: sampleTripDataConfig
})
);
}, [dispatch]);
const _loadScenegraphLayer = useCallback(() => {
dispatch(
addDataToMap({
datasets: {
info: {
label: 'Sample Scenegraph Ducks',
id: 'test_trip_data'
},
data: processCsvData(testCsvData)
},
config: {
version: 'v1',
config: {
visState: {
layers: [
{
type: '3D',
config: {
dataId: 'test_trip_data',
columns: {
lat: 'gps_data.lat',
lng: 'gps_data.lng'
},
isVisible: true
}
}
]
}
}
}
})
);
}, [dispatch]);
const _loadIconData = useCallback(() => {
// load icon data and config and process csv file
dispatch(
addDataToMap({
datasets: [
{
info: {
label: 'Icon Data',
id: 'test_icon_data'
},
data: processCsvData(sampleIconCsv)
}
]
})
);
}, [dispatch]);
const _loadTripGeoJson = useCallback(() => {
dispatch(
addDataToMap({
datasets: [
{
info: {label: 'Trip animation', id: animateTripDataId},
data: processGeojson(sampleAnimateTrip)
}
]
})
);
}, [dispatch]);
const _loadGeojsonData = useCallback(() => {
// load geojson
const geojsonPoints = processGeojson(sampleGeojsonPoints);
const geojsonZip = null; // processGeojson(sampleGeojson);
dispatch(
addDataToMap({
datasets: [
geojsonPoints
? {
info: {label: 'Bart Stops Geo', id: 'bart-stops-geo'},
data: geojsonPoints
}
: null,
geojsonZip
? {
info: {label: 'SF Zip Geo', id: 'sf-zip-geo'},
data: geojsonZip
}
: null
].filter(d => d !== null),
options: {
keepExistingConfig: true
},
config: sampleGeojsonConfig as ParsedConfig
})
);
}, [dispatch]);
const _loadSyncedFilterWTripLayer = useCallback(() => {
dispatch(
addDataToMap({
datasets: [
{
info: {label: 'Trip animation', id: animateTripDataId},
data: processGeojson(sampleAnimateTrip)
},
{
info: {
label: 'Sample Taxi Trips',
id: pointDataId,
color: [255, 0, 0]
},
data: pointData
}
],
config: syncedTripConfig,
options: {
centerMap: true
}
})
);
}, [dispatch]);
const _replaceSyncedFilterWTripLayer = useCallback(() => {
window.setTimeout(() => {
dispatch(
replaceDataInMap({
datasetToReplaceId: pointDataId,
datasetToUse: {
info: {label: 'Sample Taxi Trips Replaced', id: `${pointDataId}-2`},
data: replacePointData
}
})
);
}, 1000);
}, [dispatch]);
const _replaceData = useCallback(() => {
// add geojson data
const sliceData = processGeojson({
type: 'FeatureCollection',
features: sampleGeojsonPoints.features.slice(0, 5)
});
_loadGeojsonData();
Window.setTimeout(() => {
dispatch(
replaceDataInMap({
datasetToReplaceId: 'bart-stops-geo',
datasetToUse: {
info: {label: 'Bart Stops Geo Replaced', id: 'bart-stops-geo-2'},
data: sliceData
}
})
);
}, 1000);
}, [dispatch, _loadGeojsonData]);
const _loadH3HexagonData = useCallback(() => {
// load h3 hexagon
dispatch(
addDataToMap({
datasets: [
{
info: {
label: 'H3 Hexagons V2',
id: 'h3-hex-id'
},
data: processCsvData(sampleH3Data)
}
],
config: h3MapConfig,
options: {
keepExistingConfig: true
}
})
);
}, [dispatch]);
const _loadS2Data = useCallback(() => {
// load s2
dispatch(
addDataToMap({
datasets: [
{
info: {
label: 'S2 Data',
id: s2DataId
},
data: processCsvData(sampleS2Data)
}
],
config: s2MapConfig as ParsedConfig,
options: {
keepExistingConfig: true
}
})
);
}, [dispatch]);
const _loadGpsData = useCallback(() => {
dispatch(
addDataToMap({
datasets: [
{
info: {
label: 'Gps Data',
id: 'gps-data'
},
data: processCsvData(sampleGpsData)
}
],
options: {
keepExistingConfig: true
}
})
);
}, [dispatch]);
const _loadSampleData = useCallback(() => {
// _loadPointData();
// _loadGeojsonData();
// _loadTripGeoJson();
// _loadIconData();
// _loadH3HexagonData();
// _loadS2Data();
// _loadScenegraphLayer();
// _loadGpsData();
// _loadRowData();
// _loadVectorTileData();
// _loadSyncedFilterWTripLayer();
// _replaceSyncedFilterWTripLayer();
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [
_loadPointData,
_loadGeojsonData,
_loadTripGeoJson,
_loadIconData,
_loadH3HexagonData,
_loadS2Data,
_loadScenegraphLayer,
_loadGpsData,
_loadRowData,
_replaceData,
_loadVectorTileData,
_loadSyncedFilterWTripLayer,
_replaceSyncedFilterWTripLayer
]);
return (
{
// node ? (this.root = node) : null;
// }}
>
{({height, width}) => (
)}
{isSqlPanelOpen && (
<>
>
)}
{isAiAssistantPanelOpen && (
<>
>
)}
);
};
const mapStateToProps = state => state;
const dispatchToProps = dispatch => ({dispatch});
export default connect(mapStateToProps, dispatchToProps)(App);
================================================
FILE: examples/demo-app/src/cloud-providers/carto/carto-icon.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React, {Component} from 'react';
import {Icons} from '@kepler.gl/components';
import PropTypes from 'prop-types';
class CartoIcon extends Component {
static propTypes = {
/** Set the height of the icon, ex. '16px' */
height: PropTypes.string,
colors: PropTypes.arrayOf(PropTypes.string)
};
static defaultProps = {
height: '100%',
viewBox: '0 0 92 36',
predefinedClassName: 'data-ex-icons-carto'
};
render() {
return (
);
}
}
export default CartoIcon;
================================================
FILE: examples/demo-app/src/cloud-providers/carto/carto-provider.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {OAuthApp} from '@carto/toolkit';
import Console from 'global/console';
import CartoIcon from './carto-icon';
import {Provider} from '@kepler.gl/cloud-providers';
import {createDataContainer} from '@kepler.gl/utils';
import {formatCsv} from '@kepler.gl/reducers';
const NAME = 'carto';
const DISPLAY_NAME = 'CARTO';
const NAMESPACE = 'keplergl';
const DOMAIN = 'carto.com';
const PRIVATE_STORAGE_ENABLED = true;
const SHARING_ENABLED = true;
export default class CartoProvider extends Provider {
constructor(clientId) {
super({name: NAME, displayName: DISPLAY_NAME, icon: CartoIcon});
this.clientId = clientId;
this.thumbnail = {width: 300, height: 200};
this.currentMap = null;
this._folderLink = `https://{user}.${DOMAIN}/dashboard/maps/external`;
// Initialize CARTO API
this._carto = new OAuthApp(
{
authorization: `https://${DOMAIN}/oauth2`,
scopes: 'schemas:c datasets:rw:*'
},
{
serverUrlTemplate: `https://{user}.${DOMAIN}/`,
namespace: NAMESPACE
}
);
this._carto.setClientID(clientId);
}
/**
* The CARTO toolkit library takes care of the login process.
*/
login(onCloudLoginSuccess) {
try {
this._carto.login().then(() => {
onCloudLoginSuccess && onCloudLoginSuccess(this.name);
});
} catch (error) {
this._manageErrors(error);
}
}
logout(onCloudLogoutSuccess) {
try {
this._carto.oauth.clear();
this._carto.oauth._carto.sync();
onCloudLogoutSuccess();
} catch (error) {
this._manageErrors(error);
}
}
isEnabled() {
return this.clientId !== null;
}
hasPrivateStorage() {
return PRIVATE_STORAGE_ENABLED;
}
hasSharingUrl() {
return SHARING_ENABLED;
}
async uploadMap({mapData = {}, options = {}}) {
try {
const {isPublic = true, overwrite = true} = options;
const {map: {config, datasets, info} = {}, thumbnail} = mapData;
const cartoDatasets = datasets.map(this._convertDataset);
const cs = await this._carto.getCustomStorage();
const {title, description} = info;
const name = title;
const thumbnailBase64 =
mapData && thumbnail ? await this._blobToBase64(mapData.thumbnail) : null;
let result;
if (overwrite) {
result = await cs.updateVisualization(
{
id: this.currentMap.id,
name,
description,
thumbnail: thumbnailBase64,
config: JSON.stringify(config),
isprivate: this.currentMap.isprivate
},
cartoDatasets
);
} else {
// TODO: Ask for changing current shared map generation because of being too oriented to file based clouds
// Check public name generation and replace
const regex = /(?:^keplergl_)([a-z0-9]+)(?:.json$)/;
const capturedName = name.match(regex);
const visName = capturedName ? `sharedmap_${capturedName[1]}` : name;
result = await cs.createVisualization(
{
name: visName,
description,
thumbnail: thumbnailBase64,
config: JSON.stringify(config),
isprivate: !isPublic
},
cartoDatasets,
true
);
}
if (result) {
this.currentMap = result;
}
return {
shareUrl: this._getMapPermalinkFromParams(
{
mapId: result.id,
owner: this._carto.username,
privateMap: !isPublic
},
true
),
folderLink: this._folderLink.replace('{user}', this._carto.username)
};
} catch (error) {
this._manageErrors(error);
}
}
/**
* Returns the access token. If it has expired returns null. The toolkit library loads it
* from localStorage automatically
*/
async getAccessToken() {
let accessToken = null;
try {
accessToken = this._carto.oauth.expired ? null : this._carto.oauth.token;
} catch (error) {
this._manageErrors(error, false);
}
return accessToken;
}
getUserName() {
let username = null;
try {
username = this._carto.oauth.expired ? null : this._carto.username;
} catch (error) {
this._manageErrors(error, false);
}
return username;
}
/**
* The CARTO cloud provider polls the created window internally to parse the URL
* @param {*} location
*/
getAccessTokenFromLocation() {
return;
}
async getUser() {
return {
name: this.getUserName(),
abbreviated: '',
email: ''
};
}
async downloadMap(queryParams) {
try {
const {owner: username, mapId, privateMap} = queryParams;
if (!username || !mapId) {
return;
}
let visualization;
if (privateMap.trim().toLowerCase() === 'true') {
await this._carto.login();
const currentUsername = this.getUserName();
if (currentUsername && currentUsername === username) {
const cs = await this._carto.getCustomStorage();
visualization = await cs.getVisualization(mapId);
}
} else {
visualization = await this._carto.PublicStorageReader.getVisualization(username, mapId);
}
if (!visualization) {
throw new Error(`Can't find map with ID: ${mapId}`);
}
// These are the options required for the action. For now, all datasets that come from CARTO are CSV
const datasets = visualization.datasets.map(dataset => {
const datasetId = dataset.name;
return {
info: {
id: datasetId,
label: datasetId,
description: dataset.description,
dataUrl: '',
configUrl: '',
panelDisabled: true
},
data: dataset.file
};
});
// const datasets = visualization.datasets.map(dataset => dataset.file);
this.currentMap = visualization.vis;
return {
map: {
datasets,
config: visualization.vis.config,
info: {title: visualization.vis.name, description: visualization.vis.description}
},
format: 'csv'
};
} catch (error) {
this._manageErrors(error);
}
}
async listMaps() {
// TODO: Implement pagination using {type='all', pageOffset=0, pageSize=-1}
try {
await this._carto.login();
const username = this.getUserName();
const cs = await this._carto.getCustomStorage();
const visualizations = await cs.getVisualizations();
let formattedVis = [];
// Format visualization object
for (const vis of visualizations) {
formattedVis.push({
id: vis.id,
title: vis.name,
description: vis.description,
privateMap: vis.isprivate,
thumbnail: vis.thumbnail === 'undefined' ? null : vis.thumbnail,
lastModification: new Date(Date.parse(vis.lastmodified)),
loadParams: {
owner: username,
mapId: vis.id,
privateMap: vis.isprivate.toString()
}
});
}
formattedVis = formattedVis.sort((a, b) => b.lastModification - a.lastModification);
return formattedVis;
} catch (error) {
this._manageErrors(error);
}
}
getShareUrl(fullUrl = false) {
return this.getMapUrl(fullUrl);
}
getMapUrl(fullUrl = true, mapParams = null) {
if (mapParams) {
return this._getMapPermalinkFromParams(mapParams, fullUrl);
} else if (this.currentMap) {
return this._getMapPermalinkFromParams(
{
mapId: this.currentMap.id,
owner: this.getUserName(),
privateMap: this.currentMap.isPrivate
},
fullUrl
);
}
}
getManagementUrl() {
return this._folderLink.replace('{user}', this._carto.username);
}
getCurrentVisualization() {
return this.currentMap
? {title: this.currentMap.name, description: this.currentMap.description}
: null;
}
// PRIVATE
_getMapPermalinkFromParams({mapId, owner, privateMap}, fullURL = true) {
const mapLink = this._composeURL({mapId, owner, privateMap});
return fullURL
? `${window.location.protocol}//${window.location.host}/${mapLink}`
: `/${mapLink}`;
}
_convertDataset({data: dataset}) {
const {allData, fields, id} = dataset;
const columns = fields.map(field => ({
name: field.name,
type: field.type
}));
const dataContainer = createDataContainer([...allData]);
const file = formatCsv(dataContainer, fields);
return {
name: id,
columns,
file
};
}
// eslint-disable-next-line complexity
_manageErrors(error, throwException = true) {
let message;
if (error && error.message) {
message = error.message;
switch (error.message) {
case 'No client ID has been specified':
Console.error('No ClientID set for CARTO provider');
break;
case 'Cannot set the client ID more than once':
Console.error('CARTO provider already initialized');
break;
case (error.message.match(/relation "[a-zA-Z0-9_]+" does not exist/) || {}).input:
Console.error('CARTO custom storage is not properly initialized');
message = 'Custom storage is not properly initialized';
break;
case (
error.message.match(/Failed to copy to keplergl_[a-zA-Z0-9_]+: Too many retries/) || {}
).input:
Console.error('CARTO Rate limit exceeded');
message =
"Failed to upload. You've exceeded the number of datasets allowed with your plan. Consider upgrading your plan.";
break;
case (error.message.match(/[a-zA-Z0-9_\s:]+: DB Quota exceeded/) || {}).input:
Console.error('CARTO DB Quota exceeded');
message =
"Failed to upload. You've exceeded your account's disk storage limit. Consider upgrading your plan.";
break;
default:
Console.error(`CARTO provider: ${message}`);
}
} else {
message = 'General error in CARTO provider';
Console.error(message);
}
// Use 'CARTO' as error code in order to show provider in notifications
if (throwException) {
throw new Error(message);
}
}
_composeURL({mapId, owner, privateMap}) {
return `demo/map/carto?mapId=${mapId}&owner=${owner}&privateMap=${privateMap}`;
}
_blobToBase64(blob) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onloadend = () => {
if (!reader.error) {
resolve(reader.result);
} else {
reject(reader.error);
}
};
reader.readAsDataURL(blob);
});
}
}
================================================
FILE: examples/demo-app/src/cloud-providers/dropbox/dropbox-error-modal.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React, {Component, createRef} from 'react';
import ReactDOM from 'react-dom';
const WIDTH = 400;
const HEIGHT = 800;
const style = {border: 0};
export default class Frame extends Component {
componentDidMount() {
this.renderFrameContents();
}
componentDidUpdate() {
this.renderFrameContents();
}
componentWillUnmount() {
this.root.current.unmount();
}
root = createRef();
innerHtml = createRef();
renderFrameContents = () => {
const doc = this.root.current.contentDocument;
if (doc.readyState === 'complete') {
ReactDOM.render(
,
doc
);
} else {
setTimeout(this.renderFrameContents.bind(this), 0);
}
};
render() {
return ;
}
}
================================================
FILE: examples/demo-app/src/cloud-providers/dropbox/dropbox-icon.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React, {Component} from 'react';
import {Icons} from '@kepler.gl/components';
import PropTypes from 'prop-types';
class DropboxIcon extends Component {
static propTypes = {
/** Set the height of the icon, ex. '16px' */
height: PropTypes.string,
colors: PropTypes.arrayOf(PropTypes.string)
};
static defaultProps = {
height: '16px',
predefinedClassName: 'data-ex-icons-dropbox',
totalColor: 1
};
render() {
return (
);
}
}
export default DropboxIcon;
================================================
FILE: examples/demo-app/src/cloud-providers/dropbox/dropbox-provider.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
// DROPBOX
import {Dropbox} from 'dropbox';
import Window from 'global/window';
import DropboxIcon from './dropbox-icon';
import {MAP_URI} from '../../constants/default-settings';
import {KEPLER_FORMAT, Provider} from '@kepler.gl/cloud-providers';
const NAME = 'dropbox';
const DISPLAY_NAME = 'Dropbox';
const DOMAIN = 'www.dropbox.com';
const KEPLER_DROPBOX_FOLDER_LINK = `//${DOMAIN}/home/Apps`;
const CORS_FREE_DOMAIN = 'dl.dropboxusercontent.com';
const PRIVATE_STORAGE_ENABLED = true;
const SHARING_ENABLED = true;
const MAX_THUMBNAIL_BATCH = 25;
const IMAGE_URL_PREFIX = 'data:image/gif;base64,';
function parseQueryString(query) {
const searchParams = new URLSearchParams(query);
const params = {};
for (const p of searchParams) {
if (p && p.length === 2 && p[0]) params[p[0]] = p[1];
}
return params;
}
function isConfigFile(err) {
const summary = err.error && err.error.error_summary;
return typeof summary === 'string' && Boolean(summary.match(/path\/conflict\/file\//g));
}
export default class DropboxProvider extends Provider {
constructor(clientId, appName) {
super({name: NAME, displayName: DISPLAY_NAME, icon: DropboxIcon});
// All cloud-providers providers must implement the following properties
this.clientId = clientId;
this.appName = appName;
this._folderLink = `${KEPLER_DROPBOX_FOLDER_LINK}/${appName}`;
this._path = '';
// Initialize Dropbox API
this._initializeDropbox();
}
/**
* This method will handle the oauth flow by performing the following steps:
* - Opening a new window
* - Subscribe to message channel
* - Receive the token when ready
* - Close the opened tab
*/
async login() {
return new Promise((resolve, reject) => {
const link = this._authLink();
const authWindow = Window.open(link, '_blank', 'width=1024,height=716');
const handleToken = async event => {
// if user has dev tools this will skip all the react-devtools events
if (!event.data.token) {
return;
}
if (authWindow) {
authWindow.close();
Window.removeEventListener('message', handleToken);
}
const {token} = event.data;
if (!token) {
reject('Failed to login to Dropbox');
return;
}
this._dropbox.setAccessToken(token);
// save user name
const user = await this.getUser();
if (Window.localStorage) {
Window.localStorage.setItem(
'dropbox',
JSON.stringify({
// dropbox token doesn't expire unless revoked by the user
token,
user,
timestamp: new Date()
})
);
}
resolve(user);
};
Window.addEventListener('message', handleToken);
});
}
/**
* returns a list of maps
*/
async listMaps() {
// list files
try {
// https://dropbox.github.io/dropbox-sdk-js/Dropbox.html#filesListFolder__anchor
const response = await this._dropbox.filesListFolder({
path: `${this._path}`
});
const {pngs, visualizations} = this._parseEntries(response);
// https://dropbox.github.io/dropbox-sdk-js/Dropbox.html#filesGetThumbnailBatch__anchor
// up to 25 per request
// TODO: implement pagination, so we don't need to get all the thumbs all at once
const thumbnails = await Promise.all(this._getThumbnailRequests(pngs)).then(results =>
results.reduce((accu, r) => [...accu, ...(r.entries || [])], [])
);
// append to visualizations
(thumbnails || []).forEach(thb => {
if (thb['.tag'] === 'success' && thb.thumbnail) {
const matchViz = visualizations[pngs[thb.metadata.id] && pngs[thb.metadata.id].name];
if (matchViz) {
matchViz.thumbnail = `${IMAGE_URL_PREFIX}${thb.thumbnail}`;
}
}
});
// dropbox returns
return Object.values(visualizations).reverse();
} catch (error) {
// made the error message human readable for provider updater
throw this._handleDropboxError(error);
}
}
/**
*
* @param mapData map data and config in one json object {map: {datasets: Array, config: Object, info: Object}
* @param blob json file blob to upload
*/
async uploadMap({mapData, options = {}}) {
const {isPublic} = options;
const {map, thumbnail} = mapData;
// generate file name if is not provided
const name = map.info && map.info.title;
const fileName = `${name}.json`;
const fileContent = map;
// FileWriteMode: Selects what to do if the file already exists.
// Always overwrite if sharing
const mode = options.overwrite || isPublic ? 'overwrite' : 'add';
const path = `${this._path}/${fileName}`;
let metadata;
try {
metadata = await this._dropbox.filesUpload({
path,
contents: JSON.stringify(fileContent),
mode
});
} catch (err) {
if (isConfigFile(err)) {
throw this.getFileConflictError();
}
}
// save a thumbnail image
if (thumbnail) {
await this._dropbox.filesUpload({
path: path.replace(/\.json$/, '.png'),
contents: thumbnail,
mode
});
}
// keep on create shareUrl
if (isPublic) {
return await this._shareFile(metadata);
}
return {id: metadata.id, path: metadata.path_lower};
}
/**
* download the map content
* @param loadParams
*/
async downloadMap(loadParams) {
const {path} = loadParams;
const result = await this._dropbox.filesDownload({path});
const json = await this._readFile(result.fileBlob);
const response = {
map: json,
format: KEPLER_FORMAT
};
return Promise.resolve(response);
}
getUserName() {
// load user from
if (Window.localStorage) {
const jsonString = Window.localStorage.getItem('dropbox');
return jsonString && JSON.parse(jsonString).user;
}
return null;
}
async logout() {
await this._dropbox.authTokenRevoke();
if (Window.localStorage) {
Window.localStorage.removeItem('dropbox');
}
// re instantiate dropbox
this._initializeDropbox();
}
isEnabled() {
return this.clientId !== null;
}
hasPrivateStorage() {
return PRIVATE_STORAGE_ENABLED;
}
hasSharingUrl() {
return SHARING_ENABLED;
}
/**
* Get the share url of current map, this url can be accessed by anyone
* @param {boolean} fullUrl
*/
getShareUrl(fullUrl = true) {
return fullUrl
? `${Window.location.protocol}//${Window.location.host}/${MAP_URI}${this._shareUrl}`
: `/${MAP_URI}${this._shareUrl}`;
}
/**
* Get the map url of current map, this url can only be accessed by current logged in user
*/
getMapUrl(loadParams) {
const {path} = loadParams;
return path;
}
getManagementUrl() {
return this._folderLink;
}
/**
* Provides the current dropbox auth token. If stored in localStorage is set onto dropbox handler and returned
* @returns {any}
*/
getAccessToken() {
let token = this._dropbox.getAccessToken();
if (!token && Window.localStorage) {
const jsonString = Window.localStorage.getItem('dropbox');
token = jsonString && JSON.parse(jsonString).token;
if (token) {
this._dropbox.setAccessToken(token);
}
}
return (token || '') !== '' ? token : null;
}
/**
* This method will extract the auth token from the third party service callback url.
* @param {object} location the window location provided by react router
* @returns {?string} the token extracted from the oauth 2 callback URL
*/
getAccessTokenFromLocation(location) {
if (!(location && location.hash.length)) {
return null;
}
// dropbox token usually start with # therefore we want to remove the '#'
const query = Window.location.hash.substring(1);
return parseQueryString(query).access_token;
}
// PRIVATE
_initializeDropbox() {
this._dropbox = new Dropbox({fetch: Window.fetch});
this._dropbox.setClientId(this.clientId);
}
async getUser() {
const response = await this._dropbox.usersGetCurrentAccount();
return this._getUserFromAccount(response);
}
_handleDropboxError(error) {
// dropbox list_folder error
if (error && error.error && error.error.error_summary) {
return new Error(`Dropbox Error: ${error.error.error_summary}`);
}
return error;
}
_readFile(fileBlob) {
return new Promise((resolve, reject) => {
const fileReader = new FileReader(fileBlob);
fileReader.onload = ({target: {result}}) => {
try {
const json = JSON.parse(result);
resolve(json);
} catch (err) {
reject(err);
}
};
fileReader.readAsText(fileBlob, 'utf-8');
});
}
// append url after map sharing
_getMapPermalink(mapLink, fullUrl = true) {
return fullUrl
? `${Window.location.protocol}//${Window.location.host}/${MAP_URI}${mapLink}`
: `/${MAP_URI}${mapLink}`;
}
// append map url after load map from storage, this url is not meant
// to be directly shared with others
_getMapPermalinkFromParams({path}, fullURL = true) {
const mapLink = `demo/map/dropbox?path=${path}`;
return fullURL
? `${Window.location.protocol}//${Window.location.host}/${mapLink}`
: `/${mapLink}`;
}
/**
* It will set access to file to public
* @param {Object} metadata metadata response from uploading the file
* @returns {Promise}
*/
_shareFile(metadata) {
const shareArgs = {
path: metadata.path_display || metadata.path_lower
};
return this._dropbox
.sharingListSharedLinks(shareArgs)
.then(({links} = {}) => {
if (links && links.length) {
return links[0];
}
return this._dropbox.sharingCreateSharedLinkWithSettings(shareArgs);
})
.then(result => {
// Update URL to avoid CORS issue
// Unfortunately this is not the ideal scenario but it will make sure people
// can share dropbox urls with users without the dropbox account (publish on twitter, facebook)
this._shareUrl = this._overrideUrl(result.url);
return {
// the full url to be displayed
shareUrl: this.getShareUrl(true),
folderLink: this._folderLink
};
});
}
/**
* Generate auth link url to open to be used to handle OAuth2
* @param {string} path
*/
_authLink(path = 'auth') {
return this._dropbox.getAuthenticationUrl(
`${Window.location.origin}/${path}`,
btoa(JSON.stringify({handler: 'dropbox', origin: Window.location.origin}))
);
}
/**
* Override dropbox cloud-providers url
* https://www.dropbox.com/s/bxwwdb81z0jg7pb/keplergl_2018-11-01T23%3A22%3A43.940Z.json?rlkey=xxx&dl=0
* ->
* https://dl.dropboxusercontent.com/s/bxwwdb81z0jg7pb/keplergl_2018-11-01T23%3A22%3A43.940Z.json?rlkey=xxx&dl=0
* @param metadata
* @returns {DropboxTypes.sharing.FileLinkMetadataReference}
*/
_overrideUrl(url) {
return url ? url.replace(DOMAIN, CORS_FREE_DOMAIN) : null;
}
_getUserFromAccount(response) {
const {name} = response;
return {
name: name.display_name,
email: response.email,
abbreviated: name.abbreviated_name
};
}
_getThumbnailRequests(pngs) {
const batches = Object.values(pngs).reduce((accu, c) => {
const lastBatch = accu.length && accu[accu.length - 1];
if (!lastBatch || lastBatch.length >= MAX_THUMBNAIL_BATCH) {
// add new batch
accu.push([c]);
} else {
lastBatch.push(c);
}
return accu;
}, []);
return batches.map(batch =>
this._dropbox.filesGetThumbnailBatch({
entries: batch.map(img => ({
path: img.path_lower,
format: 'png',
size: 'w128h128'
}))
})
);
}
/**
* Parse fileListFolder result as visualizations to be shown in load storage map modal
* @param {*} response
*/
_parseEntries(response) {
const {entries, cursor, has_more} = response;
if (has_more) {
this._cursor = cursor;
}
const pngs = {};
const visualizations = {};
entries.forEach(entry => {
const {name, path_lower, id, client_modified} = entry;
if (name && name.endsWith('.json')) {
// find json
const title = name.replace(/\.json$/, '');
const viz = {
name,
title,
id,
updatedAt: new Date(client_modified).getTime(),
loadParams: {
id,
path: path_lower
}
};
visualizations[title] = viz;
} else if (name && name.endsWith('.png')) {
const title = name.replace(/\.png$/, '');
pngs[id] = {
name: title,
path_lower,
id
};
}
});
return {
visualizations,
pngs
};
}
}
================================================
FILE: examples/demo-app/src/cloud-providers/foursquare/foursquare-icon.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React, {Component} from 'react';
import {Icons} from '@kepler.gl/components';
import PropTypes from 'prop-types';
const style = {
background: 'black'
};
export default class FoursquareIcon extends Component {
static propTypes = {
/** Set the height of the icon, ex. '16px' */
height: PropTypes.string,
colors: PropTypes.arrayOf(PropTypes.string)
};
static defaultProps = {
width: '64px',
fill: 'black',
predefinedClassName: 'cloud-provider-studio-icon',
totalColor: 1,
style
};
render() {
return (
);
}
}
================================================
FILE: examples/demo-app/src/cloud-providers/foursquare/foursquare-provider.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import FSQIcon from './foursquare-icon';
import {Provider, KEPLER_FORMAT} from '@kepler.gl/cloud-providers';
import {Auth0Client} from '@auth0/auth0-spa-js';
const NAME = 'foursquare';
const DISPLAY_NAME = 'Foursquare';
const STORAGE_MESSAGE = 'modal.loadStorageMap.foursquareStorageMessage';
const APP_NAME = 'Kepler.gl';
const FOURSQUARE_PRIVATE_STORAGE_ENABLED = true;
const FOURSQUARE_SHARING_ENABLED = false;
const FOURSQUARE_AUTH_AUDIENCE = 'https://foursquare.com/api/';
const FOURSQUARE_AUTH_SCOPE = 'openid profile email';
// Foursquare stores kepler maps using kepler.gl-raw as ImportSource
const FOURSQUARE_KEPLER_GL_IMPORT_SOURCE = 'kepler.gl-raw';
/**
* Converts a FSQ map model to cloud provider map item
* @param model Foursquare Map
* @return {MapItem} Map
*/
function convertFSQModelToMapItem(model, baseApi) {
return {
id: model.id,
title: model.name,
thumbnail: model.previewReadPath,
updatedAt: model.updatedAt,
description: model.description,
loadParams: {
id: model.id,
path: `${baseApi}/${model.id}`
}
};
}
/**
* Custom Auth0 popup window to change window height to fit FSQ auth window.
*/
export const openPopup = url => {
const width = 400;
const height = 765;
const left = window.screenX + (window.innerWidth - width) / 2;
const top = window.screenY + (window.innerHeight - height) / 2;
return window.open(
url,
'auth0:authorize:popup',
`left=${left},top=${top},width=${width},height=${height},resizable,scrollbars=yes,status=1`
);
};
function extractMapFromFSQResponse(response) {
const {
latestState: {data}
} = response;
return data;
}
export default class FoursquareProvider extends Provider {
constructor({clientId, authDomain, apiURL, userMapsURL}) {
super({name: NAME, displayName: DISPLAY_NAME, storageMessage: STORAGE_MESSAGE, icon: FSQIcon});
this.icon = FSQIcon;
this.appName = APP_NAME;
this.apiURL = apiURL;
this._auth0 = new Auth0Client({
domain: authDomain,
clientId,
scope: FOURSQUARE_AUTH_SCOPE,
authorizationParams: {
prompt: 'login',
redirect_uri: window.location.origin,
audience: FOURSQUARE_AUTH_AUDIENCE
},
cacheLocation: 'localstorage'
});
// the domain needs to be passed as input param
this._folderLink = userMapsURL;
this.isNew = true;
}
hasPrivateStorage() {
return FOURSQUARE_PRIVATE_STORAGE_ENABLED;
}
hasSharingUrl() {
return FOURSQUARE_SHARING_ENABLED;
}
async getUser() {
return this._auth0.getUser();
}
async login() {
return this._auth0.loginWithPopup(undefined, {popup: openPopup()});
}
async logout() {
return this._auth0.logout({
// this make sure after logging out the sdk will not redirect the user
openUrl: false
});
}
async uploadMap({mapData, options = {}}) {
const method = options.overwrite ? 'PUT' : 'POST';
const {map, thumbnail} = mapData;
const {title = '', description = '', loadParams} = map.info;
const mapIdToOverwrite = options.mapIdToOverwrite || loadParams?.id;
if (options.overwrite && !mapIdToOverwrite) {
throw new Error('Foursquare storage provider: no map id to overwrite');
}
const headers = await this.getHeaders();
const payload = {
name: title,
description,
importSource: FOURSQUARE_KEPLER_GL_IMPORT_SOURCE,
latestState: {
data: map
}
};
// To overwrite map.latestState we have to fetch the map first
if (options.overwrite) {
const response = await fetch(`${this.apiURL}/v1/maps/${mapIdToOverwrite}`, {
method: 'GET',
headers
});
const data = await response.json();
payload.latestState = data.latestState;
payload.latestState.data = map;
}
const mapResponse = await fetch(
`${this.apiURL}/v1/maps${options.overwrite ? `/${mapIdToOverwrite}` : ''}`,
{
method,
headers,
body: JSON.stringify(payload)
}
);
const createdMap = await mapResponse.json();
if (!options.overwrite) {
await fetch(`${this.apiURL}/v1/maps/${createdMap.id}/thumbnail`, {
method: 'PUT',
headers: {
...headers,
'Content-Type': 'image/png'
},
body: thumbnail
});
}
// pass through fsq map id
const newMapData = extractMapFromFSQResponse(createdMap);
return {...newMapData, info: {...newMapData.info, id: createdMap.id}};
}
async listMaps() {
const headers = await this.getHeaders();
const response = await fetch(
`${this.apiURL}/v1/maps?importSource=${FOURSQUARE_KEPLER_GL_IMPORT_SOURCE}`,
{
method: 'GET',
mode: 'cors',
headers
}
);
const data = await response.json();
return (data?.items || []).map(map => convertFSQModelToMapItem(map, `${this.apiURL}/v1/maps`));
}
async downloadMap(loadParams) {
let {id, path} = loadParams;
if (!id) {
// try to get map id from foursquare map path
if (typeof path === 'string') {
const pathId = /((\w{4,12}-?)){5}/.exec(path)[0];
if (pathId) {
id = pathId;
}
}
}
if (!id) {
return Promise.reject('No Map id was provider as part of loadParams');
}
const headers = await this.getHeaders();
const response = await fetch(`${this.apiURL}/v1/maps/${id}`, {
method: 'GET',
headers
});
const map = await response.json();
return Promise.resolve({
map: extractMapFromFSQResponse(map),
format: KEPLER_FORMAT
});
}
getMapUrl(loadParams) {
const {id} = loadParams;
return id ? `${this.apiURL}/v1/maps/${id}` : null;
}
getManagementUrl() {
return this._folderLink;
}
async getAccessToken() {
return this._auth0.getTokenSilently();
}
async getHeaders() {
const accessToken = await this.getAccessToken();
return {
Authorization: `Bearer ${accessToken}`,
Accept: 'application/json',
'Content-Type': 'application/json'
};
}
}
================================================
FILE: examples/demo-app/src/cloud-providers/index.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {CLOUD_PROVIDERS_CONFIGURATION} from '../constants/default-settings';
import DropboxProvider from './dropbox/dropbox-provider';
import CartoProvider from './carto/carto-provider';
import FoursquareProvider from './foursquare/foursquare-provider';
const {
DROPBOX_CLIENT_ID,
CARTO_CLIENT_ID,
FOURSQUARE_CLIENT_ID,
FOURSQUARE_DOMAIN,
FOURSQUARE_API_URL,
FOURSQUARE_USER_MAPS_URL
} = CLOUD_PROVIDERS_CONFIGURATION;
const DROPBOX_CLIENT_NAME = 'Kepler.gl Demo App';
export const DEFAULT_CLOUD_PROVIDER = 'dropbox';
export const CLOUD_PROVIDERS = [
new FoursquareProvider({
clientId: FOURSQUARE_CLIENT_ID,
authDomain: FOURSQUARE_DOMAIN,
apiURL: FOURSQUARE_API_URL,
userMapsURL: FOURSQUARE_USER_MAPS_URL
}),
new DropboxProvider(DROPBOX_CLIENT_ID, DROPBOX_CLIENT_NAME),
new CartoProvider(CARTO_CLIENT_ID)
];
export function getCloudProvider(providerName) {
const cloudProvider = CLOUD_PROVIDERS.find(provider => provider.name === providerName);
if (!cloudProvider) {
throw new Error(`Unknown cloud provider ${providerName}`);
}
return cloudProvider;
}
================================================
FILE: examples/demo-app/src/components/announcement.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React from 'react';
import styled from 'styled-components';
const StyledText = styled.div`
font-size: 12px;
`;
const StyledLink = styled.a`
text-decoration: underline !important;
color: white !important;
font-weight: 500;
margin-left: 8px;
&:hover {
cursor: pointer;
}
`;
const DisableBanner = styled.div`
display: inline-block;
margin-left: 20px;
`;
// We are using the link to make sure users who have seen
// previous banners can see this one because we check localstorage key
export const FormLink = 'https://shan990829.typeform.com/to/RbCAXt';
const Announcement = ({onDisable}) => (
Kepler.gl turns two years old! Help our open source community by taking this 5-minute-survey
and get a chance to win a $100 Amazon gift card . Make your answers count!
Take the survey
{onDisable ? (
Already provided my feedback!
) : null}
);
export default Announcement;
================================================
FILE: examples/demo-app/src/components/banner.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React from 'react';
import styled from 'styled-components';
import {Icons} from '@kepler.gl/components';
const StyledBanner = styled.div`
align-items: center;
background-color: ${props => props.bgColor};
color: ${props => props.fontColor};
display: flex;
height: ${props => props.height}px;
justify-content: space-between;
padding: 0 40px;
position: absolute;
transition: top 1s;
width: 100%;
z-index: 9999;
svg:hover {
cursor: pointer;
}
top: ${props => (props.visible ? 0 : -100)}px;
`;
const Banner = ({
bgColor = '#1F7CF4',
fontColor = '#FFFFFF',
height = 30,
children,
onClose,
show
}) => (
{children}
);
export default Banner;
================================================
FILE: examples/demo-app/src/components/load-data-modal/load-remote-map.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
// TODO: this will move onto kepler.gl core
import React, {Component} from 'react';
import PropTypes from 'prop-types';
import styled from 'styled-components';
import {validateUrl} from '@kepler.gl/common-utils';
import {Button} from '@kepler.gl/components';
import {FormattedMessage} from '@kepler.gl/localization';
import {CORS_LINK} from '../../constants/default-settings';
const propTypes = {
onLoadRemoteMap: PropTypes.func.isRequired
};
const StyledDescription = styled.div`
font-size: 14px;
color: ${props => props.theme.labelColorLT};
line-height: 18px;
margin-bottom: 12px;
`;
const InputForm = styled.div`
flex-grow: 1;
padding: 32px;
background-color: ${props => props.theme.panelBackgroundLT};
`;
const StyledInput = styled.input`
width: 100%;
padding: ${props => props.theme.inputPadding};
color: ${props => (props.error ? 'red' : props.theme.titleColorLT)};
height: ${props => props.theme.inputBoxHeight};
border: 0;
outline: 0;
font-size: ${props => props.theme.inputFontSize};
&:active,
&:focus,
&.focus,
&.active {
outline: 0;
}
`;
const StyledFromGroup = styled.div`
margin-top: 30px;
display: flex;
flex-direction: row;
`;
export const StyledInputLabel = styled.div`
font-size: 11px;
color: ${props => props.theme.textColorLT};
letter-spacing: 0.2px;
ul {
padding-left: 12px;
}
`;
export const StyledError = styled.div`
color: red;
`;
export const StyledErrorDescription = styled.div`
font-size: 14px;
`;
const Error = ({error, url}) => (
{url}
{error.message}
);
const CORS_LINK_MESSAGE = {corsLink: CORS_LINK};
class LoadRemoteMap extends Component {
state = {
dataUrl: '',
error: null,
submitted: false
};
onMapUrlChange = e => {
this.setState({
dataUrl: e.target.value,
error: !validateUrl(e.target.value) ? {message: 'Incorrect URL'} : null
});
};
onLoadRemoteMap = () => {
const {dataUrl, error} = this.state;
this.setState({submitted: true});
if (!dataUrl || error) {
return;
}
this.props.onLoadRemoteMap({dataUrl});
};
render() {
const displayedError = this.props.error || this.state.submitted ? this.state.error : null;
return (
https://your.map.url/map.json
http://your.map.url/data.csv
{displayedError && }
);
}
}
LoadRemoteMap.propTypes = propTypes;
export default LoadRemoteMap;
================================================
FILE: examples/demo-app/src/components/load-data-modal/sample-data-viewer.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React, {useEffect} from 'react';
import PropTypes from 'prop-types';
import styled from 'styled-components';
import {format} from 'd3-format';
import {LoadingDialog} from '@kepler.gl/components';
import {FormattedMessage} from 'react-intl';
const numFormat = format(',');
const StyledSampleGallery = styled.div`
display: flex;
justify-content: space-between;
flex-wrap: wrap;
`;
const StyledSampleMap = styled.div`
font-size: 14px;
font-weight: 500;
color: ${props => props.theme.textColorLT};
line-height: 22px;
width: 30%;
max-width: 480px;
margin-bottom: 50px;
.sample-map__image {
border-radius: 4px;
overflow: hidden;
margin-bottom: 12px;
opacity: 0.9;
transition: opacity 0.4s ease;
position: relative;
line-height: 0;
img {
max-width: 100%;
}
&:hover {
cursor: pointer;
opacity: 1;
}
}
.sample-map__size {
font-size: 12px;
font-weight: 400;
line-height: 24px;
}
&:hover {
.sample-map__image__caption {
opacity: 0.8;
transition: opacity 0.4s ease;
}
}
`;
const StyledImageCaption = styled.div`
color: ${props => props.theme.labelColorLT};
font-size: 11px;
font-weight: 400;
line-height: 16px;
margin-top: 10px;
opacity: 0;
`;
const StyledError = styled.div`
color: red;
font-size: 14px;
margin-bottom: 16px;
`;
const SampleMap = ({id, sample, onClick}) => (
{sample.imageUrl &&
}
{sample.label}
{sample.description}
);
const SampleMapGallery = ({
sampleMaps,
onLoadSample,
error,
isMapLoading,
locale,
loadSampleConfigurations
}) => {
useEffect(() => {
if (!sampleMaps.length) {
loadSampleConfigurations();
}
}, [sampleMaps, loadSampleConfigurations]);
return (
{error ? (
{error.message}
) : isMapLoading ? (
) : (
{sampleMaps
.filter(sp => sp.visible)
.map(sp => (
onLoadSample(sp)}
locale={locale}
/>
))}
)}
);
};
SampleMapGallery.propTypes = {
sampleMaps: PropTypes.arrayOf(PropTypes.object),
onLoadSample: PropTypes.func.isRequired,
loadSampleConfigurations: PropTypes.func.isRequired,
error: PropTypes.object
};
export default SampleMapGallery;
================================================
FILE: examples/demo-app/src/components/load-data-modal/sample-maps-tab.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React from 'react';
import styled from 'styled-components';
import {Icons} from '@kepler.gl/components';
import {media} from '@kepler.gl/styles';
import {FormattedMessage} from 'react-intl';
import {ASSETS_URL} from '../../constants/default-settings';
const StyledMapIcon = styled.div`
background-image: url('${ASSETS_URL}icon-demo-map.jpg');
background-repeat: no-repeat;
background-size: 64px 48px;
width: 64px;
height: 48px;
border-radius: 2px;
${media.portable`
width: 48px;
height: 32px;
`};
`;
const StyledTrySampleData = styled.div`
display: flex;
margin-bottom: 12px;
flex-grow: 1;
justify-content: flex-end;
color: ${props => props.theme.subtextColorLT};
.demo-map-title {
margin-left: 16px;
display: flex;
flex-direction: column;
justify-content: flex-end;
}
.demo-map-label {
font-size: 11px;
${media.portable`
font-size: 10px;
`};
}
.demo-map-action {
display: flex;
font-size: 14px;
align-items: center;
color: ${props => props.theme.subtextColorLT};
cursor: pointer;
${media.portable`
font-size: 12px;
`};
&:hover {
color: ${props => props.theme.textColorLT};
}
span {
white-space: nowrap;
}
svg {
margin-left: 10px;
}
}
`;
const SampleMapsTab = ({onClick}) => {
return (
);
};
export default SampleMapsTab;
================================================
FILE: examples/demo-app/src/components/map-control/map-control.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import classnames from 'classnames';
import React, {useState} from 'react';
import Markdown from 'markdown-to-jsx';
import styled from 'styled-components';
import {useLocalStorage} from 'usehooks-ts';
import {Icons, IconRoundSmall, LinkRenderer, MapControlButton} from '@kepler.gl/components';
import {getApplicationConfig} from '@kepler.gl/utils';
const StyledFloatingPanel = styled.div`
margin-right: 12px;
margin-top: 12px;
`;
const StyledProjectPanel = styled.div`
background: ${props => props.theme.panelBackground};
padding: 16px 16px 16px 20px;
width: 280px;
box-shadow: ${props => props.theme.panelBoxShadow};
.project-title {
color: ${props => props.theme.titleTextColor};
font-size: 13px;
font-weight: 500;
display: flex;
justify-content: space-between;
}
.project-description {
color: ${props => props.theme.textColor};
font-size: 11px;
margin-top: 12px;
a {
font-weight: 500;
color: ${props => props.theme.titleTextColor};
}
}
.project-links {
margin-top: 16px;
width: 100%;
display: flex;
align-items: center;
justify-content: flex-end;
}
`;
const StyledPanelAction = styled.div`
border-radius: 2px;
margin-left: 4px;
padding: 5px;
font-weight: 500;
a {
align-items: center;
justify-content: flex-start;
display: flex;
height: 16px;
padding-right: 10px;
color: ${props => (props.active ? props.theme.textColorHl : props.theme.subtextColor)};
svg {
margin-right: 8px;
}
}
&:hover {
cursor: pointer;
a {
color: ${props => props.theme.textColorHl};
}
}
`;
export const LinkButton = props => (
{props.label}
);
const CloseButton = ({onClick}) => (
);
// convert https://raw.githubusercontent.com/keplergl/kepler.gl-data/master/nyctrips/config.json
// to https://github.com/keplergl/kepler.gl-data/blob/master/movement_pittsburgh/config.json
function getURL(url) {
return url
? url
.replace('https://raw.githubusercontent.com', 'https://github.com')
.replace('master', 'blob/master')
: url;
}
export function SampleMapPanel(props) {
const [isActive, setActive] = useState(true);
return (
{isActive ? (
{props.currentSample.label}
setActive(false)} />
{props.currentSample.detail || props.currentSample.description}
) : (
{
e.preventDefault();
setActive(true);
}}
>
)}
);
}
export function BannerMapPanel() {
const [isActive, setActive] = useState(true);
// Once the banner is closed, the user won't see the banner during next sessions.
const [showBanner, setShowBanner] = useLocalStorage(
'show-duckdb-preview-banner',
getApplicationConfig().showReleaseBanner
);
const [wasVisible] = useState(showBanner);
if (!showBanner && !wasVisible) {
return null;
}
return (
{isActive ? (
{'Kepler.gl 3.1 + DuckDB is here!'}
{
setShowBanner(false);
setActive(false);
}}
/>
{
'[Click here](https://kepler-preview.foursquare.com) to check out the preview of Kepler.gl 3.1 with DuckDB enabled!'
}
) : (
{
e.preventDefault();
setActive(true);
}}
>
)}
);
}
================================================
FILE: examples/demo-app/src/components/map-control/sql-panel-control.tsx
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React, {useCallback, ComponentType} from 'react';
import {MapControlButton, MapControlTooltipFactory} from '@kepler.gl/components';
import {MapControls} from '@kepler.gl/types';
interface SQLControlIcons {
sqlPanelIcon: ComponentType;
}
export type SqlPanelControlProps = {
mapControls: MapControls;
onToggleMapControl: (control: string) => void;
actionIcons: SQLControlIcons;
};
SqlPanelControlFactory.deps = [MapControlTooltipFactory];
export default function SqlPanelControlFactory(
MapControlTooltip: ReturnType
): React.FC {
const SqlPanelControl = ({mapControls, onToggleMapControl}) => {
const onClick = useCallback(
event => {
event.preventDefault();
onToggleMapControl('sqlPanel');
},
[onToggleMapControl]
);
const showControl = mapControls?.sqlPanel?.show;
if (!showControl) {
return null;
}
const active = mapControls?.sqlPanel?.active;
return (
SQL
);
};
return SqlPanelControl;
}
================================================
FILE: examples/demo-app/src/constants/default-settings.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
/* different option share same query type e.g. events,
and segments both use queryRunner */
import keyMirror from 'keymirror';
export const ASSETS_URL = 'https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/';
export const DATA_URL = 'https://raw.githubusercontent.com/keplergl/kepler.gl-data/master/';
export const MAP_URI = 'demo/map?mapUrl=';
/*
* If you want to add more samples, feel free to edit the json file on github kepler.gl data repo
*/
export const MAP_CONFIG_URL = `${DATA_URL}samples.json?nocache=${new Date().getTime()}`;
/**
* I know this is already defined in Kepler core but it should be defined here
* because it belongs to the demo app
* @type {string}
*/
export const KEPLER_GL_WEBSITE = 'http://kepler.gl/';
export const QUERY_TYPES = keyMirror({
file: null,
sample: null
});
export const QUERY_OPTIONS = keyMirror({
csv: null,
geojson: null
});
export const LOADING_METHODS = keyMirror({
remote: null,
sample: null
});
export const LOADING_SAMPLE_LIST_ERROR_MESSAGE = 'Not able to load sample gallery';
export const LOADING_SAMPLE_ERROR_MESSAGE = 'Not able to load sample';
export const CORS_LINK = 'https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS';
export const DEFAULT_FEATURE_FLAGS = {
cloudStorage: true
};
export const CLOUD_PROVIDERS_CONFIGURATION = {
MAPBOX_TOKEN: process.env.MapboxAccessToken, // eslint-disable-line
DROPBOX_CLIENT_ID: process.env.DropboxClientId, // eslint-disable-line
EXPORT_MAPBOX_TOKEN: process.env.MapboxExportToken, // eslint-disable-line
CARTO_CLIENT_ID: process.env.CartoClientId, // eslint-disable-line
FOURSQUARE_CLIENT_ID: process.env.FoursquareClientId, // eslint-disable-line
FOURSQUARE_DOMAIN: process.env.FoursquareDomain, // eslint-disable-line
FOURSQUARE_API_URL: process.env.FoursquareAPIURL, // eslint-disable-line
FOURSQUARE_USER_MAPS_URL: process.env.FoursquareUserMapsURL // eslint-disable-line
};
================================================
FILE: examples/demo-app/src/constants/localization.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
// Add english messages here, other languages will use these
// if translations not available for every message
const en = {
'modal.loadData.remote': 'Load Map using URL',
'sampleMapsTab.noData': 'No data ?',
'sampleMapsTab.trySampleData': 'Try sample data',
'sampleDataViewer.rowCount': ' {rowCount} rows',
'loadRemoteMap.description': 'Load your map using your custom URL',
'loadRemoteMap.message':
'You can use the following formats: CSV | JSON | Kepler.gl config json. Make sure the url contains the file extension.',
'loadRemoteMap.examples': 'Examples:',
'loadRemoteMap.cors':
'* CORS policy must be defined on your custom url domain in order to be accessible. For more info ',
'loadRemoteMap.clickHere': 'click here',
'loadRemoteMap.fetch': 'Fetch',
'tooltip.hideSQLPanel': 'Hide SQL Panel',
'tooltip.showSQLPanel': 'Show SQL Panel'
};
export const messages = {
en,
fi: {
'modal.loadData.remote': 'Lataa kartta URL-osoitteen avulla',
'sampleMapsTab.noData': 'Ei aineistoja?',
'sampleMapsTab.trySampleData': 'Kokeile testiaineistoja',
'sampleDataViewer.rowCount': ' {rowCount} riviä',
'loadRemoteMap.description': 'Lataa karttasi käyttämällä omaa urlia',
'loadRemoteMap.message':
'Voit käyttää formaatteja: CSV | JSON | Kepler.gl asetus-json. Varmista, että url sisältää tiedostopäätteen nimen.',
'loadRemoteMap.examples': 'Esimerkkejä:',
'loadRemoteMap.cors':
'* CORS-käytäntö pitää olla määriteltynä urlin domainissa, jotta aineiston voi ladata.',
'loadRemoteMap.clickHere': 'Lisätietoja',
'loadRemoteMap.fetch': 'Nouda'
},
ca: {
'modal.loadData.remote': 'Carrega mapa mitjançant URL',
'sampleMapsTab.noData': 'Cap dada?',
'sampleMapsTab.trySampleData': 'Prova dades de mostra',
'sampleDataViewer.rowCount': ' {rowCount} files',
'loadRemoteMap.description': 'Carrega el teu mapa amb la teva URL personalitzada',
'loadRemoteMap.message':
"Pots emprar els següents formats: CSV | JSON | Kepler.gl config json. Assegura't que la URL contingui l'extensió de l'arxiu.",
'loadRemoteMap.examples': 'Exemples:',
'loadRemoteMap.cors':
'* La política CORS s’ha de definir al teu domini per tal que sigui accessible. Per a més informació ',
'loadRemoteMap.clickHere': 'fes clic aquí',
'loadRemoteMap.fetch': 'Cerca'
},
es: {
'modal.loadData.remote': 'Cargar mapa usando URL',
'sampleMapsTab.noData': 'Ningún dato?',
'sampleMapsTab.trySampleData': 'Prueba datos de muestra',
'sampleDataViewer.rowCount': ' {rowCount} files',
'loadRemoteMap.description': 'Carga tu mapa con tu enlace personalizado',
'loadRemoteMap.message':
'Puedes usar los siguientes formatos: CSV | JSON | Kepler.gl config json. Asegurate que el enlace contenga la extensión del archivo.',
'loadRemoteMap.examples': 'Ejemplos:',
'loadRemoteMap.cors':
'* La política CORS debe ser definida en tu dominio para que sea accessible. Para más información ',
'loadRemoteMap.clickHere': 'haz clic aquí',
'loadRemoteMap.fetch': 'Busca'
},
cn: {
'modal.loadData.remote': '使用 URL 加载地图',
'sampleMapsTab.noData': '没有数据?',
'sampleMapsTab.trySampleData': '尝试样本数据',
'sampleDataViewer.rowCount': ' {rowCount} 行',
'loadRemoteMap.description': '使用自定义 URL 加载地图',
'loadRemoteMap.message':
'您可以使用以下格式:CSV | JSON | Kepler.gl 配置 json。 确保 url 包含文件扩展名。',
'loadRemoteMap.examples': '示例:',
'loadRemoteMap.cors': '* 必须在您的自定义 url 域上定义 CORS 策略才能访问。欲了解更多信息',
'loadRemoteMap.clickHere': '点击此处',
'loadRemoteMap.fetch': '获取'
}
};
================================================
FILE: examples/demo-app/src/data/sample-animate-trip-data.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
export default {
type: 'FeatureCollection',
features: [
{
type: 'Feature',
properties: {
vendor: 'A',
value: 10
},
geometry: {
type: 'LineString',
coordinates: [
[-73.78966, 40.6429, 0, 1565578338],
[-73.7895, 40.64267, 0, 1565578346],
[-73.78923, 40.6424, 0, 1565578356],
[-73.78905, 40.64222, 0, 1565578364],
[-73.7889, 40.64209, 0, 1565578365],
[-73.78859, 40.64191, 0, 1565578367],
[-73.78836, 40.64181, 0, 1565578368],
[-73.78793, 40.6417, 0, 1565578371],
[-73.78756, 40.64163, 0, 1565578373],
[-73.78707, 40.64159, 0, 1565578375],
[-73.78674, 40.64161, 0, 1565578377],
[-73.78659, 40.64166, 0, 1565578378],
[-73.78646, 40.64172, 0, 1565578379],
[-73.78633, 40.64182, 0, 1565578380],
[-73.78612, 40.6422, 0, 1565578382],
[-73.78607, 40.64244, 0, 1565578384],
[-73.7861, 40.64263, 0, 1565578385],
[-73.78621, 40.64305, 0, 1565578388],
[-73.78621, 40.64323, 0, 1565578390],
[-73.78619, 40.64337, 0, 1565578391],
[-73.78612, 40.6435, 0, 1565578392],
[-73.78586, 40.64382, 0, 1565578394],
[-73.78583, 40.64388, 0, 1565578395],
[-73.78582, 40.64397, 0, 1565578395],
[-73.78585, 40.64404, 0, 1565578396],
[-73.78655, 40.64488, 0, 1565578403],
[-73.78666, 40.64505, 0, 1565578404],
[-73.78685, 40.64546, 0, 1565578407],
[-73.7869, 40.64571, 0, 1565578409],
[-73.7869, 40.64592, 0, 1565578410],
[-73.78687, 40.64619, 0, 1565578412],
[-73.78677, 40.64634, 0, 1565578413],
[-73.78668, 40.64643, 0, 1565578414],
[-73.78658, 40.64649, 0, 1565578415],
[-73.78645, 40.64655, 0, 1565578416],
[-73.78629, 40.64657, 0, 1565578416],
[-73.78613, 40.64656, 0, 1565578417],
[-73.786, 40.64653, 0, 1565578418],
[-73.78588, 40.64647, 0, 1565578419],
[-73.78578, 40.6464, 0, 1565578419],
[-73.7857, 40.6463, 0, 1565578420],
[-73.78566, 40.64622, 0, 1565578421],
[-73.78565, 40.64607, 0, 1565578422],
[-73.78574, 40.64584, 0, 1565578423],
[-73.78588, 40.64565, 0, 1565578425],
[-73.78611, 40.64547, 0, 1565578427],
[-73.78638, 40.64534, 0, 1565578428],
[-73.78677, 40.6452, 0, 1565578431],
[-73.78702, 40.64514, 0, 1565578432],
[-73.78744, 40.64505, 0, 1565578434],
[-73.7878, 40.645, 0, 1565578436],
[-73.78831, 40.64496, 0, 1565578439],
[-73.79014, 40.64495, 0, 1565578449]
]
}
},
{
type: 'Feature',
properties: {
vendor: 'B',
value: 4
},
geometry: {
type: 'LineString',
coordinates: [
[-74.33223, 40.64375, 0, 1565578213],
[-74.33242, 40.64353, 0, 1565578217],
[-74.33001, 40.64222, 0, 1565578243],
[-74.32882, 40.64154, 0, 1565578256],
[-74.32682, 40.64039, 0, 1565578278],
[-74.32589, 40.63985, 0, 1565578288],
[-74.31725, 40.63485, 0, 1565578382],
[-74.31404, 40.63302, 0, 1565578417],
[-74.30616, 40.6283, 0, 1565578504],
[-74.30592, 40.62814, 0, 1565578506],
[-74.3056, 40.62783, 0, 1565578511],
[-74.30549, 40.62763, 0, 1565578513],
[-74.30536, 40.62722, 0, 1565578518],
[-74.30524, 40.62704, 0, 1565578521],
[-74.30511, 40.62689, 0, 1565578523],
[-74.30447, 40.62623, 0, 1565578532],
[-74.30409, 40.62652, 0, 1565578536],
[-74.30374, 40.62689, 0, 1565578541],
[-74.30328, 40.62753, 0, 1565578549],
[-74.30297, 40.6279, 0, 1565578553],
[-74.30174, 40.6292, 0, 1565578570],
[-74.29912, 40.63154, 0, 1565578585],
[-74.29855, 40.63202, 0, 1565578588],
[-74.29796, 40.63249, 0, 1565578591],
[-74.29508, 40.63461, 0, 1565578606],
[-74.29448, 40.63508, 0, 1565578610],
[-74.29409, 40.6354, 0, 1565578612],
[-74.29373, 40.63575, 0, 1565578614],
[-74.29322, 40.63626, 0, 1565578617],
[-74.29209, 40.63753, 0, 1565578624],
[-74.29086, 40.63902, 0, 1565578633],
[-74.28998, 40.64015, 0, 1565578639],
[-74.28944, 40.64091, 0, 1565578644],
[-74.28908, 40.64151, 0, 1565578647],
[-74.2888, 40.64201, 0, 1565578649],
[-74.2883, 40.64303, 0, 1565578655],
[-74.28789, 40.64408, 0, 1565578660],
[-74.28762, 40.64494, 0, 1565578664],
[-74.28745, 40.6457, 0, 1565578668],
[-74.28733, 40.64636, 0, 1565578671],
[-74.28723, 40.64724, 0, 1565578676],
[-74.28717, 40.64812, 0, 1565578680],
[-74.28712, 40.65661, 0, 1565578721],
[-74.28709, 40.66022, 0, 1565578739],
[-74.28705, 40.6611, 0, 1565578743],
[-74.28698, 40.66175, 0, 1565578746],
[-74.28687, 40.6624, 0, 1565578750],
[-74.28667, 40.66327, 0, 1565578754],
[-74.28642, 40.6641, 0, 1565578758],
[-74.28619, 40.66472, 0, 1565578761],
[-74.28573, 40.66576, 0, 1565578766],
[-74.2853, 40.66657, 0, 1565578771],
[-74.28506, 40.66697, 0, 1565578773],
[-74.28434, 40.66804, 0, 1565578779],
[-74.28077, 40.67287, 0, 1565578806]
]
}
},
{
type: 'Feature',
properties: {
vendor: 'A',
value: 7
},
geometry: {
type: 'LineString',
coordinates: [
[-73.87893, 40.64672, 0, 1565578095],
[-73.87969, 40.64624, 0, 1565578123],
[-73.87976, 40.64619, 0, 1565578125],
[-73.88064, 40.64697, 0, 1565578156],
[-73.88138, 40.64765, 0, 1565578181],
[-73.88234, 40.64849, 0, 1565578214],
[-73.883, 40.64911, 0, 1565578237],
[-73.88338, 40.64943, 0, 1565578250],
[-73.88349, 40.64941, 0, 1565578252],
[-73.88411, 40.64995, 0, 1565578273],
[-73.8848, 40.65076, 0, 1565578302],
[-73.88624, 40.6527, 0, 1565578367],
[-73.88632, 40.65281, 0, 1565578371],
[-73.88747, 40.65232, 0, 1565578386],
[-73.88798, 40.6521, 0, 1565578393],
[-73.88896, 40.65341, 0, 1565578430],
[-73.88978, 40.65306, 0, 1565578442],
[-73.89059, 40.65271, 0, 1565578454],
[-73.89413, 40.65747, 0, 1565578588],
[-73.89424, 40.65762, 0, 1565578593],
[-73.89595, 40.65786, 0, 1565578627],
[-73.89613, 40.65785, 0, 1565578630],
[-73.89616, 40.65796, 0, 1565578633],
[-73.898, 40.65768, 0, 1565578661],
[-73.8988, 40.65753, 0, 1565578673],
[-73.89955, 40.65738, 0, 1565578684],
[-73.90021, 40.65728, 0, 1565578695],
[-73.90039, 40.65724, 0, 1565578698],
[-73.90051, 40.65719, 0, 1565578700],
[-73.90063, 40.65712, 0, 1565578703],
[-73.90076, 40.65702, 0, 1565578706],
[-73.90118, 40.6566, 0, 1565578717],
[-73.90135, 40.65646, 0, 1565578721],
[-73.90282, 40.65553, 0, 1565578751],
[-73.90299, 40.65544, 0, 1565578755],
[-73.90319, 40.65536, 0, 1565578758],
[-73.90321, 40.65546, 0, 1565578761],
[-73.90337, 40.65542, 0, 1565578765],
[-73.90616, 40.65501, 0, 1565578836]
]
}
},
{
type: 'Feature',
properties: {
vendor: 'A',
value: 11
},
geometry: {
type: 'LineString',
coordinates: [
[-74.18572, 40.68929, 0, 1565577803],
[-74.1858, 40.68924, 0, 1565577808],
[-74.18564, 40.68909, 0, 1565577821],
[-74.18529, 40.68929, 0, 1565577830],
[-74.18486, 40.68954, 0, 1565577841],
[-74.18482, 40.68982, 0, 1565577849],
[-74.18481, 40.691, 0, 1565577882],
[-74.18484, 40.69121, 0, 1565577888],
[-74.18487, 40.6913, 0, 1565577891],
[-74.18494, 40.69143, 0, 1565577895],
[-74.18506, 40.69157, 0, 1565577900],
[-74.18531, 40.69177, 0, 1565577907],
[-74.18612, 40.69232, 0, 1565577931],
[-74.18633, 40.69247, 0, 1565577937],
[-74.18641, 40.69259, 0, 1565577941],
[-74.18643, 40.69267, 0, 1565577943],
[-74.18644, 40.69272, 0, 1565577944],
[-74.18641, 40.69288, 0, 1565577946],
[-74.18636, 40.69297, 0, 1565577947],
[-74.18582, 40.69346, 0, 1565577954],
[-74.18532, 40.69402, 0, 1565577961],
[-74.18499, 40.6945, 0, 1565577967]
]
}
},
{
type: 'Feature',
properties: {
vendor: 'B',
value: 6
},
geometry: {
type: 'LineString',
coordinates: [
[-74.00823, 40.71351, 0, 1565577838],
[-74.00884, 40.7138, 0, 1565577867],
[-74.00668, 40.71653, 0, 1565577947],
[-74.00625, 40.71708, 0, 1565577962],
[-74.00753, 40.71766, 0, 1565577996],
[-74.00888, 40.71827, 0, 1565578032],
[-74.00869, 40.71929, 0, 1565578060],
[-74.00858, 40.71996, 0, 1565578077],
[-74.01191, 40.72029, 0, 1565578205],
[-74.01204, 40.72031, 0, 1565578210],
[-74.01097, 40.72554, 0, 1565578295],
[-74.01078, 40.72677, 0, 1565578315],
[-74.01008, 40.73394, 0, 1565578431],
[-74.00983, 40.73694, 0, 1565578480],
[-74.00979, 40.73746, 0, 1565578488],
[-74.00989, 40.73851, 0, 1565578505],
[-74.0099, 40.73899, 0, 1565578513],
[-74.00985, 40.73929, 0, 1565578518],
[-74.0098, 40.73942, 0, 1565578520],
[-74.00967, 40.73971, 0, 1565578525],
[-74.00928, 40.74033, 0, 1565578536],
[-74.00913, 40.74065, 0, 1565578541],
[-74.00906, 40.74081, 0, 1565578544],
[-74.00887, 40.74154, 0, 1565578556],
[-74.00871, 40.74219, 0, 1565578567],
[-74.00868, 40.74235, 0, 1565578569],
[-74.00837, 40.74395, 0, 1565578595],
[-74.00803, 40.74588, 0, 1565578625],
[-74.00773, 40.7475, 0, 1565578651],
[-74.00769, 40.74775, 0, 1565578654],
[-74.00762, 40.74845, 0, 1565578668],
[-74.00768, 40.7487, 0, 1565578672],
[-74.00777, 40.74892, 0, 1565578677],
[-74.00811, 40.74959, 0, 1565578690],
[-74.0082, 40.7498, 0, 1565578694],
[-74.00825, 40.75003, 0, 1565578699],
[-74.00827, 40.75029, 0, 1565578703],
[-74.00825, 40.75055, 0, 1565578708],
[-74.00699, 40.75388, 0, 1565578773],
[-74.00664, 40.75442, 0, 1565578784],
[-74.00336, 40.75891, 0, 1565578881]
]
}
},
{
type: 'Feature',
properties: {
vendor: 'A',
value: 1
},
geometry: {
type: 'LineString',
coordinates: [
[-73.97301, 40.67601, 0, 1565578666],
[-73.97161, 40.67546, 0, 1565578694],
[-73.97142, 40.67575, 0, 1565578712],
[-73.9719, 40.67641, 0, 1565578732],
[-73.97244, 40.67716, 0, 1565578756],
[-73.97234, 40.67744, 0, 1565578778],
[-73.96917, 40.67678, 0, 1565578836]
]
}
},
{
type: 'Feature',
properties: {
vendor: 'A',
value: 7
},
geometry: {
type: 'LineString',
coordinates: [
[-74.03806, 40.74578, 0, 1565578252],
[-74.03893, 40.74289, 0, 1565578322],
[-74.03934, 40.74158, 0, 1565578354],
[-74.0384, 40.74142, 0, 1565578376],
[-74.03746, 40.74126, 0, 1565578399],
[-74.03824, 40.73872, 0, 1565578465],
[-74.03878, 40.73693, 0, 1565578511],
[-74.03893, 40.73693, 0, 1565578513],
[-74.03974, 40.73704, 0, 1565578524],
[-74.03979, 40.7369, 0, 1565578528],
[-74.03964, 40.73677, 0, 1565578531],
[-74.03916, 40.73685, 0, 1565578538],
[-74.03881, 40.73686, 0, 1565578546],
[-74.03854, 40.73684, 0, 1565578553],
[-74.03864, 40.73655, 0, 1565578562],
[-74.03879, 40.73571, 0, 1565578589],
[-74.03943, 40.73155, 0, 1565578722],
[-74.03954, 40.7308, 0, 1565578746],
[-74.03791, 40.73066, 0, 1565578753],
[-74.03782, 40.73065, 0, 1565578754],
[-74.03789, 40.73024, 0, 1565578763],
[-74.03795, 40.72999, 0, 1565578769],
[-74.03797, 40.72988, 0, 1565578770],
[-74.03798, 40.7298, 0, 1565578771],
[-74.0368, 40.7298, 0, 1565578784],
[-74.03646, 40.72977, 0, 1565578788],
[-74.03613, 40.72971, 0, 1565578791],
[-74.03604, 40.72969, 0, 1565578792],
[-74.03222, 40.72883, 0, 1565578822]
]
}
},
{
type: 'Feature',
properties: {
vendor: 'B',
value: 15
},
geometry: {
type: 'LineString',
coordinates: [
[-73.79007, 40.64681, 0, 1565577697],
[-73.79092, 40.64643, 0, 1565577720],
[-73.79108, 40.64631, 0, 1565577726],
[-73.7912, 40.64613, 0, 1565577732],
[-73.79121, 40.64597, 0, 1565577737],
[-73.79116, 40.64581, 0, 1565577743],
[-73.79106, 40.6457, 0, 1565577747],
[-73.79094, 40.64557, 0, 1565577749],
[-73.79072, 40.64542, 0, 1565577751],
[-73.79057, 40.64534, 0, 1565577753],
[-73.7904, 40.64527, 0, 1565577754],
[-73.79022, 40.64522, 0, 1565577755],
[-73.78974, 40.64522, 0, 1565577758],
[-73.78916, 40.64528, 0, 1565577760],
[-73.78889, 40.64534, 0, 1565577762],
[-73.78855, 40.64545, 0, 1565577764],
[-73.78827, 40.64558, 0, 1565577765],
[-73.78818, 40.6456, 0, 1565577766],
[-73.788, 40.64562, 0, 1565577767],
[-73.78793, 40.64561, 0, 1565577767],
[-73.7878, 40.64556, 0, 1565577768],
[-73.78772, 40.64545, 0, 1565577769],
[-73.78771, 40.64534, 0, 1565577769],
[-73.78775, 40.64524, 0, 1565577770],
[-73.78784, 40.64518, 0, 1565577771],
[-73.78799, 40.64513, 0, 1565577771],
[-73.78984, 40.64512, 0, 1565577781],
[-73.79041, 40.64509, 0, 1565577784],
[-73.79124, 40.64508, 0, 1565577788],
[-73.79167, 40.64506, 0, 1565577790],
[-73.79193, 40.64508, 0, 1565577791],
[-73.79313, 40.64494, 0, 1565577797],
[-73.79412, 40.64485, 0, 1565577802],
[-73.79437, 40.64481, 0, 1565577804],
[-73.79472, 40.64474, 0, 1565577805],
[-73.79569, 40.64469, 0, 1565577808],
[-73.79623, 40.64469, 0, 1565577810],
[-73.79671, 40.64472, 0, 1565577811],
[-73.79722, 40.64478, 0, 1565577813],
[-73.79768, 40.64486, 0, 1565577814],
[-73.79813, 40.64496, 0, 1565577816],
[-73.79865, 40.64511, 0, 1565577817],
[-73.79896, 40.64522, 0, 1565577818],
[-73.79953, 40.64545, 0, 1565577820],
[-73.80022, 40.64582, 0, 1565577823],
[-73.80062, 40.64606, 0, 1565577824],
[-73.80102, 40.64636, 0, 1565577826],
[-73.80178, 40.64703, 0, 1565577829],
[-73.80245, 40.64766, 0, 1565577832],
[-73.80314, 40.64837, 0, 1565577836],
[-73.80379, 40.64909, 0, 1565577839],
[-73.80479, 40.65031, 0, 1565577845],
[-73.80528, 40.65096, 0, 1565577848],
[-73.80578, 40.65166, 0, 1565577851],
[-73.80623, 40.65236, 0, 1565577854],
[-73.80658, 40.65294, 0, 1565577856],
[-73.80681, 40.65342, 0, 1565577858],
[-73.80702, 40.65396, 0, 1565577860],
[-73.80718, 40.65449, 0, 1565577862],
[-73.8073, 40.65502, 0, 1565577864],
[-73.80738, 40.6557, 0, 1565577867],
[-73.80731, 40.65585, 0, 1565577868],
[-73.80719, 40.65642, 0, 1565577873],
[-73.8071, 40.6567, 0, 1565577876],
[-73.807, 40.65692, 0, 1565577878],
[-73.80687, 40.6571, 0, 1565577880],
[-73.80672, 40.65725, 0, 1565577881],
[-73.80641, 40.65752, 0, 1565577884],
[-73.80622, 40.65766, 0, 1565577886],
[-73.80606, 40.65781, 0, 1565577887],
[-73.80593, 40.65799, 0, 1565577888]
]
}
}
]
};
export const animateTripDataId = 'animate-trip-data';
export const pointDataId = 'sample_taxi_trip';
// animationConfig,domain 1565577697000, 1565578881000
// filer.domain: 1565576422000, 1565577120000
export const pointData = {
fields: [
{
name: 'tpep_pickup_datetime',
format: 'YYYY-M-D H:m:s',
type: 'timestamp'
},
{name: 'pickup_longitude', format: '', type: 'real'},
{name: 'pickup_latitude', format: '', type: 'real'}
],
rows: [
['2019-08-12 2:23:42', -73.99389648, 40.75011063],
['2019-08-12 2:32:00', -73.97642517, 40.73981094],
['2019-08-12 2:21:00', -73.96870422, 40.75424576],
['2019-08-12 2:28:18', -73.86306, 40.76958084],
['2019-08-12 2:20:36', -73.94554138, 40.77942276],
['2019-08-12 2:20:22', -73.87445831, 40.7740097],
['2019-08-12 2:31:00', -73.97660065, 40.7518959]
]
};
export const replacePointData = {
fields: pointData.fields,
rows: [
['2019-08-12 2:23:18', -73.97812653, 40.75257492],
['2019-08-12 2:07:26', -74.00622559, 40.73387146],
['2019-08-12 2:08:55', -73.97122955, 40.75518417],
['2019-08-12 2:10:30', -73.97627258, 40.75893402]
]
};
export const config = {
version: 'v1',
config: {
visState: {
filters: [
{
dataId: [pointDataId],
id: '5tbxclf5g',
name: ['tpep_pickup_datetime'],
type: 'timeRange',
value: [1565576828000, 1565577141000],
animationWindow: 'free',
view: 'enlarged',
syncedWithLayerTimeline: true,
syncTimelineMode: 1,
enabled: true
}
],
layers: [
{
id: 'point-layer',
type: 'point',
config: {
dataId: pointDataId,
label: 'pickup',
color: [221, 178, 124],
columns: {
lat: 'pickup_latitude',
lng: 'pickup_longitude'
},
isVisible: true
}
},
{
id: 'trip-layer',
type: 'trip',
config: {
dataId: animateTripDataId,
columnMode: 'geojson',
label: 'Trip animation',
color: [18, 147, 154],
columns: {
geojson: '_geojson'
}
}
}
],
interactionConfig: {
tooltip: {
fieldsToShow: {
[animateTripDataId]: [
{
name: 'value',
format: null
}
],
[pointDataId]: [
{
name: 'tpep_pickup_datetime',
format: 'L LT'
}
]
},
compareMode: true,
compareType: 'relative',
enabled: true
}
},
layerBlending: 'normal',
overlayBlending: 'normal',
splitMaps: [],
animationConfig: {
currentTime: 1565577141000,
speed: 1
},
editor: {
features: [],
visible: true
}
}
}
};
================================================
FILE: examples/demo-app/src/data/sample-geojson-config.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
const config = {
version: 'v1',
config: {
visState: {
filters: [
{
dataId: ['bart-stops-geo-2'],
id: '2ua7g6t8',
name: ['exits'],
type: 'range',
value: [6121, 13547],
plotType: {
type: 'histogram'
},
animationWindow: 'free',
yAxis: null,
view: 'side',
speed: 1,
enabled: true
},
{
dataId: ['sf-zip-geo'],
id: 'kt1fkkbrb',
name: ['ZIP_CODE'],
type: 'range',
value: [94103, 94133],
plotType: {
type: 'histogram'
},
animationWindow: 'free',
yAxis: null,
view: 'side',
speed: 1,
enabled: true
}
],
layers: [
{
id: 'ze2p6id',
type: 'geojson',
config: {
dataId: 'bart-stops-geo',
label: 'Bart Stops Geo',
color: [151, 14, 45],
columns: {
geojson: '_geojson'
},
isVisible: true,
visConfig: {
opacity: 0.8,
thickness: 0.5,
strokeColor: [77, 193, 156],
colorRange: {
name: 'Global Warming',
type: 'sequential',
category: 'Uber',
colors: ['#5A1846', '#900C3F', '#C70039', '#E3611C', '#F1920E', '#FFC300']
},
strokeColorRange: {
name: 'Global Warming',
type: 'sequential',
category: 'Uber',
colors: ['#5A1846', '#900C3F', '#C70039', '#E3611C', '#F1920E', '#FFC300']
},
radius: 22.5,
sizeRange: [0, 10],
radiusRange: [0, 50],
heightRange: [0, 500],
elevationScale: 5,
stroked: true,
filled: true,
enable3d: false,
wireframe: false
},
textLabel: [
{
field: null,
color: [255, 255, 255],
size: 18,
offset: [0, 0],
anchor: 'start',
alignment: 'center'
}
]
},
visualChannels: {
colorField: null,
colorScale: 'quantile',
sizeField: null,
sizeScale: 'linear',
strokeColorField: null,
strokeColorScale: 'quantile',
heightField: null,
heightScale: 'linear',
radiusField: null,
radiusScale: 'linear'
}
},
{
id: 'ho3fgt9',
type: 'geojson',
config: {
dataId: 'sf-zip-geo',
label: 'SF Zip Geo',
color: [136, 87, 44],
columns: {
geojson: '_geojson'
},
isVisible: true,
visConfig: {
opacity: 0.8,
thickness: 0.5,
strokeColor: [255, 254, 213],
colorRange: {
name: 'UberPool 8',
type: 'diverging',
category: 'Uber',
colors: [
'#213E9A',
'#3C1FA7',
'#811CB5',
'#C318B0',
'#D01367',
'#DE0F0E',
'#EC7007',
'#F9E200'
],
reversed: false
},
strokeColorRange: {
name: 'Global Warming',
type: 'sequential',
category: 'Uber',
colors: ['#5A1846', '#900C3F', '#C70039', '#E3611C', '#F1920E', '#FFC300']
},
radius: 10,
sizeRange: [0, 10],
radiusRange: [0, 50],
heightRange: [0, 500],
elevationScale: 5,
stroked: true,
filled: true,
enable3d: false,
wireframe: false
},
textLabel: [
{
field: null,
color: [255, 255, 255],
size: 18,
offset: [0, 0],
anchor: 'start',
alignment: 'center'
}
]
},
visualChannels: {
colorField: {
name: 'ID',
type: 'integer'
},
colorScale: 'quantile',
sizeField: null,
sizeScale: 'linear',
strokeColorField: null,
strokeColorScale: 'quantile',
heightField: null,
heightScale: 'linear',
radiusField: null,
radiusScale: 'linear'
}
}
],
interactionConfig: {
tooltip: {
fieldsToShow: {
'bart-stops-geo': ['name'],
'sf-zip-geo': ['OBJECTID', 'ZIP_CODE', 'ID', 'name', 'STREETNAME']
},
enabled: true
},
brush: {
size: 0.5,
enabled: false
},
geocoder: {
enabled: false
}
},
layerBlending: 'normal'
},
mapStyle: {
styleType: 'b9tnac',
mapStyles: {
b9tnac: {
accessToken: null,
custom: true,
icon: 'https://api.mapbox.com/styles/v1/heshan0131/cjg0ks54x300a2squ8fr9vhvq/static/-122.3391,37.7922,9,0,0/400x300?access_token=pk.eyJ1IjoidWJlcmRhdGEiLCJhIjoiY2pmc3hhd21uMzE3azJxczJhOWc4czBpYyJ9.HiDptGv2C0Bkcv_TGr_kJw&logo=false&attribution=false',
id: 'b9tnac',
label: 'label maker',
url: 'mapbox://styles/heshan0131/cjg0ks54x300a2squ8fr9vhvq'
}
}
}
}
};
export default config;
================================================
FILE: examples/demo-app/src/data/sample-geojson-points.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
export default {
type: 'FeatureCollection',
features: [
{
type: 'Feature',
properties: {
name: 'Lafayette (LAFY)',
code: 'LF',
address: '3601 Deer Hill Road, Lafayette CA 94549',
entries: '3481',
exits: '3616',
latitude: 37.893394,
longitude: -122.123801
},
geometry: {
type: 'Point',
coordinates: [-122.123801, 37.893394]
}
},
{
type: 'Feature',
properties: {
name: '12th St. Oakland City Center (12TH)',
code: '12',
address: '1245 Broadway, Oakland CA 94612',
entries: '13418',
exits: '13547',
latitude: 37.803664,
longitude: -122.271604
},
geometry: {
type: 'Point',
coordinates: [-122.271604, 37.803664]
}
},
{
type: 'Feature',
properties: {
name: '16th St. Mission (16TH)',
code: '16',
address: '2000 Mission Street, San Francisco CA 94110',
entries: '12409',
exits: '12351',
latitude: 37.765062,
longitude: -122.419694
},
geometry: {
type: 'Point',
coordinates: [-122.419694, 37.765062]
}
},
{
type: 'Feature',
properties: {
name: '19th St. Oakland (19TH)',
code: '19',
address: '1900 Broadway, Oakland CA 94612',
entries: '13108',
exits: '13090',
latitude: 37.80787,
longitude: -122.269029
},
geometry: {
type: 'Point',
coordinates: [-122.269029, 37.80787]
}
},
{
type: 'Feature',
properties: {
name: '24th St. Mission (24TH)',
code: '24',
address: '2800 Mission Street, San Francisco CA 94110',
entries: '12817',
exits: '12529',
latitude: 37.752254,
longitude: -122.418466
},
geometry: {
type: 'Point',
coordinates: [-122.418466, 37.752254]
}
},
{
type: 'Feature',
properties: {
name: 'Ashby (ASHB)',
code: 'AS',
address: '3100 Adeline Street, Berkeley CA 94703',
entries: '5452',
exits: '5341',
latitude: 37.853024,
longitude: -122.26978
},
geometry: {
type: 'Point',
coordinates: [-122.26978, 37.853024]
}
},
{
type: 'Feature',
properties: {
name: 'Balboa Park (BALB)',
code: 'BP',
address: '401 Geneva Avenue, San Francisco CA 94112',
entries: '11170',
exits: '9817',
latitude: 37.721981,
longitude: -122.447414
},
geometry: {
type: 'Point',
coordinates: [-122.447414, 37.721981]
}
},
{
type: 'Feature',
properties: {
name: 'Bay Fair (BAYF)',
code: 'BF',
address: '15242 Hesperian Blvd., San Leandro CA 94578',
entries: '5564',
exits: '5516',
latitude: 37.697185,
longitude: -122.126871
},
geometry: {
type: 'Point',
coordinates: [-122.126871, 37.697185]
}
},
{
type: 'Feature',
properties: {
name: 'Castro Valley (CAST)',
code: 'CV',
address: '3301 Norbridge Dr., Castro Valley CA 94546',
entries: '2781',
exits: '2735',
latitude: 37.690754,
longitude: -122.075567
},
geometry: {
type: 'Point',
coordinates: [-122.075567, 37.690754]
}
},
{
type: 'Feature',
properties: {
name: 'Civic Center/UN Plaza (CIVC)',
code: 'CC',
address: '1150 Market Street, San Francisco CA 94102',
entries: '24798',
exits: '22626',
latitude: 37.779528,
longitude: -122.413756
},
geometry: {
type: 'Point',
coordinates: [-122.413756, 37.779528]
}
},
{
type: 'Feature',
properties: {
name: 'Colma (COLM)',
code: 'CM',
address: '365 D Street, Colma CA 94014',
entries: '4397',
exits: '4214',
latitude: 37.684638,
longitude: -122.466233
},
geometry: {
type: 'Point',
coordinates: [-122.466233, 37.684638]
}
},
{
type: 'Feature',
properties: {
name: 'Coliseum/Oakland Airport (COLS)',
code: 'CL',
address: '7200 San Leandro St., Oakland CA 94621',
entries: '5837',
exits: '5902',
latitude: 37.754006,
longitude: -122.197273
},
geometry: {
type: 'Point',
coordinates: [-122.197273, 37.754006]
}
},
{
type: 'Feature',
properties: {
name: 'Concord (CONC)',
code: 'CN',
address: '1451 Oakland Avenue, Concord CA 94520',
entries: '6035',
exits: '6008',
latitude: 37.973737,
longitude: -122.029095
},
geometry: {
type: 'Point',
coordinates: [-122.029095, 37.973737]
}
},
{
type: 'Feature',
properties: {
name: 'Daly City (DALY)',
code: 'DC',
address: '500 John Daly Blvd., Daly City CA 94014',
entries: '8681',
exits: '8502',
latitude: 37.706121,
longitude: -122.469081
},
geometry: {
type: 'Point',
coordinates: [-122.469081, 37.706121]
}
},
{
type: 'Feature',
properties: {
name: 'Downtown Berkeley (DBRK)',
code: 'BK',
address: '2160 Shattuck Avenue, Berkeley CA 94704',
entries: '11043',
exits: '11762',
latitude: 37.869867,
longitude: -122.268045
},
geometry: {
type: 'Point',
coordinates: [-122.268045, 37.869867]
}
},
{
type: 'Feature',
properties: {
name: 'El Cerrito del Norte (DELN)',
code: 'EN',
address: '6400 Cutting Blvd., El Cerrito CA 94530',
entries: '8176',
exits: '8668',
latitude: 37.925655,
longitude: -122.317269
},
geometry: {
type: 'Point',
coordinates: [-122.317269, 37.925655]
}
},
{
type: 'Feature',
properties: {
name: 'Dublin/Pleasanton (DUBL)',
code: 'ED',
address: '5801 Owens Dr., Pleasanton CA 94588',
entries: '7702',
exits: '7554',
latitude: 37.701695,
longitude: -121.900367
},
geometry: {
type: 'Point',
coordinates: [-121.900367, 37.701695]
}
},
{
type: 'Feature',
properties: {
name: 'Embarcadero (EMBR)',
code: 'EM',
address: '298 Market Street, San Francisco CA 94111',
entries: '40376',
exits: '46951',
latitude: 37.792976,
longitude: -122.396742
},
geometry: {
type: 'Point',
coordinates: [-122.396742, 37.792976]
}
},
{
type: 'Feature',
properties: {
name: 'Fremont (FRMT)',
code: 'FM',
address: '2000 BART Way, Fremont CA 94536',
entries: '8748',
exits: '8673',
latitude: 37.557355,
longitude: -121.9764
},
geometry: {
type: 'Point',
coordinates: [-121.9764, 37.557355]
}
},
{
type: 'Feature',
properties: {
name: 'Fruitvale (FTVL)',
code: 'FV',
address: '3401 East 12th Street, Oakland CA 94601',
entries: '7701',
exits: '8012',
latitude: 37.774963,
longitude: -122.224274
},
geometry: {
type: 'Point',
coordinates: [-122.224274, 37.774963]
}
},
{
type: 'Feature',
properties: {
name: 'Glen Park (GLEN)',
code: 'GP',
address: '2901 Diamond Street, San Francisco CA 94131',
entries: '7732',
exits: '7072',
latitude: 37.732921,
longitude: -122.434092
},
geometry: {
type: 'Point',
coordinates: [-122.434092, 37.732921]
}
},
{
type: 'Feature',
properties: {
name: 'Hayward (HAYW)',
code: 'HY',
address: "699 'B' Street, Hayward CA 94541",
entries: '4958',
exits: '5003',
latitude: 37.670399,
longitude: -122.087967
},
geometry: {
type: 'Point',
coordinates: [-122.087967, 37.670399]
}
},
{
type: 'Feature',
properties: {
name: 'Lake Merritt (LAKE)',
code: 'LM',
address: '800 Madison Street, Oakland CA 94607',
entries: '6539',
exits: '6604',
latitude: 37.797484,
longitude: -122.265609
},
geometry: {
type: 'Point',
coordinates: [-122.265609, 37.797484]
}
},
{
type: 'Feature',
properties: {
name: 'MacArthur (MCAR)',
code: 'MA',
address: '555 40th Street, Oakland CA 94609',
entries: '9000',
exits: '9228',
latitude: 37.828415,
longitude: -122.267227
},
geometry: {
type: 'Point',
coordinates: [-122.267227, 37.828415]
}
},
{
type: 'Feature',
properties: {
name: 'Millbrae (MLBR)',
code: 'MB',
address: '200 North Rollins Road, Millbrae CA 94030',
entries: '6570',
exits: '6149',
latitude: 37.599787,
longitude: -122.38666
},
geometry: {
type: 'Point',
coordinates: [-122.38666, 37.599787]
}
},
{
type: 'Feature',
properties: {
name: 'Montgomery St. (MONT)',
code: 'MT',
address: '598 Market Street, San Francisco CA 94104',
entries: '43430',
exits: '45128',
latitude: 37.789256,
longitude: -122.401407
},
geometry: {
type: 'Point',
coordinates: [-122.401407, 37.789256]
}
},
{
type: 'Feature',
properties: {
name: 'North Berkeley (NBRK)',
code: 'NB',
address: '1750 Sacramento Street, Berkeley CA 94702',
entries: '4363',
exits: '4563',
latitude: 37.87404,
longitude: -122.283451
},
geometry: {
type: 'Point',
coordinates: [-122.283451, 37.87404]
}
},
{
type: 'Feature',
properties: {
name: 'North Concord/Martinez (NCON)',
code: 'NC',
address: '3700 Port Chicago Highway, Concord CA 94520',
entries: '2800',
exits: '2652',
latitude: 38.003275,
longitude: -122.024597
},
geometry: {
type: 'Point',
coordinates: [-122.024597, 38.003275]
}
},
{
type: 'Feature',
properties: {
name: 'Orinda (ORIN)',
code: 'OR',
address: '11 Camino Pablo, Orinda CA 94563',
entries: '2896',
exits: '2970',
latitude: 37.878361,
longitude: -122.183791
},
geometry: {
type: 'Point',
coordinates: [-122.183791, 37.878361]
}
},
{
type: 'Feature',
properties: {
name: 'Pleasant Hill/Contra Costa Centre (PHIL)',
code: 'PH',
address: '1365 Treat Blvd., Walnut Creek CA 94597',
entries: '7574',
exits: '7442',
latitude: 37.928403,
longitude: -122.056013
},
geometry: {
type: 'Point',
coordinates: [-122.056013, 37.928403]
}
},
{
type: 'Feature',
properties: {
name: 'Pittsburg/Bay Point (PITT)',
code: 'WP',
address: '1700 West Leland Road, Pittsburg CA 94565',
entries: '6262',
exits: '6343',
latitude: 38.018914,
longitude: -121.945154
},
geometry: {
type: 'Point',
coordinates: [-121.945154, 38.018914]
}
},
{
type: 'Feature',
properties: {
name: 'El Cerrito Plaza (PLZA)',
code: 'EP',
address: '6699 Fairmount Avenue, El Cerrito CA 94530',
entries: '4763',
exits: '4952',
latitude: 37.903059,
longitude: -122.299272
},
geometry: {
type: 'Point',
coordinates: [-122.299272, 37.903059]
}
},
{
type: 'Feature',
properties: {
name: 'Powell St. (POWL)',
code: 'PL',
address: '899 Market Street, San Francisco CA 94102',
entries: '29460',
exits: '25621',
latitude: 37.784991,
longitude: -122.406857
},
geometry: {
type: 'Point',
coordinates: [-122.406857, 37.784991]
}
},
{
type: 'Feature',
properties: {
name: 'Richmond (RICH)',
code: 'RM',
address: '1700 Nevin Avenue, Richmond CA 94801',
entries: '4184',
exits: '4029',
latitude: 37.936887,
longitude: -122.353165
},
geometry: {
type: 'Point',
coordinates: [-122.353165, 37.936887]
}
},
{
type: 'Feature',
properties: {
name: 'Rockridge (ROCK)',
code: 'RR',
address: '5660 College Avenue, Oakland CA 94618',
entries: '5299',
exits: '5775',
latitude: 37.844601,
longitude: -122.251793
},
geometry: {
type: 'Point',
coordinates: [-122.251793, 37.844601]
}
},
{
type: 'Feature',
properties: {
name: 'San Leandro (SANL)',
code: 'SL',
address: '1401 San Leandro Blvd., San Leandro CA 94577',
entries: '5836',
exits: '5921',
latitude: 37.722619,
longitude: -122.161311
},
geometry: {
type: 'Point',
coordinates: [-122.161311, 37.722619]
}
},
{
type: 'Feature',
properties: {
name: 'San Bruno (SBRN)',
code: 'SB',
address: '1151 Huntington Avenue, San Bruno CA 94066',
entries: '3628',
exits: '3634',
latitude: 37.637753,
longitude: -122.416038
},
geometry: {
type: 'Point',
coordinates: [-122.416038, 37.637753]
}
},
{
type: 'Feature',
properties: {
name: "San Francisco Int'l Airport (SFIA)",
code: 'SO',
address: "International Terminal, Level 3, San Francisco Int'l Airport CA 94128",
entries: '5833',
exits: '4904',
latitude: 37.616035,
longitude: -122.392612
},
geometry: {
type: 'Point',
coordinates: [-122.392612, 37.616035]
}
},
{
type: 'Feature',
properties: {
name: 'South Hayward (SHAY)',
code: 'SH',
address: '28601 Dixon Street, Hayward CA 94544',
entries: '3007',
exits: '2829',
latitude: 37.6348,
longitude: -122.057551
},
geometry: {
type: 'Point',
coordinates: [-122.057551, 37.6348]
}
},
{
type: 'Feature',
properties: {
name: 'South San Francisco (SSAN)',
code: 'SS',
address: '1333 Mission Road, South San Francisco CA 94080',
entries: '3542',
exits: '3441',
latitude: 37.664174,
longitude: -122.444116
},
geometry: {
type: 'Point',
coordinates: [-122.444116, 37.664174]
}
},
{
type: 'Feature',
properties: {
name: 'Union City (UCTY)',
code: 'UC',
address: '10 Union Square, Union City CA 94587',
entries: '4772',
exits: '4770',
latitude: 37.591208,
longitude: -122.017867
},
geometry: {
type: 'Point',
coordinates: [-122.017867, 37.591208]
}
},
{
type: 'Feature',
properties: {
name: 'Walnut Creek (WCRK)',
code: 'WC',
address: '200 Ygnacio Valley Road, Walnut Creek CA 94596',
entries: '6719',
exits: '6917',
latitude: 37.905628,
longitude: -122.067423
},
geometry: {
type: 'Point',
coordinates: [-122.067423, 37.905628]
}
},
{
type: 'Feature',
properties: {
name: 'West Dublin/Pleasanton (WDUB)',
code: 'WD',
address: '6501 Golden Gate Drive, Dublin CA 94568',
entries: '3303',
exits: '3447',
latitude: 37.699759,
longitude: -121.928099
},
geometry: {
type: 'Point',
coordinates: [-121.928099, 37.699759]
}
},
{
type: 'Feature',
properties: {
name: 'West Oakland (WOAK)',
code: 'OW',
address: '1451 7th Street, Oakland CA 94607',
entries: '7312',
exits: '6838',
latitude: 37.804675,
longitude: -122.294582
},
geometry: {
type: 'Point',
coordinates: [-122.294582, 37.804675]
}
}
]
};
================================================
FILE: examples/demo-app/src/data/sample-gps-data.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
const gps = `timestamp,location-lng,location-lat,ground-speed,heading,id,location-alt
2014-08-01 00:00:23.000,90.2266981,27.6162803,0.22,0.0,Thang Kaar Thuub (3552),3217.0
2014-08-01 00:10:07.000,90.2266713,27.6162513,0.27,140.9,Thang Kaar Thuub (3552),3212.3
2014-08-01 00:20:07.000,90.2267115,27.6162102,0.27,110.1,Thang Kaar Thuub (3552),3209.1
2014-08-01 00:30:07.000,90.2267409,27.6162514,0.32,0.0,Thang Kaar Thuub (3552),3206.2
2014-08-01 00:40:07.000,90.2265545,27.6163481,0.46,0.0,Thang Kaar Thuub (3552),3231.3
2014-08-01 00:50:07.000,90.2269491,27.6161884,0.51,0.0,Thang Kaar Thuub (3552),3178.8
2014-08-01 01:00:07.000,90.2265336,27.6163122,0.3,99.61,Thang Kaar Thuub (3552),3257.2
2014-08-01 01:10:07.000,90.2267568,27.6162647,0.33,0.0,Thang Kaar Thuub (3552),3192.5
2014-08-01 01:20:07.000,90.2267296,27.6163003,0.43,0.0,Thang Kaar Thuub (3552),3199.2
2014-08-01 01:30:16.000,90.2267121,27.6163019,0.09,172.36,Thang Kaar Thuub (3552),3222.9
2014-08-01 01:40:21.000,90.2267198,27.6163409,0.07,0.0,Thang Kaar Thuub (3552),3216.7
2014-08-01 01:50:06.000,90.2266872,27.6162974,0.26,105.51,Thang Kaar Thuub (3552),3215.5
2014-08-01 02:00:06.000,90.2266652,27.6162898,0.5,157.94,Thang Kaar Thuub (3552),3219.6
2014-08-01 02:10:07.000,90.2266452,27.6163351,0.18,160.56,Thang Kaar Thuub (3552),3220.4
2014-08-01 02:20:07.000,90.2266829,27.6162774,0.22,169.74,Thang Kaar Thuub (3552),3216.9
2014-08-01 02:30:07.000,90.2266533,27.6162986,0.25,145.49,Thang Kaar Thuub (3552),3224.0
2014-08-01 02:40:07.000,90.2267379,27.6162983,0.21,195.95,Thang Kaar Thuub (3552),3225.6
2014-08-01 02:50:07.000,90.226692,27.616304,0.19,0.0,Thang Kaar Thuub (3552),3211.8
2014-08-01 03:00:07.000,90.2266683,27.6163021,0.28,0.0,Thang Kaar Thuub (3552),3227.1
2014-08-01 03:10:06.000,90.2266718,27.6162954,0.24,138.94,Thang Kaar Thuub (3552),3225.1
2014-08-01 03:20:07.000,90.2267475,27.6162578,0.06,0.0,Thang Kaar Thuub (3552),3218.9
2014-08-01 03:30:07.000,90.2266495,27.6163363,0.05,0.0,Thang Kaar Thuub (3552),3209.9
2014-08-01 03:40:07.000,90.2266573,27.6162552,0.33,278.53,Thang Kaar Thuub (3552),3216.8
2014-08-01 03:50:06.000,90.200501,27.5963135,11.97,248.38,Thang Kaar Thuub (3552),3150.4
2014-08-01 04:00:23.000,90.2029316,27.592159,11.09,102.89,Thang Kaar Thuub (3552),3173.1
2014-08-01 04:10:06.000,90.1979269,27.5900334,14.89,226.1,Thang Kaar Thuub (3552),3078.8
2014-08-01 04:20:06.000,90.1599981,27.5889937,9.36,214.3,Thang Kaar Thuub (3552),3219.6
2014-08-01 04:30:06.000,90.1304977,27.5797384,17.17,256.9,Thang Kaar Thuub (3552),3066.5
2014-08-01 04:40:06.000,90.0803941,27.5599255,10.13,278.53,Thang Kaar Thuub (3552),3100.0
2014-08-01 04:50:06.000,90.0107878,27.5658968,11.39,235.93,Thang Kaar Thuub (3552),2666.8
2014-08-01 05:00:06.000,89.9490298,27.5345735,9.28,214.3,Thang Kaar Thuub (3552),2309.5
2014-08-01 06:42:41.000,82.1138274,27.4378974,15.95,64.23,Thang Kaar Ngang Ka (4002),966.3
2014-08-01 06:42:42.000,82.1139649,27.4379582,14.9,62.91,Thang Kaar Ngang Ka (4002),969.9
2014-08-01 06:42:43.000,82.1140881,27.4380211,13.67,58.33,Thang Kaar Ngang Ka (4002),972.8
2014-08-01 06:42:44.000,82.1141907,27.4380927,12.54,48.5,Thang Kaar Ngang Ka (4002),974.6
2014-08-01 06:42:45.000,82.114263,27.4381765,11.44,32.11,Thang Kaar Ngang Ka (4002),975.2
2014-08-01 06:42:46.000,82.1143013,27.438272,11.35,13.76,Thang Kaar Ngang Ka (4002),975.8
2014-08-01 06:42:47.000,82.11431,27.4383692,10.8,0.66,Thang Kaar Ngang Ka (4002),977.7
2014-08-01 06:42:48.000,82.1142962,27.4384518,8.76,346.69,Thang Kaar Ngang Ka (4002),980.6
2014-08-01 06:42:49.000,82.1142637,27.4385091,6.63,325.71,Thang Kaar Ngang Ka (4002),983.6
2014-08-01 06:42:50.000,82.1142176,27.4385368,5.34,292.95,Thang Kaar Ngang Ka (4002),985.9
2014-08-01 06:42:51.000,82.1141648,27.4385357,5.47,258.87,Thang Kaar Ngang Ka (4002),987.5
2014-08-01 06:42:52.000,82.1141123,27.4385072,6.58,232.0,Thang Kaar Ngang Ka (4002),988.8
2014-08-01 06:42:53.000,82.1140662,27.4384524,8.17,211.68,Thang Kaar Ngang Ka (4002),990.3
2014-08-01 06:42:54.000,82.1140376,27.4383744,9.62,192.68,Thang Kaar Ngang Ka (4002),992.1
2014-08-01 06:42:55.000,82.114036,27.4382797,10.99,176.29,Thang Kaar Ngang Ka (4002),994.3
2014-08-01 06:42:56.000,82.1140666,27.438175,12.55,161.22,Thang Kaar Ngang Ka (4002),996.5
2014-08-01 06:42:57.000,82.1141258,27.4380679,13.64,150.73,Thang Kaar Ngang Ka (4002),998.2
2014-08-01 06:42:58.000,82.1142042,27.4379617,14.34,144.83,Thang Kaar Ngang Ka (4002),999.3
2014-08-01 06:42:59.000,82.1142915,27.4378567,14.58,142.21,Thang Kaar Ngang Ka (4002),1000.9
2014-08-01 06:43:00.000,82.1143788,27.4377539,14.18,142.21,Thang Kaar Ngang Ka (4002),1002.5
2014-08-01 06:43:01.000,82.1144592,27.4376522,13.65,145.49,Thang Kaar Ngang Ka (4002),1004.0
2014-08-01 06:43:02.000,82.1145274,27.4375495,13.09,150.73,Thang Kaar Ngang Ka (4002),1004.7
2014-08-01 06:43:03.000,82.1145875,27.4374392,13.84,154.66,Thang Kaar Ngang Ka (4002),1005.1
2014-08-01 06:43:04.000,82.1146421,27.4373208,14.33,157.94,Thang Kaar Ngang Ka (4002),1006.1
2014-08-01 06:43:05.000,82.1146882,27.4372001,14.03,161.87,Thang Kaar Ngang Ka (4002),1007.5
2014-08-01 06:43:06.000,82.1147188,27.4370782,13.75,169.08,Thang Kaar Ngang Ka (4002),1009.8
2014-08-01 06:43:07.000,82.1147296,27.4369611,12.75,177.6,Thang Kaar Ngang Ka (4002),1012.1
2014-08-01 06:43:08.000,82.1147213,27.4368536,11.67,186.12,Thang Kaar Ngang Ka (4002),1014.2
2014-08-01 06:43:09.000,82.1146955,27.4367568,10.77,195.95,Thang Kaar Ngang Ka (4002),1017.1
2014-08-01 06:43:10.000,82.1146547,27.436676,9.5,207.75,Thang Kaar Ngang Ka (4002),1020.1
2014-08-01 06:43:11.000,82.1145999,27.4366146,8.5,222.82,Thang Kaar Ngang Ka (4002),1023.3
2014-08-01 06:43:12.000,82.1145381,27.4365653,8.12,230.03,Thang Kaar Ngang Ka (4002),1026.2
2014-08-01 06:43:13.000,82.1144759,27.4365206,7.87,230.69,Thang Kaar Ngang Ka (4002),1028.2
2014-08-01 06:43:14.000,82.1144131,27.4364746,8.14,230.03,Thang Kaar Ngang Ka (4002),1029.8
2014-08-01 06:43:15.000,82.1143506,27.43643,7.86,231.34,Thang Kaar Ngang Ka (4002),1030.8
2014-08-01 06:43:16.000,82.1142864,27.4363918,7.6,237.9,Thang Kaar Ngang Ka (4002),1031.0
2014-08-01 06:43:17.000,82.1142171,27.4363629,7.58,247.73,Thang Kaar Ngang Ka (4002),1031.9
2014-08-01 06:43:18.000,82.114145,27.4363437,7.43,255.59,Thang Kaar Ngang Ka (4002),1033.1
2014-08-01 06:43:19.000,82.1140733,27.4363307,7.17,259.52,Thang Kaar Ngang Ka (4002),1034.5
2014-08-01 06:43:20.000,82.114004,27.4363217,6.85,262.14,Thang Kaar Ngang Ka (4002),1035.6
2014-08-01 06:43:21.000,82.1139337,27.4363205,7.05,271.32,Thang Kaar Ngang Ka (4002),1036.6
2014-08-01 06:43:22.000,82.1138619,27.4363266,7.2,276.56,Thang Kaar Ngang Ka (4002),1037.3
2014-08-01 06:43:23.000,82.1137874,27.4363359,7.56,277.87,Thang Kaar Ngang Ka (4002),1038.6
2014-08-01 06:43:24.000,82.1137119,27.4363441,7.51,275.91,Thang Kaar Ngang Ka (4002),1040.2
2014-08-01 06:43:25.000,82.1136379,27.4363491,7.29,273.29,Thang Kaar Ngang Ka (4002),1041.4
2014-08-01 06:43:26.000,82.1135644,27.4363482,7.29,267.39,Thang Kaar Ngang Ka (4002),1043.2`;
export default gps;
================================================
FILE: examples/demo-app/src/data/sample-hex-id-csv.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
export default `hex_id,value
89283082c2fffff,64
8928308288fffff,73
89283082c07ffff,65
89283082817ffff,74
89283082c3bffff,66
89283082883ffff,76
89283082c03ffff,60
89283082807ffff,68
8928308289bffff,49
89283082c0fffff,41
89283082c87ffff,50
89283082d4fffff,45
89283082c77ffff,41
89283082c2bffff,53
89283082803ffff,41
89283082813ffff,43
89283082d5bffff,45
89283082897ffff,40
89283082c67ffff,42
89283082d47ffff,51
89283082dc3ffff,52
89283082c33ffff,43
89283082c23ffff,40
89283082887ffff,36
89283082d4bffff,36
892830828bbffff,48
892830828b7ffff,28
89283082c17ffff,34
89283082c6fffff,21
8928308288bffff,25
892830828abffff,26
89283082c27ffff,27
89283082c8fffff,33
89283082cafffff,29
89283082c13ffff,27
89283082cabffff,22
89283082c63ffff,26
89283082d43ffff,30
89283082d53ffff,19
892830828a3ffff,28
89283082d1bffff,20
89283095367ffff,17
8928309536bffff,26
89283082c37ffff,16
89283082c73ffff,17
89283082c8bffff,15
89283082ca7ffff,27
89283082cb3ffff,32
89283082c0bffff,26
89283082ca3ffff,19
89283082dcfffff,18
89283082c1bffff,20
89283082ddbffff,18
8928309534fffff,16
89283082d03ffff,15
89283082cbbffff,21
89283082cd7ffff,9
8928309534bffff,9
892830828c7ffff,13
89283082cc7ffff,12
89283082d0bffff,19
89283082dcbffff,19
89283082dd3ffff,15
89283082dd7ffff,15
892830828d7ffff,13
89283082d17ffff,5
8928309536fffff,8
89283095373ffff,6
89283082cb7ffff,15
89283082d83ffff,9
89283082d07ffff,4
89283082d0fffff,3
89283082d13ffff,6
89283082d9bffff,5
89283082c83ffff,11
89283082d8bffff,4
89283082dc7ffff,5
89283095377ffff,5
89283082c97ffff,4
89283082d7bffff,2
89283082d8fffff,1
89283095347ffff,3
89283095363ffff,2
8928309537bffff,4
89283082d93ffff,6
89283082d73ffff,1
8928309530bffff,1
8928309532bffff,1`;
export const config = {
version: 'v1',
config: {
visState: {
filters: [],
layers: [
{
id: 'avlgol',
type: 'hexagonId',
config: {
dataId: 'h3-hex-id',
label: 'H3 Hexagon',
color: [241, 92, 23],
columns: {
hex_id: 'hex_id'
},
isVisible: true,
visConfig: {
opacity: 0.8,
colorRange: {
name: 'Global Warming',
type: 'sequential',
category: 'Uber',
colors: ['#5A1846', '#900C3F', '#C70039', '#E3611C', '#F1920E', '#FFC300']
},
coverage: 1,
sizeRange: [0, 500],
coverageRange: [0, 1],
elevationScale: 5
},
textLabel: [
{
field: null,
color: [255, 255, 255],
size: 18,
offset: [0, 0],
anchor: 'start',
alignment: 'center'
}
]
},
visualChannels: {
colorField: {
name: 'value',
type: 'integer'
},
colorScale: 'quantile',
sizeField: null,
sizeScale: 'linear',
coverageField: null,
coverageScale: 'linear'
}
}
],
interactionConfig: {
tooltip: {
fieldsToShow: {
'h3-hex-id': ['hex_id', 'value']
},
enabled: true
},
brush: {
size: 0.5,
enabled: false
},
geocoder: {
enabled: false
}
},
layerBlending: 'normal',
splitMaps: [
{
layers: {
avlgol: {
isAvailable: true,
isVisible: true
}
}
},
{
layers: {
avlgol: {
isAvailable: true,
isVisible: true
}
}
}
]
},
mapStyle: {
styleType: 'dark',
topLayerGroups: {},
visibleLayerGroups: {
label: true,
road: true,
border: false,
building: true,
water: true,
land: true,
'3d building': false
},
mapStyles: {}
},
mapState: {
isSplit: true
}
}
};
================================================
FILE: examples/demo-app/src/data/sample-icon-csv.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
export default `time,event_lat,event_lng,icon,icon-bk,annotation-severity,annotation-html
2016-06-28 20:02:06,37.778564,-122.39096,accel,accel,3,"Braking at 10:32pm, -0.3g"
2016-06-28 20:09:18,37.78824,-122.40894,add-person,add-person,3,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:03:16,38.281445,-122.29453,alert,alert,6,"Aborted lane change, 10:34pm"
2016-06-28 20:05:55,37.79354,-122.40121,android,android,5,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:03:39,37.456535,-122.136795,apple,apple,4,"Braking at 10:32pm, -0.3g"
2016-06-28 20:05:51,37.40066,-122.10239,attach,attach,3,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:08:20,37.77118,-122.42459,bold,bold,3,"Aborted lane change, 10:34pm"
2016-06-28 20:05:16,37.879066,-122.26108,,bookmark,,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:03:01,37.775578,-122.39363,,brake,3,"Braking at 10:32pm, -0.3g"
2016-06-28 20:03:22,37.7892,-122.408966,,briefcase,2,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:04:42,37.779964,-122.40398,bug,bug,3,"Aborted lane change, 10:34pm"
2016-06-28 20:03:55,37.792385,-122.406494,,calculator,2,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:08:31,37.791046,-122.401855,calendar,calendar,5,"Braking at 10:32pm, -0.3g"
2016-06-28 20:00:18,37.769897,-122.41168,,camera,2,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:02:13,37.798237,-122.41889,,cancel,5,"Aborted lane change, 10:34pm"
2016-06-28 20:06:23,37.76018,-122.41097,,car-black,5,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:05:16,37.37006,-121.96353,car-suv,car-suv,4,"Braking at 10:32pm, -0.3g"
2016-06-28 20:06:28,37.418655,-122.149734,car-taxi,car-taxi,3,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:09:41,37.787052,-122.41089,,car-uberx,,"Aborted lane change, 10:34pm"
2016-06-28 20:08:20,37.780136,-122.40495,,car,4,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:01:57,37.753033,-122.42929,,cart,4,"Braking at 10:32pm, -0.3g"
2016-06-28 20:01:29,37.749577,-122.41829,,certified,5,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:10:00,37.786648,-122.401634,,chart-area,3,"Aborted lane change, 10:34pm"
2016-06-28 20:02:57,38.122818,-122.25759,,chart,,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:07:48,37.788277,-122.40152,check-alt,check-alt,1,"Braking at 10:32pm, -0.3g"
2016-06-28 20:01:43,37.876453,-122.270096,,check,3,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:09:28,37.61695,-122.38396,circle-check,circle-check,5,"Aborted lane change, 10:34pm"
2016-06-28 20:06:07,37.80718,-122.40902,,circle-ellipsis,5,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:05:26,37.751713,-122.42713,circle,circle,3,"Braking at 10:32pm, -0.3g"
2016-06-28 20:08:57,37.75977,-122.41924,,clipboard,,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:08:14,37.80641,-122.404816,,clock,1,"Aborted lane change, 10:34pm"
2016-06-28 20:08:44,37.751354,-122.43317,,cloud,5,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:02:46,37.40591,-121.943054,,code-alt,1,"Braking at 10:32pm, -0.3g"
2016-06-28 20:07:07,37.74202,-122.49926,,code,1,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:03:39,37.80315,-122.402794,,control-off,5,"Aborted lane change, 10:34pm"
2016-06-28 20:04:01,37.44642,-122.16117,,control-on,4,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:01:25,37.796837,-122.40023,,crosshairs-alt,5,"Braking at 10:32pm, -0.3g"
2016-06-28 20:08:14,38.2984,-122.28682,,crosshairs,4,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:08:49,37.73762,-122.48069,,crown,2,"Aborted lane change, 10:34pm"
2016-06-28 20:08:21,37.444183,-122.170074,,dangerous,4,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:06:49,37.77029,-122.44518,,dashboard,4,"Braking at 10:32pm, -0.3g"
2016-06-28 20:03:43,37.781548,-122.41132,delete-alt,delete-alt,,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:09:47,37.770683,-122.403145,delete-thin,delete-thin,2,"Aborted lane change, 10:34pm"
2016-06-28 20:04:15,37.780903,-122.40269,,delete,4,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:05:04,37.368206,-121.92748,,details,2,"Braking at 10:32pm, -0.3g"
2016-06-28 20:02:47,37.890514,-122.057884,,directions,3,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:03:07,37.765217,-122.40161,,down-arrow-alt,3,"Aborted lane change, 10:34pm"
2016-06-28 20:07:58,37.759308,-122.40985,,down-arrow-thin,3,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:07:23,37.96648,-121.7171,,down-arrow,2,"Braking at 10:32pm, -0.3g"
2016-06-28 20:07:41,37.763405,-122.45817,,download,4,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:01:55,37.777637,-122.42391,,draw-shape,3,"Aborted lane change, 10:34pm"
2016-06-28 20:08:19,37.789856,-122.39953,,duplicate,1,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:08:29,37.557186,-121.9803,,edit,4,"Braking at 10:32pm, -0.3g"
2016-06-28 20:06:47,37.78949,-122.45104,,employees,4,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:07:11,37.795612,-122.394196,,enclosed-up-arrow,5,"Aborted lane change, 10:34pm"
2016-06-28 20:03:58,38.30026,-122.30107,,eta,5,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:02:03,37.78702,-122.433464,,events,4,"Braking at 10:32pm, -0.3g"
2016-06-28 20:06:50,37.800163,-122.46132,,eye-closed,5,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:07:22,37.800583,-122.44561,,eye,2,"Aborted lane change, 10:34pm"
2016-06-28 20:06:02,37.29343,-121.873825,,facebook,,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:04:19,37.792248,-122.400986,,fare-split,,"Braking at 10:32pm, -0.3g"
2016-06-28 20:02:50,37.762466,-122.46835,,files,3,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:09:41,37.913967,-122.04143,,film,5,"Aborted lane change, 10:34pm"
2016-06-28 20:02:38,37.70338,-122.474976,,filter,4,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:01:50,37.698505,-121.930046,,free-rides,,"Braking at 10:32pm, -0.3g"
2016-06-28 20:05:42,37.785946,-122.39721,,fullscreen-exit,3,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:09:09,37.80069,-122.437805,,fullscreen,2,"Aborted lane change, 10:34pm"
2016-06-28 20:06:49,37.79061,-122.420425,,geofence,4,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:06:34,37.788998,-122.40528,,github,4,"Braking at 10:32pm, -0.3g"
2016-06-28 20:07:35,37.745995,-122.17901,,globe,1,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:01:57,37.368294,-121.927605,,google+,5,"Aborted lane change, 10:34pm"
2016-06-28 20:02:35,37.39618,-121.87303,,graph,1,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:05:54,37.370895,-121.99693,,heart-empty,4,"Braking at 10:32pm, -0.3g"
2016-06-28 20:00:23,37.868176,-122.291626,,heart,4,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:07:25,37.78467,-122.46707,,help,3,"Aborted lane change, 10:34pm"
2016-06-28 20:08:47,37.39412,-122.080154,,hipchat,1,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:09:58,37.42982,-122.146904,,home,5,"Braking at 10:32pm, -0.3g"
2016-06-28 20:05:32,37.720642,-122.476135,,icons,5,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:00:05,37.77196,-122.288506,,id-card,2,"Aborted lane change, 10:34pm"
2016-06-28 20:04:07,37.801647,-122.41509,,info,4,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:04:53,37.557343,-121.97734,,instagram,2,"Braking at 10:32pm, -0.3g"
2016-06-28 20:09:37,37.79315,-122.394844,,italic,3,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:03:50,37.763123,-122.408714,,key,2,"Aborted lane change, 10:34pm"
2016-06-28 20:00:16,37.80429,-122.41334,,layers,4,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:06:53,37.737015,-122.21498,,layout,5,"Braking at 10:32pm, -0.3g"
2016-06-28 20:01:35,37.688007,-122.13062,,left-arrow-alt,,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:06:56,36.60167,-121.89041,,left-arrow-thin,2,"Aborted lane change, 10:34pm"
2016-06-28 20:00:33,37.77245,-122.5089,,left-arrow,3,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:01:32,37.787792,-122.39695,,link,5,"Braking at 10:32pm, -0.3g"
2016-06-28 20:08:15,37.789505,-122.39494,,linkedin,4,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:07:34,37.789154,-122.43993,,location,2,"Aborted lane change, 10:34pm"
2016-06-28 20:00:32,37.38603,-121.972755,,lock,5,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:08:30,37.776512,-122.42585,,lost,,"Braking at 10:32pm, -0.3g"
2016-06-28 20:05:31,37.764816,-122.413124,,mail-open,,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:03:24,37.80028,-122.40916,,mail-sent,2,"Aborted lane change, 10:34pm"
2016-06-28 20:01:29,37.927547,-122.05777,,mail,,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:04:58,37.37899,-122.11877,,menu,,"Braking at 10:32pm, -0.3g"
2016-06-28 20:02:13,37.78388,-122.40356,,message-phone,1,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:07:08,37.41093,-121.94651,,messages,,"Aborted lane change, 10:34pm"
2016-06-28 20:04:38,37.776924,-122.422935,,minus-alt,1,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:08:29,37.80069,-122.40894,,minus,4,"Braking at 10:32pm, -0.3g"
2016-06-28 20:06:47,37.79061,-122.29453,,moon,4,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:07:11,37.788998,-122.40121,,note,5,"Aborted lane change, 10:34pm"
2016-06-28 20:03:58,37.745995,-122.136795,,notification,5,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:02:03,37.368294,-122.10239,,notifications-mute,4,"Braking at 10:32pm, -0.3g"
2016-06-28 20:06:50,37.39618,-122.42459,,pause,5,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:07:22,37.370895,-122.26108,,payment,2,"Aborted lane change, 10:34pm"
2016-06-28 20:06:02,37.868176,-122.39363,,phone-alt,,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:04:19,37.78467,-122.408966,,phone,,"Braking at 10:32pm, -0.3g"
2016-06-28 20:02:50,37.39412,-122.40398,,picture,3,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:09:41,37.42982,-122.406494,,pin,5,"Aborted lane change, 10:34pm"
2016-06-28 20:02:38,37.720642,-122.401855,,place,4,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:01:50,37.77196,-122.41168,,play,,"Braking at 10:32pm, -0.3g"
2016-06-28 20:05:42,37.801647,-122.41889,,plus-alt,3,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:09:09,37.557343,-122.41097,,plus,2,"Aborted lane change, 10:34pm"
2016-06-28 20:06:49,37.79315,-121.96353,,power,4,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:06:34,37.763123,-122.149734,,previous,4,"Braking at 10:32pm, -0.3g"
2016-06-28 20:07:35,37.80429,-122.41089,,printer,1,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:01:57,37.737015,-122.40495,,profile,5,"Aborted lane change, 10:34pm"
2016-06-28 20:02:35,37.688007,-122.42929,,promo-alt,1,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:05:54,36.60167,-122.41829,,promo,4,"Braking at 10:32pm, -0.3g"
2016-06-28 20:00:23,37.77245,-122.401634,,receipt,4,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:07:25,37.787792,-122.25759,,reset,3,"Aborted lane change, 10:34pm"
2016-06-28 20:08:47,37.789505,-122.40152,,right-arrow-alt,1,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:09:58,37.789154,-122.270096,,right-arrow-thin,5,"Braking at 10:32pm, -0.3g"
2016-06-28 20:05:32,37.38603,-122.38396,,right-arrow,5,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:00:05,37.776512,-122.40902,,route-dot,2,"Aborted lane change, 10:34pm"
2016-06-28 20:04:07,37.764816,-122.42713,,search,4,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:04:53,37.80028,-122.41924,,send,2,"Braking at 10:32pm, -0.3g"
2016-06-28 20:09:37,37.927547,-122.404816,,settings-alt,3,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:03:50,37.37899,-122.43317,,settings,2,"Aborted lane change, 10:34pm"
2016-06-28 20:00:16,37.78388,-121.943054,,share-alt,4,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:06:53,37.41093,-122.49926,,share,5,"Braking at 10:32pm, -0.3g"
2016-06-28 20:01:35,37.776924,-122.402794,,sketch,,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:06:56,37.80069,-122.16117,,skip,2,"Aborted lane change, 10:34pm"
2016-06-28 20:00:33,37.79061,-122.40023,,slanted-down-arrow,3,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:01:32,37.788998,-122.28682,,slanted-up-arrow,5,"Braking at 10:32pm, -0.3g"
2016-06-28 20:08:15,37.745995,-122.48069,,sound-off,4,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:07:34,37.368294,-122.170074,,sound-on,2,"Aborted lane change, 10:34pm"
2016-06-28 20:00:32,37.39618,-122.44518,,star,5,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:08:30,37.370895,-122.41132,,steering-wheel,,"Braking at 10:32pm, -0.3g"
2016-06-28 20:05:31,37.868176,-122.403145,,stopwatch,,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:03:24,37.78467,-122.40269,,sun,2,"Aborted lane change, 10:34pm"
2016-06-28 20:01:29,37.39412,-121.92748,,support,,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:04:58,37.42982,-122.057884,,surge,,"Braking at 10:32pm, -0.3g"
2016-06-28 20:02:13,37.720642,-122.40161,,swerve,1,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:07:08,37.77196,-122.40985,,thumbs-up,,"Aborted lane change, 10:34pm"
2016-06-28 20:04:38,37.801647,-121.7171,,trash,1,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:06:53,37.557343,-122.45817,,trip-history,5,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:01:35,37.79315,-122.42391,,trips,2,"Aborted lane change, 10:34pm"
2016-06-28 20:06:56,37.763123,-122.39953,,trophy,4,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:00:33,37.80429,-121.9803,,twitter,2,"Braking at 10:32pm, -0.3g"
2016-06-28 20:01:32,37.737015,-122.45104,,uber-u,3,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:08:15,37.688007,-122.394196,,uber,2,"Aborted lane change, 10:34pm"
2016-06-28 20:07:34,36.60167,-122.30107,,underline,4,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:00:32,37.77245,-122.433464,,unlock,5,"Braking at 10:32pm, -0.3g"
2016-06-28 20:08:30,37.787792,-122.46132,,unstar,,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:05:31,37.789505,-122.44561,,up-arrow-alt,2,"Aborted lane change, 10:34pm"
2016-06-28 20:03:24,37.789154,-121.873825,,up-arrow-thin,3,Period of dangerous driving 10:32pm-10:34pm
2016-06-28 20:01:29,37.38603,-122.400986,,up-arrow,5,"Braking at 10:32pm, -0.3g"
2016-06-28 20:04:58,37.776512,-122.46835,,upload,4,"10:33pm,37.3490528616667,-121.972682895794,accel,3,""Acceleration at 10:33pm, +0.2g"""
2016-06-28 20:02:13,37.764816,-122.04143,,wrench,2,"Aborted lane change, 10:34pm"`;
export const config = {
version: 'v1',
config: {
visState: {
filters: [],
layers: [
{
id: 'xbbp4of',
type: 'hexagon',
config: {
dataId: 'test_icon_data',
label: 'new layer',
color: [221, 178, 124],
columns: {
lat: 'event_lat',
lng: 'event_lng'
},
isVisible: true,
visConfig: {
opacity: 0.8,
worldUnitSize: 0.5,
resolution: 8,
colorRange: {
name: 'Global Warming',
type: 'sequential',
category: 'Uber',
colors: ['#5A1846', '#900C3F', '#C70039', '#E3611C', '#F1920E', '#FFC300']
},
coverage: 1,
sizeRange: [0, 500],
percentile: [0, 100],
elevationPercentile: [0, 100],
elevationScale: 5,
'hi-precision': false,
colorAggregation: 'average',
sizeAggregation: 'average',
enable3d: true
}
},
visualChannels: {
colorField: {
name: 'annotation-severity',
type: 'integer'
},
colorScale: 'quantile',
sizeField: null,
sizeScale: 'linear'
}
}
],
interactionConfig: {
tooltip: {
fieldsToShow: {
test_icon_data: ['time', 'icon', 'icon-bk', 'annotation-severity', 'annotation-html'],
'6b69fg6ca': ['OBJECTID', 'ZIP_CODE', 'ID']
},
enabled: true
},
brush: {
size: 0.5,
enabled: false
},
geocoder: {
enabled: false
}
},
layerBlending: 'normal',
splitMaps: []
},
mapState: {
bearing: 24,
dragRotate: true,
latitude: 37.77189215118738,
longitude: -122.42436896812978,
pitch: 50,
zoom: 12.132280694715416,
isSplit: false
},
mapStyle: {
styleType: 'dark',
topLayerGroups: {
label: true
},
visibleLayerGroups: {
label: true,
road: true,
border: false,
building: true,
water: true,
land: true
}
}
}
};
================================================
FILE: examples/demo-app/src/data/sample-row-data.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
const data = [
{
venue_id: '7c69e9',
count: 10,
latitude: 41.852015,
longitude: -87.616047,
neighbors: [1, 2],
'source hex_id': '8a2664c1b74ffff',
'target latitude': 41.946969,
'target longitude': -87.693607,
'target hex_id': '8a2664ca51b7fff'
},
{
venue_id: 'fe26e3',
count: 22,
latitude: 41.946969,
longitude: -87.693607,
neighbors: [2, 3],
'source hex_id': '8a2664ca51b7fff',
'target latitude': 41.7552452681605,
'target longitude': -87.6322426600563,
'target hex_id': '8a2664cc3757fff'
},
{
venue_id: '5f3ec9',
count: 5,
latitude: 41.9228189446294,
longitude: -87.7459144592286,
neighbors: [3, 4],
'source hex_id': '8a2664ca22dffff',
'target latitude': 41.7552452681605,
'target longitude': -87.6322426600563,
'target hex_id': '8a2664cc3757fff'
},
{
venue_id: 'fe625f',
count: 11,
latitude: 41.9458364,
longitude: -87.7474061,
neighbors: [4, 5, 6],
'source hex_id': '8a2664ca66c7fff',
'target latitude': 41.990071,
'target longitude': -87.710537,
'target hex_id': '8a2664d8ad97fff'
},
{
venue_id: '7b1fe3',
count: 14,
latitude: 41.879519,
longitude: -87.6335512,
neighbors: [5, 6],
'source hex_id': '8a2664c1a89ffff',
'target latitude': 41.8801791917474,
'target longitude': -87.7507109194994,
'target hex_id': '8a2664c81567fff'
},
{
venue_id: 'd16c1b',
count: 8,
latitude: 41.7552452681605,
longitude: -87.6322426600563,
neighbors: [6, 7],
'source hex_id': '8a2664cc3757fff',
'target latitude': 41.9760432,
'target longitude': -87.7082406,
'target hex_id': '8a2664d8a71ffff'
},
{
venue_id: '5f3be3',
count: 6,
latitude: 41.990071,
longitude: -87.710537,
neighbors: [7, 8],
'source hex_id': '8a2664d8ad97fff',
'target latitude': 41.7552452681605,
'target longitude': -87.6322426600563,
'target hex_id': '8a2664cc3757fff'
},
{
venue_id: 'eeea20',
count: 5,
latitude: 41.8801791917474,
longitude: -87.7507109194994,
neighbors: [8, 9],
'source hex_id': '8a2664c81567fff',
'target latitude': 41.7753234651629,
'target longitude': -87.6832077690278,
'target hex_id': '8a2664cd1197fff'
}
];
export const config = {
version: 'v1',
config: {
visState: {
filters: [],
layers: [
{
id: 'iulge5',
type: 'point',
config: {
dataId: 'sample_visit_data',
label: 'point',
columns: {
lat: 'latitude',
lng: 'longitude',
neighbors: 'neighbors'
},
isVisible: true,
visConfig: {
radius: 20,
opacity: 1,
allowHover: true,
showNeighborOnHover: true,
showHighlightColor: false
}
},
visualChannels: {
colorField: {
name: 'count',
type: 'integer'
},
colorScale: 'quantile'
}
}
]
}
}
};
export default data;
================================================
FILE: examples/demo-app/src/data/sample-s2-data.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
export default `s2, value
80858004,0.5979242952642347
8085800c,0.5446256069712141
80858014,0.1187171597109975
8085801c,0.2859146314037557
80858024,0.19549012367504126
80858034,0.3373452974230604
8085803c,0.9218176408795662
80858044,0.23470692356446143
8085804c,0.1580509670379684
80858054,0.15992745628743954
`;
export const dataId = 's2-data';
export const config = {
version: 'v1',
config: {
visState: {
filters: [],
layers: [
{
type: 's2',
config: {
dataId,
label: 'S2 Layer',
color: [241, 92, 23],
columns: {
token: 's2'
},
isVisible: true,
visConfig: {
opacity: 0.8,
strokeColor: [253, 230, 230],
colorRange: {
name: 'Global Warming',
type: 'sequential',
category: 'Uber',
colors: ['#5A1846', '#900C3F', '#C70039', '#E3611C', '#F1920E', '#FFC300']
}
}
},
visualChannels: {
colorField: {
name: ' value',
type: 'real'
},
colorScale: 'quantile'
}
}
]
}
}
};
================================================
FILE: examples/demo-app/src/data/sample-small-geojson.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
export default {
type: 'FeatureCollection',
features: [
{
type: 'Feature',
properties: {OBJECTID: 1, ZIP_CODE: 94107, ID: 94107},
geometry: {
type: 'Polygon',
coordinates: [
[
[-122.401159718585049, 37.782024266952142],
[-122.400374366843309, 37.782644515545172],
[-122.400019020063766, 37.782925153640136],
[-122.399891477967842, 37.783025880124256],
[-122.398930331092998, 37.783784933304034],
[-122.397811613142864, 37.784666586003652],
[-122.396705177550587, 37.785542130425938],
[-122.395895701657864, 37.784896929203114],
[-122.395160622349934, 37.78431101230386],
[-122.394398389309941, 37.783701667981575],
[-122.39343711789931, 37.784459123881106],
[-122.39286959393705, 37.78478280203197],
[-122.39285700396303, 37.784773072758867],
[-122.392216553530702, 37.784278123341721],
[-122.392215026316663, 37.784279352365694],
[-122.392118766536498, 37.784205306785267],
[-122.392032919786118, 37.784168354830349],
[-122.391600764141245, 37.783823989838545],
[-122.391599105853345, 37.783822668268179],
[-122.390856721023212, 37.784410569188324],
[-122.389846392025618, 37.783609176617361],
[-122.389843136047602, 37.783611740842574],
[-122.388306939892615, 37.782385221520776],
[-122.388304301898813, 37.782356717503951],
[-122.388231340039766, 37.782146697467269],
[-122.388106738902522, 37.781931906493995],
[-122.388094863959623, 37.781887241816527],
[-122.387765464889313, 37.78194244138043],
[-122.387754811744713, 37.781795652877442],
[-122.385560654233757, 37.781935833609538],
[-122.385544999019174, 37.781932650370386],
[-122.38553439339303, 37.781923892586839],
[-122.385511671392734, 37.781778670688965],
[-122.384922372713746, 37.781810068903333],
[-122.384901998602373, 37.781825502544642],
[-122.384858074907243, 37.781799422577222],
[-122.384893494062709, 37.781763146995921],
[-122.38491634743859, 37.781777202531266],
[-122.38550727073536, 37.781741658296774],
[-122.385491676395333, 37.781604563077408],
[-122.385493075388183, 37.781591492690396],
[-122.38550321006835, 37.781581716485675],
[-122.385518655734231, 37.781576662678262],
[-122.38762837564704, 37.781450881969413],
[-122.387583140105036, 37.780964719298666],
[-122.387467577483136, 37.780979617487112],
[-122.387479366190874, 37.781103038700273],
[-122.387462086323822, 37.781104002067416],
[-122.387450297298699, 37.780980580858106],
[-122.387337984465276, 37.780987185935416],
[-122.387348026094102, 37.781109948402708],
[-122.387330746223768, 37.781110911750616],
[-122.387320704623349, 37.780988149281868],
[-122.387206644553231, 37.780994095205941],
[-122.387216703416328, 37.781117544403045],
[-122.387199423542512, 37.781118507731705],
[-122.387189364714985, 37.780995058807726],
[-122.387068420460224, 37.78100248851576],
[-122.387080191758074, 37.781125223313062],
[-122.387062911534741, 37.78112618662724],
[-122.387051140611234, 37.78100345182272],
[-122.386937097943829, 37.781010084204837],
[-122.386948869025886, 37.781132819015049],
[-122.386931588799087, 37.78113378231],
[-122.386919818091386, 37.781011047492527],
[-122.386812677010425, 37.7810168822962],
[-122.386824465334769, 37.781140303837503],
[-122.386807185104601, 37.781141267114201],
[-122.386795397161777, 37.781017845840225],
[-122.386676165495402, 37.781024560738594],
[-122.386687953248156, 37.781147982298883],
[-122.386670672668515, 37.781148945561135],
[-122.386658885297223, 37.781025524268173],
[-122.386543112789369, 37.781032183675542],
[-122.386554900668202, 37.781155605243434],
[-122.386537620431014, 37.781156568480647],
[-122.386525832933643, 37.781033147180089],
[-122.386411790166775, 37.781039778779515],
[-122.386423577828609, 37.781163200360375],
[-122.386406297587911, 37.781164163578339],
[-122.386394510307582, 37.7810407422648],
[-122.386282162758775, 37.781045973167615],
[-122.386293984730017, 37.781170767655468],
[-122.386276704139945, 37.78117173085996],
[-122.386264917419695, 37.781048309528096],
[-122.386147415421732, 37.781054996216575],
[-122.386159201954754, 37.781178417834589],
[-122.386141922053085, 37.781179381008279],
[-122.386130135209612, 37.78105595966862],
[-122.386019552249252, 37.781062535536719],
[-122.386031321484509, 37.781185270717479],
[-122.386014040887659, 37.781186233883489],
[-122.386002272033735, 37.781063498970049],
[-122.385879580345062, 37.78107026841095],
[-122.385891367127385, 37.781193690044354],
[-122.385874086872718, 37.781194653184308],
[-122.385862300471871, 37.781071231818238],
[-122.385755176650932, 37.781077752105325],
[-122.385766945797698, 37.781200487306606],
[-122.385749665539848, 37.78120145042832],
[-122.385737896774387, 37.781078715494381],
[-122.385622107018349, 37.781084687547477],
[-122.385633892683231, 37.781208109217374],
[-122.385616612767805, 37.781209072314041],
[-122.385604844221021, 37.781086337366979],
[-122.385487342103474, 37.781093023397624],
[-122.385499110464124, 37.781215758630843],
[-122.38548182985329, 37.781216721718849],
[-122.385470061873946, 37.781093986752957],
[-122.385352559732169, 37.781100672649266],
[-122.38536432752538, 37.781223407901315],
[-122.385347047602892, 37.781224370958491],
[-122.385335279499117, 37.781101635984861],
[-122.385219507099919, 37.781108294087041],
[-122.385231275020445, 37.781231029346657],
[-122.385213994748526, 37.781231992389863],
[-122.385202226517421, 37.781109257408659],
[-122.385086454440369, 37.781115915374649],
[-122.385098222142247, 37.781238650647374],
[-122.385080941520883, 37.781239613676604],
[-122.385069174200339, 37.781116878671227],
[-122.38495511409829, 37.781122822411653],
[-122.384966899006869, 37.781246244141819],
[-122.384949618382038, 37.781247207151821],
[-122.384937851277286, 37.781124472133506],
[-122.384823791153082, 37.781130415746894],
[-122.384835575844662, 37.781253837490027],
[-122.384818295216348, 37.781254800480774],
[-122.384792264836477, 37.780979154238715],
[-122.384809545055035, 37.780978191257269],
[-122.384831743135436, 37.781102819695278],
[-122.384925045670656, 37.781097207947639],
[-122.384923587517477, 37.780971560938383],
[-122.384940867732567, 37.780970597937682],
[-122.384963066031062, 37.781095226351141],
[-122.385056368546813, 37.781089614499592],
[-122.385054910171618, 37.780963967491779],
[-122.385072190383269, 37.780963004471836],
[-122.385094388899816, 37.781087632860746],
[-122.385189421508272, 37.781081993240349],
[-122.385187962562227, 37.780956346239556],
[-122.385205242424405, 37.780955383205644],
[-122.38522744150788, 37.781080011564157],
[-122.385322474096498, 37.781074371836517],
[-122.385321014925523, 37.780948724837195],
[-122.385338295130154, 37.780947761778229],
[-122.385360493742681, 37.78107239012293],
[-122.385457256077231, 37.781066722624757],
[-122.385455797024363, 37.780941075621371],
[-122.38547307722547, 37.78094011254268],
[-122.385495276407823, 37.781064740856642],
[-122.385592038722095, 37.781059073247853],
[-122.385590579095435, 37.780933426251508],
[-122.385607859293003, 37.780932463153057],
[-122.385630058353271, 37.781057091447337],
[-122.38572509122794, 37.781051451389651],
[-122.385723631030388, 37.780925804400319],
[-122.385740911570423, 37.780924841276843],
[-122.385763111197619, 37.781049469540704],
[-122.385849512311808, 37.781044654171389],
[-122.385848051896943, 37.78091900690886],
[-122.385865332440758, 37.780918044041726],
[-122.385887514843574, 37.781041985837916],
[-122.385989466046908, 37.781036234899503],
[-122.385988006094351, 37.780910587902042],
[-122.386005286281474, 37.780909624745334],
[-122.386027486347686, 37.781034252959756],
[-122.38611734695634, 37.781029382050761],
[-122.386115886434652, 37.78090373478566],
[-122.386133166625513, 37.780902771884811],
[-122.386155349124707, 37.781026713636507],
[-122.386250399355106, 37.78102175959976],
[-122.386248938262554, 37.780896112341686],
[-122.386266218795839, 37.780895149415798],
[-122.386288401860739, 37.781019091137082],
[-122.386381721962337, 37.781014164675518],
[-122.386380260647812, 37.780888517418902],
[-122.386397541177601, 37.780887554473743],
[-122.386419741895395, 37.781012182614816],
[-122.386513044542724, 37.781006569605005],
[-122.386511583006197, 37.780880922349844],
[-122.386528863532533, 37.780879959385452],
[-122.386551064468406, 37.781004587501954],
[-122.386646096514042, 37.780998946712984],
[-122.386644635444497, 37.780873299448245],
[-122.386661915621403, 37.780872336469891],
[-122.386684116778227, 37.780996964561524],
[-122.386782608677009, 37.780991268294322],
[-122.386781146684797, 37.780865621042153],
[-122.386798427204084, 37.780864658038261],
[-122.386820628587657, 37.780989286104372],
[-122.386907012122748, 37.780983783515829],
[-122.386905549920243, 37.780858136265046],
[-122.386922830436163, 37.780857173242921],
[-122.386945032026247, 37.780981801285769],
[-122.387038334595715, 37.780976187860247],
[-122.387036872171194, 37.780850540610921],
[-122.387054152683675, 37.780849577569541],
[-122.387076354491839, 37.780974205587825],
[-122.387174846330339, 37.780968508992949],
[-122.387173384021025, 37.7808428617396],
[-122.387190664183962, 37.780841898683754],
[-122.387212865872911, 37.78096652668205],
[-122.387306168748907, 37.78096091303906],
[-122.387304706217577, 37.780835265787175],
[-122.387321986377088, 37.780834302712059],
[-122.387344188284104, 37.780958930685784],
[-122.387435761378228, 37.780953344631229],
[-122.387434316073197, 37.780828383824961],
[-122.387451578437933, 37.780826734292219],
[-122.387473781252041, 37.780951362230645],
[-122.387582651602727, 37.780945499137275],
[-122.38754001837809, 37.780493630652451],
[-122.38744131821305, 37.780491090765793],
[-122.387419058221624, 37.780500374265543],
[-122.387330736209734, 37.780497667864211],
[-122.387308476209526, 37.780506951617653],
[-122.387208063026961, 37.780505125406954],
[-122.387184073602839, 37.780514436820333],
[-122.387081931006932, 37.780512638185321],
[-122.387059670971126, 37.780521921891747],
[-122.386964429936867, 37.780519325963184],
[-122.386942169884378, 37.780528609647433],
[-122.386852118103619, 37.780525930572708],
[-122.386829875474817, 37.780535900680007],
[-122.386736346744712, 37.780532590439464],
[-122.386712374345294, 37.780542588206671],
[-122.386618863049748, 37.780539964317235],
[-122.386594873201545, 37.780549275890777],
[-122.386499632141522, 37.780546679312224],
[-122.386475659366695, 37.780556677311395],
[-122.386383878154234, 37.780554025277233],
[-122.386359888272054, 37.780563336802956],
[-122.386266376955888, 37.780560712359396],
[-122.386242404491071, 37.780570710305611],
[-122.386143703562112, 37.780568168794694],
[-122.386119713984229, 37.780577479991436],
[-122.386022743164474, 37.78057491124985],
[-122.386000500402702, 37.780584880926071],
[-122.385901799477139, 37.780582339761835],
[-122.385877827288269, 37.780592337079185],
[-122.385784298190572, 37.780589026363579],
[-122.38576205573851, 37.780598995989244],
[-122.385668544412525, 37.780596371620753],
[-122.385646283822041, 37.780605654791167],
[-122.385554502585677, 37.780603002386016],
[-122.385532242331863, 37.780612285803919],
[-122.385433541724893, 37.780609743967645],
[-122.385411298534606, 37.78061971381274],
[-122.385310868512505, 37.780617199530866],
[-122.385288625649494, 37.780627169347277],
[-122.385191654786624, 37.780624599647666],
[-122.38516766472523, 37.780633910656128],
[-122.385079342290652, 37.780631202574007],
[-122.385057082314987, 37.780640485896626],
[-122.384960111442751, 37.78063791600659],
[-122.384936138770243, 37.780647913412501],
[-122.384835917442729, 37.780653636341071],
[-122.384842007573795, 37.78075723388941],
[-122.384817825799914, 37.78075899421075],
[-122.38480325384981, 37.78052574104445],
[-122.384827435209161, 37.780523981006105],
[-122.384843799331136, 37.780623294238858],
[-122.384923281326039, 37.780618589884874],
[-122.384925926962097, 37.780518286009212],
[-122.384957841591557, 37.780616663880899],
[-122.385044241908545, 37.780611849106826],
[-122.385045157967028, 37.780511572605498],
[-122.385078784737303, 37.780609236348262],
[-122.385154824277294, 37.780605273878329],
[-122.385157469939188, 37.780504969717121],
[-122.38518938452367, 37.780603347531915],
[-122.385275768076681, 37.780597846132551],
[-122.385276683130513, 37.780497569640254],
[-122.385310328316436, 37.780595919750695],
[-122.385398458680143, 37.78059107677575],
[-122.385399356494702, 37.780490114106904],
[-122.385433018927529, 37.78058915090709],
[-122.385519402086118, 37.780583648785594],
[-122.385520317170744, 37.78048337283478],
[-122.385553962326881, 37.780581722881479],
[-122.385633443879414, 37.780577017779677],
[-122.385634358810009, 37.780476741827854],
[-122.385666274013943, 37.780575119514069],
[-122.385749215060514, 37.780570359001402],
[-122.385750112750941, 37.780469396598548],
[-122.385783775282164, 37.780568432755352],
[-122.385864986912736, 37.780563700098369],
[-122.385865884092837, 37.780462737425502],
[-122.38589954712829, 37.780561773818384],
[-122.385987659981154, 37.780556243958578],
[-122.385988556648442, 37.780455281290152],
[-122.386022220190043, 37.78055431764264],
[-122.386106890951012, 37.780549529481313],
[-122.386107787802118, 37.780448566806321],
[-122.386141451153719, 37.780547603130415],
[-122.386229563971753, 37.780542073089819],
[-122.386232190406915, 37.780441082739081],
[-122.386264124167781, 37.780540146702961],
[-122.386347065143937, 37.780535386044313],
[-122.386349691419113, 37.78043439569084],
[-122.386381625333826, 37.780533459623001],
[-122.386462836549086, 37.780528726834362],
[-122.386465444877402, 37.780427049764754],
[-122.386497396725886, 37.780526800104532],
[-122.386582067431817, 37.780522011876563],
[-122.386584675942643, 37.78042033479867],
[-122.386616627602407, 37.780520085111789],
[-122.386699551102055, 37.78051463803542],
[-122.386702159451801, 37.78041296095477],
[-122.386734111266165, 37.780512711236199],
[-122.386817052181556, 37.780507950246935],
[-122.386817930281353, 37.780406301126988],
[-122.386851612353468, 37.780506023962438],
[-122.386929363990731, 37.7805013456708],
[-122.386930242282716, 37.780399696544364],
[-122.386963924156646, 37.780499419353383],
[-122.387046865035501, 37.780494657927875],
[-122.387047743173568, 37.78039300907502],
[-122.387081425188285, 37.780492731301436],
[-122.387171267622861, 37.780487172869918],
[-122.387173875339855, 37.780385496327504],
[-122.387205827768923, 37.780485246207022],
[-122.387295687629134, 37.780480374124949],
[-122.387296547982558, 37.780378038825731],
[-122.387330247768816, 37.780478447425573],
[-122.387406269602806, 37.780473796784797],
[-122.38740712980379, 37.780371461484656],
[-122.38744082973659, 37.78047187005302],
[-122.387527230063114, 37.780467053179258],
[-122.38749949992625, 37.780056836734332],
[-122.387400782538194, 37.780053609825671],
[-122.387378540131436, 37.780063580311925],
[-122.387290201196578, 37.780060187435744],
[-122.387267941315415, 37.780069470907662],
[-122.387167511635454, 37.780066958487033],
[-122.387143539437361, 37.780076956068172],
[-122.387041380009435, 37.780074471228168],
[-122.387019120092901, 37.780083754653084],
[-122.386922167327057, 37.780081873095298],
[-122.386901619695664, 37.780090442368873],
[-122.386811551008179, 37.78008707681861],
[-122.386787578762636, 37.780097074601919],
[-122.386695780329632, 37.780093736646045],
[-122.386671790289242, 37.780103048241536],
[-122.386578279887487, 37.780100424039603],
[-122.386554289830215, 37.78010973561117],
[-122.386459049681108, 37.780107138994076],
[-122.386435059945711, 37.780116450261254],
[-122.386343278946669, 37.780113798749966],
[-122.386319288841676, 37.780123109724549],
[-122.386225778441045, 37.780120485792217],
[-122.386201788319156, 37.780129796742877],
[-122.38610135893272, 37.780127283134078],
[-122.386079098889809, 37.780136566656026],
[-122.385982128640109, 37.780133997606264],
[-122.38595813883623, 37.780143308776367],
[-122.385859438837869, 37.78014076729638],
[-122.385837196191162, 37.780150737217127],
[-122.385743667990269, 37.780147426188911],
[-122.385719678159148, 37.780156737585067],
[-122.385627896776001, 37.780154084973319],
[-122.385603907274145, 37.780163396340377],
[-122.385513855977493, 37.78016071596884],
[-122.385489865760334, 37.780170027049152],
[-122.385392895494292, 37.780167457789418],
[-122.385368905944745, 37.780176768559457],
[-122.385270205929046, 37.780174226860836],
[-122.385246216015972, 37.78018353761145],
[-122.385150975133058, 37.78018094022346],
[-122.385126985555786, 37.780190251218855],
[-122.385038663996198, 37.78018754310051],
[-122.385014674056748, 37.780196854078561],
[-122.384919433510831, 37.780194256498035],
[-122.38489544320835, 37.780203567457356],
[-122.384795222823172, 37.780209290346271],
[-122.384801312515108, 37.780312887910483],
[-122.384777113810173, 37.780313961773459],
[-122.384762559495741, 37.780081395028191],
[-122.384786741057312, 37.780079634992532],
[-122.384803105027004, 37.780178948238863],
[-122.384882586203048, 37.780174243917422],
[-122.384885231532309, 37.780073940040232],
[-122.384917146262893, 37.780172317925249],
[-122.385001816666616, 37.780167530831704],
[-122.385004462173583, 37.780067226671626],
[-122.385036376713245, 37.780165604530019],
[-122.38511414553922, 37.780161614154224],
[-122.385116790908242, 37.780061310540667],
[-122.385148705594133, 37.780159688368748],
[-122.385233375608649, 37.780154900565314],
[-122.385236021162356, 37.780054596943422],
[-122.385267935657353, 37.780152974744887],
[-122.385356065837257, 37.780148131521123],
[-122.385358710872126, 37.780047827627314],
[-122.385390625872631, 37.780146205390146],
[-122.385477025953321, 37.780141390018422],
[-122.385479653051561, 37.780040399682747],
[-122.385511585982442, 37.780139463852002],
[-122.385591067071402, 37.78013475905297],
[-122.385593711788431, 37.78003445515364],
[-122.38562562709447, 37.78013283285312],
[-122.385706855349099, 37.780128787029341],
[-122.385709482473402, 37.780027796408206],
[-122.385741415359448, 37.780126860520987],
[-122.385824355914565, 37.780122100504215],
[-122.385825252791648, 37.780021137554606],
[-122.38585891591876, 37.780120173961421],
[-122.385945315592835, 37.780115358252047],
[-122.385947942745361, 37.780014367894388],
[-122.38597987560469, 37.780113432222926],
[-122.386066275948011, 37.78010861613928],
[-122.38606717251001, 37.780007653736739],
[-122.38610083595357, 37.78010669007471],
[-122.386188965678286, 37.780101846233919],
[-122.386191574380462, 37.780000169711762],
[-122.386223525670573, 37.780099919858799],
[-122.386306466157762, 37.780095159228338],
[-122.386309092126623, 37.77999416887333],
[-122.386341026143853, 37.780093232818778],
[-122.386422253963318, 37.780089186233084],
[-122.386424863030612, 37.77998750941989],
[-122.386456813943639, 37.780087259789596],
[-122.386541484497073, 37.780082471584841],
[-122.386544092702067, 37.77998079450537],
[-122.386576044464221, 37.780080544831833],
[-122.386658984914163, 37.780075784227932],
[-122.386661592958049, 37.779974107145748],
[-122.386693544875143, 37.780073857440478],
[-122.386776485303088, 37.780069096479352],
[-122.386777363799169, 37.779967447346195],
[-122.386809315183925, 37.780067197895306],
[-122.386888813892412, 37.780063178385696],
[-122.386889674448653, 37.77996084281277],
[-122.38692337384856, 37.780061251805442],
[-122.387006314247685, 37.780056490682639],
[-122.387007174648929, 37.779954155383322],
[-122.38704087419768, 37.780054564067953],
[-122.387130733547679, 37.78004969211122],
[-122.387133323862429, 37.779947329117419],
[-122.38716529349125, 37.780047765460061],
[-122.387255152824864, 37.780042893408485],
[-122.387256012876136, 37.779940557832525],
[-122.387289712762055, 37.78004096672084],
[-122.387365734157797, 37.780036316380411],
[-122.387366594049666, 37.779933980528931],
[-122.387400294082084, 37.78003438938579],
[-122.387486693563403, 37.780029572821469],
[-122.387461810378028, 37.779663260524117],
[-122.387378661112308, 37.779659784635669],
[-122.387356418813553, 37.779669754843859],
[-122.387276728664503, 37.779666223506673],
[-122.387252739526915, 37.779675535209975],
[-122.387173049376599, 37.779672003802716],
[-122.387150789943092, 37.779681287247612],
[-122.387067640671745, 37.779677811139862],
[-122.387043668592767, 37.779687808975972],
[-122.386969150543408, 37.779683507921064],
[-122.386945178103403, 37.779693505742671],
[-122.386868930320873, 37.779689232309579],
[-122.386844958564382, 37.779699230374298],
[-122.386765268401049, 37.779695698416859],
[-122.386741279182857, 37.779705009741512],
[-122.386659859644624, 37.77970150593859],
[-122.386635887496141, 37.77971150341719],
[-122.386556180245535, 37.77970728514304],
[-122.386533937822136, 37.779717255195997],
[-122.386452518273302, 37.779713750975354],
[-122.386428528664126, 37.77972306224185],
[-122.38635402805015, 37.779719447242712],
[-122.386331768168034, 37.779728731087609],
[-122.386245159413448, 37.779725309752138],
[-122.386222916935935, 37.779735279471808],
[-122.386151858355305, 37.779730922551266],
[-122.386127868702886, 37.77974023375657],
[-122.386048178882604, 37.779736701583559],
[-122.386025936036276, 37.779746671546171],
[-122.385946246559868, 37.779743139298724],
[-122.385922256538748, 37.779752450742315],
[-122.385842567054112, 37.779748918150233],
[-122.385818577011165, 37.779758229298103],
[-122.385742346663463, 37.779754641855682],
[-122.385718357291026, 37.779763952697529],
[-122.385635207994184, 37.779760475579685],
[-122.385611235349785, 37.779770473129936],
[-122.385528086050684, 37.779766995936541],
[-122.385504096654358, 37.779776307009364],
[-122.38542267708938, 37.779772802077623],
[-122.385400434501221, 37.779782772191204],
[-122.385319014927063, 37.779779266913316],
[-122.385296754890703, 37.779788550288139],
[-122.385225696313427, 37.779784192809487],
[-122.385201723952207, 37.779794190270913],
[-122.385120304035951, 37.779790685135936],
[-122.38509804431726, 37.779799968467685],
[-122.385020084218212, 37.779796407941809],
[-122.38499609406378, 37.779805719196837],
[-122.384916404566042, 37.779802185978852],
[-122.384894161901101, 37.779812155996879],
[-122.38480257260197, 37.779817053634027],
[-122.384809835241697, 37.779898657585051],
[-122.384782194261888, 37.779900472932383],
[-122.384761383067243, 37.779694102231538],
[-122.384789023963819, 37.779692286614427],
[-122.384808725038937, 37.779786739726958],
[-122.384879557453601, 37.779782173395887],
[-122.384880595342565, 37.779686702548538],
[-122.384914117331078, 37.779780247404453],
[-122.384983237080689, 37.779776395391224],
[-122.384984274829336, 37.77968092426827],
[-122.385017796952795, 37.779774469369393],
[-122.385085186616962, 37.779770645233363],
[-122.38508622457347, 37.779675173829325],
[-122.385119746476775, 37.779768718907071],
[-122.385188848787607, 37.77976418060323],
[-122.385189886610789, 37.779668709198148],
[-122.385223408641721, 37.779762254246563],
[-122.385283897452879, 37.779759226795328],
[-122.385284934821826, 37.779663755944007],
[-122.385318457309211, 37.779757300685375],
[-122.385385847281285, 37.779753476097383],
[-122.385386866740049, 37.779657318531406],
[-122.3854203897058, 37.77975086351293],
[-122.385491239136826, 37.779746983539091],
[-122.385492276232114, 37.779651512411178],
[-122.385525798982087, 37.779745057368359],
[-122.385598378143868, 37.779741149940357],
[-122.385599415094418, 37.779645678536831],
[-122.385632937976666, 37.779739223463643],
[-122.385705499691042, 37.779734629250548],
[-122.385706536510781, 37.779639158120546],
[-122.385740059531955, 37.779732703291586],
[-122.385805719718547, 37.779728905856508],
[-122.385806756416358, 37.779633435000086],
[-122.385840279547224, 37.779726979593605],
[-122.385909399199221, 37.7797231270374],
[-122.385910435756728, 37.779627655905408],
[-122.385943959022555, 37.779721200744085],
[-122.386013061231836, 37.779716661682606],
[-122.386014097656016, 37.779621190549562],
[-122.386047621049443, 37.779714735358894],
[-122.38611501060636, 37.779710910634236],
[-122.386116047238417, 37.779615439220123],
[-122.386149570411703, 37.779708984006099],
[-122.386208311974158, 37.779705297309562],
[-122.386211077885747, 37.779609798774842],
[-122.386242871788397, 37.779703371203219],
[-122.386317180591391, 37.779699435108718],
[-122.38631821662446, 37.77960396397274],
[-122.386351740393124, 37.779697508695882],
[-122.386415670790853, 37.779693738872112],
[-122.386416706351284, 37.779598267740703],
[-122.386450230587357, 37.779691812430414],
[-122.386519350181956, 37.779687959791211],
[-122.386520385602097, 37.779592488384218],
[-122.386553892529193, 37.77968534660009],
[-122.386623012105417, 37.779681493625532],
[-122.386624047399195, 37.779586022492111],
[-122.386657571897828, 37.779679567397658],
[-122.386728421189233, 37.779675686405767],
[-122.386729456700351, 37.779580215540342],
[-122.386762980969223, 37.779673759872402],
[-122.386832100523861, 37.779669906775261],
[-122.386833135894662, 37.779574435634252],
[-122.386866660298466, 37.779667980211499],
[-122.386932302936756, 37.779663495979172],
[-122.386933338178679, 37.779568024837168],
[-122.386966862705819, 37.779661569386036],
[-122.387030793048368, 37.779657799503305],
[-122.38704566565184, 37.779562106599087],
[-122.387054991513921, 37.779656725452249],
[-122.387136202059708, 37.779651991644378],
[-122.387139193519673, 37.77956541658935],
[-122.387170761825075, 37.779650065266061],
[-122.387239881329535, 37.779646211655297],
[-122.387241125495137, 37.779558977842669],
[-122.387274441082525, 37.779644284971994],
[-122.387341830851355, 37.779640459266005],
[-122.387344804633926, 37.779553198035785],
[-122.387376373154481, 37.7796378461085],
[-122.387448951768221, 37.779633937546841],
[-122.387428243590108, 37.779295714050406],
[-122.387339905566151, 37.779292321211003],
[-122.38731766337223, 37.779302291412563],
[-122.387236244241279, 37.77929878773282],
[-122.387212254525394, 37.779308099439604],
[-122.387132565463105, 37.779304567993648],
[-122.387108575718415, 37.779313879130164],
[-122.387028886654846, 37.779310347614164],
[-122.387004914343294, 37.779320345448582],
[-122.386932126735232, 37.779316016678415],
[-122.386908154408829, 37.779326014493151],
[-122.386828447902374, 37.779321796397241],
[-122.386804475567118, 37.779331794465456],
[-122.386726516216612, 37.779328234787421],
[-122.3867025267663, 37.779337546110341],
[-122.386624566736728, 37.779333986925117],
[-122.386600577610722, 37.779343297947158],
[-122.386520887847865, 37.7793397660989],
[-122.386496916150335, 37.779349763818921],
[-122.386417208949837, 37.779345545456096],
[-122.386393237236504, 37.77935554315502],
[-122.386318719558147, 37.779351241688801],
[-122.386296477216476, 37.779361211972173],
[-122.386211598617734, 37.779357762936172],
[-122.386187609086349, 37.779367073879669],
[-122.386113108495195, 37.779363458733613],
[-122.386089119302554, 37.779372769926113],
[-122.386011159604379, 37.779369210055243],
[-122.385987187482783, 37.779379207677103],
[-122.385909210351812, 37.779374961294259],
[-122.385885237875669, 37.779384959175481],
[-122.385802088988314, 37.779381481900515],
[-122.385778099750866, 37.779390793029705],
[-122.385698409983121, 37.779387260900187],
[-122.385676150450635, 37.779396544067176],
[-122.385598190747288, 37.779392983923266],
[-122.385574218216505, 37.779402981466639],
[-122.3854945117032, 37.779398762469064],
[-122.3854705391566, 37.779408759991362],
[-122.38538912034204, 37.779405255030689],
[-122.385366860087544, 37.779414538699463],
[-122.385285441271535, 37.779411033667223],
[-122.385261469031803, 37.779421030866885],
[-122.385190410808178, 37.779416673366669],
[-122.38516642079081, 37.779425984382435],
[-122.385088461426918, 37.77942242389598],
[-122.38506448916398, 37.779432421330149],
[-122.384984782302112, 37.779428201993547],
[-122.384960810030293, 37.779438199681202],
[-122.384881120582591, 37.779434666444651],
[-122.38485713086655, 37.779443977391921],
[-122.384765559446308, 37.779449561719943],
[-122.384771214222269, 37.779535998445006],
[-122.384747015071127, 37.779537072038458],
[-122.38473308847739, 37.779329217537743],
[-122.384757287215081, 37.779328143952647],
[-122.384773494195869, 37.779421279213679],
[-122.384846073080865, 37.779417372248531],
[-122.384848858140316, 37.779322559636441],
[-122.384880632782526, 37.779415445992221],
[-122.384949752194402, 37.77941159399834],
[-122.384952537135234, 37.779316781932884],
[-122.384984294475274, 37.779408981541515],
[-122.385051684148522, 37.779405157144254],
[-122.385056216100068, 37.779311003588973],
[-122.385086243853095, 37.779403231376833],
[-122.385155363235981, 37.779399378987847],
[-122.385158147906921, 37.779304566642743],
[-122.38518992292822, 37.779397452915447],
[-122.385248663600038, 37.779393766707848],
[-122.385253195301217, 37.779299613144822],
[-122.385283223287274, 37.779391840608099],
[-122.385354072735922, 37.779387960985474],
[-122.385358586870339, 37.779293120699045],
[-122.385388632410709, 37.779386034580241],
[-122.385459481495417, 37.779382154625232],
[-122.385462265784483, 37.779287342547207],
[-122.385494023751633, 37.779379542293618],
[-122.385561413364954, 37.77937571733046],
[-122.385565944668585, 37.779281563755077],
[-122.385595973035649, 37.779373791139029],
[-122.385663362299539, 37.779369966397688],
[-122.385667876044934, 37.779275126373676],
[-122.385697921964919, 37.779368040176379],
[-122.385765311917211, 37.779364215640285],
[-122.385769825525102, 37.779269375337698],
[-122.385799871570299, 37.779362289114509],
[-122.385874162638899, 37.779357667403531],
[-122.38587696382136, 37.779263541485342],
[-122.385908722286104, 37.779355740845865],
[-122.385976111863471, 37.779351915920223],
[-122.385978912570593, 37.779257790005062],
[-122.386010671519301, 37.779349989881837],
[-122.386078060733283, 37.77934616462889],
[-122.386080844570401, 37.779251352255542],
[-122.386112620376821, 37.779344238286029],
[-122.386174820757347, 37.779340496265526],
[-122.386179333847906, 37.779245656221427],
[-122.386209380395755, 37.779338569894314],
[-122.386283671761092, 37.779333947919731],
[-122.386288202139696, 37.779239794041324],
[-122.386318231386639, 37.779332021242034],
[-122.386380431746588, 37.779328279113052],
[-122.386384962016137, 37.779234125779993],
[-122.386414991380946, 37.77932635295614],
[-122.38648584000218, 37.779322472115325],
[-122.386488640754166, 37.779228346176467],
[-122.386520399624118, 37.779320545652922],
[-122.386589518862621, 37.779316692697755],
[-122.386592302045827, 37.779221880311852],
[-122.386624078479215, 37.779314766204962],
[-122.386691468335471, 37.779310941139499],
[-122.386694251035379, 37.779216128482069],
[-122.386726027939744, 37.77930901434226],
[-122.386793400000514, 37.779304502779596],
[-122.38679620001615, 37.779210376838677],
[-122.386827959599159, 37.779302575952464],
[-122.386897078804992, 37.779298722816996],
[-122.386901608410881, 37.779204569189005],
[-122.386931638412193, 37.779296796508632],
[-122.386992108980877, 37.779293081467337],
[-122.386996638465945, 37.779198927835616],
[-122.387026668576013, 37.779291154856551],
[-122.387095787760913, 37.779287301604562],
[-122.38710029967234, 37.779192461524332],
[-122.387130347350677, 37.779285374963401],
[-122.387199466531811, 37.779281521925199],
[-122.387204309717603, 37.779199724010219],
[-122.387234026109212, 37.779279594979052],
[-122.387304857552181, 37.779275027470717],
[-122.387309700628478, 37.779193229825893],
[-122.387339417137795, 37.779273101042833],
[-122.387415455175415, 37.779269136564935],
[-122.387394991136247, 37.778940523542531],
[-122.387315302113649, 37.778936992225411],
[-122.387291312863496, 37.778946303668732],
[-122.387218525259328, 37.778941975080627],
[-122.38719628281504, 37.778951945540015],
[-122.38712349555685, 37.77894761688772],
[-122.387099505926273, 37.778956928022971],
[-122.387025006394012, 37.778953313441747],
[-122.387002746472433, 37.778962597145551],
[-122.386929976655324, 37.778958954818265],
[-122.386905987003843, 37.778968266188713],
[-122.386836658833175, 37.778963881995679],
[-122.386812687306417, 37.778973880055133],
[-122.386736440270226, 37.778969606535817],
[-122.386712468022296, 37.778979604036806],
[-122.386637951048542, 37.77897530276654],
[-122.386613979138446, 37.778985300516517],
[-122.386549822682738, 37.778980146669305],
[-122.386527580483204, 37.778990116996944],
[-122.386449603383866, 37.778985870976705],
[-122.386425631783965, 37.778995868408273],
[-122.386356303615884, 37.778991483932835],
[-122.386332313881979, 37.779000795186512],
[-122.386256084279836, 37.778997207801154],
[-122.386233824940902, 37.779006491348653],
[-122.386164496774228, 37.779002106760423],
[-122.386140524798748, 37.779012104688697],
[-122.386067737197138, 37.779007775390234],
[-122.386043765192852, 37.779017772749661],
[-122.385962346433857, 37.779014268190103],
[-122.385938356643209, 37.779023579363574],
[-122.385865569388116, 37.779019249934791],
[-122.385841597013936, 37.779029247533202],
[-122.385768809758915, 37.779024918044691],
[-122.385744837376848, 37.779034915898023],
[-122.385675509212518, 37.779030531022293],
[-122.385651520065593, 37.779039841851741],
[-122.385578749547165, 37.77903619870164],
[-122.385554760393234, 37.779045509785973],
[-122.385481989874023, 37.779041866576151],
[-122.385458000713072, 37.779051177915363],
[-122.385385212767062, 37.779046848201126],
[-122.385361223578457, 37.779056158971507],
[-122.385286723685297, 37.779052543297539],
[-122.385262734143524, 37.779061854327978],
[-122.385195135701593, 37.77905744150933],
[-122.385171163224882, 37.779067438971381],
[-122.385094916187072, 37.779063164390635],
[-122.385070944393846, 37.779073162095791],
[-122.385001616233609, 37.779068776823863],
[-122.38497935636353, 37.77907805986537],
[-122.384906586186588, 37.779074416294911],
[-122.384884326309916, 37.779083699593059],
[-122.384796197708141, 37.779088542459625],
[-122.384801451464668, 37.77915919068996],
[-122.384780712232896, 37.779160209251955],
[-122.384765734942761, 37.778979153747279],
[-122.384786456703722, 37.778977448743071],
[-122.384804149136215, 37.779060946405302],
[-122.384871538841949, 37.779057121830682],
[-122.384874585188271, 37.778972606432866],
[-122.384906098382288, 37.779055195841352],
[-122.384966568862538, 37.779051482113282],
[-122.384969632515677, 37.778967652883104],
[-122.385001128397789, 37.779049556096091],
[-122.385058156860921, 37.779046584353601],
[-122.385061202980566, 37.778962068401654],
[-122.385092716384577, 37.779044658035005],
[-122.385158376003019, 37.779040861234485],
[-122.38516315173905, 37.77895631817001],
[-122.385192918111116, 37.779038248990936],
[-122.385249946543951, 37.779035276606521],
[-122.385253009876607, 37.778951447368748],
[-122.385284506064338, 37.779033350506261],
[-122.385350165317007, 37.779029553604488],
[-122.385353228882295, 37.778945724358508],
[-122.385382995459778, 37.779027655131593],
[-122.385445195618914, 37.779023913770359],
[-122.385448258723784, 37.778940084252753],
[-122.385479755121978, 37.779021987338304],
[-122.385541972691954, 37.779018932096108],
[-122.385545018273902, 37.778934416680386],
[-122.385576532197149, 37.779017005910269],
[-122.385638732330676, 37.779013264172356],
[-122.385641777795314, 37.77892874847948],
[-122.385673291830699, 37.779011337958153],
[-122.38573203252615, 37.779007651778535],
[-122.385735094960694, 37.77892382225879],
[-122.385766592014193, 37.779005725262394],
[-122.385828792128677, 37.779001983424223],
[-122.385831854467739, 37.778918154451013],
[-122.385863351625531, 37.779000057428874],
[-122.385925569154423, 37.778997001709705],
[-122.385930344007448, 37.778912458338894],
[-122.385960128639468, 37.778995075411409],
[-122.386030959889439, 37.778990508668088],
[-122.386034022338819, 37.778906679409381],
[-122.386065519368728, 37.778988582338918],
[-122.386127736893627, 37.778985527062204],
[-122.386132511508848, 37.778900983408484],
[-122.386162278927955, 37.778982913985502],
[-122.386221036657432, 37.7789799137378],
[-122.386224081811065, 37.778895398298431],
[-122.386255596133822, 37.778977987627471],
[-122.386319526256145, 37.778974217575232],
[-122.386322588033238, 37.778890388314295],
[-122.38635408572037, 37.778972291161459],
[-122.386412826344156, 37.778968604368089],
[-122.386417618076294, 37.778884747421706],
[-122.386447385803351, 37.778966677926974],
[-122.386514775006972, 37.77896285296778],
[-122.386517836902243, 37.778879023421496],
[-122.386549334453889, 37.778960926222204],
[-122.386602903347566, 37.778958008816609],
[-122.386605964804218, 37.778874179548069],
[-122.386637462796912, 37.778956082319787],
[-122.386699662825961, 37.778952340022151],
[-122.386702724173148, 37.778868510751018],
[-122.386734222270135, 37.778950413496958],
[-122.386799881728336, 37.778946616056871],
[-122.386804673015121, 37.778862758819848],
[-122.386834441160303, 37.778944689227728],
[-122.386894928894066, 37.778941660955091],
[-122.38689797293344, 37.778857145503274],
[-122.386929488335198, 37.77893973464726],
[-122.386989958613299, 37.77893601960681],
[-122.386993002191389, 37.778851503883409],
[-122.387024518042367, 37.778934092996543],
[-122.387086718033501, 37.778930350494704],
[-122.387091509002346, 37.778846493520362],
[-122.387121277457396, 37.778928423856051],
[-122.387183477445888, 37.778924681577777],
[-122.387186764992791, 37.77884977579707],
[-122.387218036857675, 37.778922754636191],
[-122.387280254273051, 37.778919698476713],
[-122.387283524285621, 37.778844106523373],
[-122.387314813687013, 37.77891777178133],
[-122.387382202448663, 37.778913946057301],
[-122.387364166474967, 37.778612763090031],
[-122.387286207520319, 37.778609204336291],
[-122.387262218365407, 37.778618515499687],
[-122.387185989110648, 37.778614928715285],
[-122.387161999948319, 37.778624240132871],
[-122.387092672083611, 37.778619856090089],
[-122.387070429718904, 37.778629826526299],
[-122.386994183021031, 37.778625553173391],
[-122.386971941319302, 37.778635523030793],
[-122.386900883746804, 37.778631166560793],
[-122.386876911637231, 37.778641164370391],
[-122.38679893557611, 37.778636918569845],
[-122.386774963796881, 37.778646916353182],
[-122.386707365642749, 37.778642504401184],
[-122.386683376072511, 37.77865181600145],
[-122.386614065647606, 37.778648118121843],
[-122.386590076741811, 37.778657429142889],
[-122.386510387715276, 37.778653897287107],
[-122.386486398801594, 37.778663208561632],
[-122.386417070940411, 37.778658824121642],
[-122.386393098756784, 37.778668821832838],
[-122.38631686949239, 37.77866523448656],
[-122.386292880557747, 37.778674545996267],
[-122.38622009293212, 37.778670216797138],
[-122.386197851113138, 37.778680186508431],
[-122.386125063833461, 37.778675857245105],
[-122.38610282131512, 37.778685827224102],
[-122.386028304671399, 37.778681525568288],
[-122.38600433277405, 37.778691523194873],
[-122.385931545494543, 37.77868719381209],
[-122.385909285516078, 37.778696477309893],
[-122.385834786309914, 37.778692862251056],
[-122.385810796946046, 37.778702173118987],
[-122.385741486517588, 37.778698474726497],
[-122.385717497147184, 37.778707785850045],
[-122.385642980157812, 37.778703483956278],
[-122.385619007862559, 37.778713481784578],
[-122.385549680005639, 37.778709096834618],
[-122.385525708373962, 37.778719094083733],
[-122.385451191384348, 37.778714792068747],
[-122.385428949109837, 37.778724761915029],
[-122.385354432120124, 37.778720459838901],
[-122.385330442694098, 37.778729770883643],
[-122.385257672841163, 37.778726127529652],
[-122.385235413119702, 37.778735411169237],
[-122.385147302363819, 37.778740940194126],
[-122.385154355852308, 37.778814307082541],
[-122.385130156934849, 37.778815380480168],
[-122.385113449499144, 37.778634352661491],
[-122.385137630588289, 37.778632592828004],
[-122.385155236200447, 37.778712657669637],
[-122.385222625586081, 37.778708833443275],
[-122.385225758626859, 37.778627749705855],
[-122.38525718494833, 37.778706907076334],
[-122.38531938483824, 37.778703165506691],
[-122.385322517780125, 37.778622082041188],
[-122.385352214498553, 37.778701267322347],
[-122.385416144082598, 37.778697497765265],
[-122.385419276918626, 37.778616414297126],
[-122.385450703441506, 37.77869557161619],
[-122.38551290331219, 37.778691829944421],
[-122.385517765757882, 37.778610719084014],
[-122.38554746266594, 37.778689903767003],
[-122.385606220534413, 37.778686903820002],
[-122.385611082870923, 37.77860579268107],
[-122.385640779890451, 37.778684977889775],
[-122.385704709445832, 37.778681208176224],
[-122.385707841966195, 37.778600124700183],
[-122.385739268789678, 37.778679281942566],
[-122.385798008866331, 37.778675595460832],
[-122.385801141637501, 37.77859451225126],
[-122.385832568205146, 37.778673669199819],
[-122.385896498100962, 37.77866989992588],
[-122.385899630058546, 37.778588816175542],
[-122.385931057427598, 37.778667973361443],
[-122.385991527195401, 37.778664259112972],
[-122.385994659747908, 37.778583175623524],
[-122.386026086530904, 37.778662333069811],
[-122.386090016393183, 37.778658563141803],
[-122.386093148146045, 37.778577479660726],
[-122.386124575716508, 37.778656636795191],
[-122.386185062898718, 37.778653608892128],
[-122.386202015472293, 37.778571617834082],
[-122.386209244307707, 37.778651848558759],
[-122.386280092656236, 37.778647968384718],
[-122.386284954247373, 37.778566856942867],
[-122.386314651962735, 37.778646041707809],
[-122.386380311166334, 37.778642244226567],
[-122.386385172654656, 37.778561133055092],
[-122.386414870481516, 37.778640318069463],
[-122.386473610832795, 37.778636630970986],
[-122.386476742511945, 37.778555547473879],
[-122.386508170135954, 37.778634704511973],
[-122.386577288736902, 37.778630851563484],
[-122.386580420309613, 37.778549768338095],
[-122.386611848034704, 37.778628925074045],
[-122.386670588381151, 37.778625238426613],
[-122.386673719491867, 37.778544154655052],
[-122.386705147666916, 37.778623311635243],
[-122.386762158289017, 37.778619652349228],
[-122.386765307091096, 37.778539255288756],
[-122.386796717583763, 37.778617726080171],
[-122.386864106438878, 37.778613900371958],
[-122.386867237344845, 37.778532816869664],
[-122.386898665721333, 37.778611973798455],
[-122.386959152842579, 37.77860894577281],
[-122.386962284329485, 37.778527861982276],
[-122.38699369467254, 37.778606332452348],
[-122.387057641885832, 37.778603248718746],
[-122.387060772580114, 37.778522165211164],
[-122.387092183716675, 37.778600635643997],
[-122.38715094145212, 37.778597634927166],
[-122.387154334023649, 37.778526848079068],
[-122.387183771011991, 37.778595735958248],
[-122.38724942978078, 37.778591937998534],
[-122.387254551963991, 37.778521123457843],
[-122.387283989043027, 37.778590011312069],
[-122.387351378207768, 37.778586185868939],
[-122.387340432224974, 37.778359741993853],
[-122.385336224880277, 37.778480397809368],
[-122.385292215885698, 37.77845088576418],
[-122.385332752982109, 37.778411780987071],
[-122.385371486072913, 37.77843794377425],
[-122.387505436887736, 37.778315896876499],
[-122.387507690304943, 37.778336462786434],
[-122.387691125877438, 37.77833695908997],
[-122.387623881872372, 37.778210305157842],
[-122.390410335866818, 37.777142437885963],
[-122.390374260520773, 37.777113759158638],
[-122.390348522259259, 37.777093298197975],
[-122.389857561580598, 37.776499598895249],
[-122.389810930692391, 37.776503093591124],
[-122.389821814335647, 37.776590819837281],
[-122.38767762612953, 37.776716506820485],
[-122.387616143310936, 37.776748393866363],
[-122.387584974466847, 37.776747519757691],
[-122.387567625478937, 37.776745737093393],
[-122.387552006163176, 37.776743927007061],
[-122.387536369402838, 37.776741430474004],
[-122.387505026105131, 37.776733691622944],
[-122.387489337013818, 37.776729135749626],
[-122.387475360143554, 37.776723865736592],
[-122.387461365830632, 37.776717909277224],
[-122.387447354082425, 37.776711266646082],
[-122.387419295684069, 37.77669660766567],
[-122.387406978711525, 37.776688564173618],
[-122.387394643958672, 37.776679834515676],
[-122.387373399569938, 37.776660946088832],
[-122.387362760285328, 37.776650815560998],
[-122.38735385031967, 37.776640657346583],
[-122.387344922566982, 37.776629812692306],
[-122.387335978065309, 37.776618281581548],
[-122.387328762881694, 37.776606722784834],
[-122.387323277015341, 37.77659513630249],
[-122.387316044392662, 37.776582891060237],
[-122.387312271446064, 37.776570590705511],
[-122.387306768480713, 37.776558317497482],
[-122.387304707400645, 37.776545302738185],
[-122.387302663771393, 37.776532974698164],
[-122.387298541607819, 37.776506944904682],
[-122.387299939508821, 37.776493875044565],
[-122.387299608083069, 37.776480832320061],
[-122.387311076202096, 37.776319268586136],
[-122.387103587414643, 37.776325337046984],
[-122.387082386717438, 37.776103864569507],
[-122.385027425864848, 37.776335891081246],
[-122.385011788936296, 37.776333394493314],
[-122.384999507467228, 37.776326723359297],
[-122.384988868215274, 37.776316592896777],
[-122.385025875302759, 37.776274797468226],
[-122.384827030762366, 37.775394163410851],
[-122.384880527469605, 37.775388501004997],
[-122.384877317104468, 37.775330181090084],
[-122.386995863440688, 37.775082030997162],
[-122.386923061819843, 37.774327799469994],
[-122.381813822024597, 37.774615486663201],
[-122.381456516831207, 37.771917559332238],
[-122.384671101595274, 37.773340605158566],
[-122.384690336061794, 37.773348538332996],
[-122.384706059111224, 37.773354467747083],
[-122.38472349432422, 37.773359682786399],
[-122.384740912113955, 37.773364211103086],
[-122.384758312493929, 37.773368053246259],
[-122.384775695456668, 37.773371208941398],
[-122.384793061001673, 37.77337367818847],
[-122.384812120957065, 37.773374747168276],
[-122.384829452003999, 37.773375843238945],
[-122.384848494879705, 37.773376225487283],
[-122.38486577332894, 37.77337526249628],
[-122.386759568868584, 37.773272861257844],
[-122.386575835242937, 37.772851405934894],
[-122.38657206225551, 37.772839105279289],
[-122.386575190127743, 37.772826007459408],
[-122.386581812023351, 37.772814227444925],
[-122.386593692364443, 37.772805109622055],
[-122.386717419519911, 37.772771540111776],
[-122.386708370613761, 37.772755890279406],
[-122.386704597609267, 37.772743589627844],
[-122.386699094688865, 37.772731316663254],
[-122.386691548686684, 37.772706715359256],
[-122.38668746217553, 37.772682058686371],
[-122.386685401318488, 37.772669044181889],
[-122.386683357538772, 37.772656715579039],
[-122.386682694959006, 37.772630630932561],
[-122.386684111009814, 37.772618246955815],
[-122.386683779716421, 37.772605204495207],
[-122.386685195434609, 37.772592821073083],
[-122.386688340360166, 37.772580409425913],
[-122.386661929793348, 37.772494305123679],
[-122.386659886368264, 37.772481976514491],
[-122.386661302081109, 37.772469592817821],
[-122.38666965348915, 37.772457784842032],
[-122.386681551212874, 37.772449354004202],
[-122.386714186256512, 37.772439903990914],
[-122.386679336788333, 37.772362175448528],
[-122.386644902453284, 37.772368906802633],
[-122.386631976023693, 37.772336837636807],
[-122.386620901217455, 37.772309545906367],
[-122.386592865526183, 37.772227587668034],
[-122.386585249868389, 37.772200240573625],
[-122.386577616780784, 37.772172207033208],
[-122.386570001134302, 37.772144859937534],
[-122.386558193761417, 37.772088737774723],
[-122.386541497954923, 37.771976381892166],
[-122.386539053911875, 37.771948265304715],
[-122.386438565499603, 37.771943006477983],
[-122.386459543589496, 37.771678968587629],
[-122.386414488196351, 37.771676255706971],
[-122.386416883827636, 37.771634327179655],
[-122.386370064064607, 37.77163026961771],
[-122.386370799901215, 37.771591114275026],
[-122.386346586274058, 37.771591501747267],
[-122.386349295737674, 37.771561929239198],
[-122.386373509355195, 37.77156154176641],
[-122.386383018231356, 37.77145906765827],
[-122.386277185313745, 37.771447713434846],
[-122.386286481744634, 37.771404987761201],
[-122.386248187810011, 37.771395986654248],
[-122.386213474980906, 37.771391735029944],
[-122.386175916991888, 37.77134357828146],
[-122.386158586399219, 37.771342482408336],
[-122.386142916299207, 37.771338612516935],
[-122.386128940538697, 37.771333342339254],
[-122.386116624249169, 37.771325298710295],
[-122.38610598590013, 37.771315168059481],
[-122.386097059315517, 37.771304323294956],
[-122.386091556948031, 37.771292050293354],
[-122.386142815223778, 37.771266508342599],
[-122.38608534348306, 37.771183647247369],
[-122.386039082134474, 37.771201555805888],
[-122.386023428808656, 37.771198372355109],
[-122.386011095814837, 37.771189642258307],
[-122.386041843996964, 37.771174042639558],
[-122.38589549059256, 37.770997835524099],
[-122.385920430782591, 37.770821635056869],
[-122.385847920885212, 37.770691630725352],
[-122.385837299399952, 37.770682186505887],
[-122.385823306356514, 37.770676229845748],
[-122.385795755972097, 37.770681477661917],
[-122.3857856231634, 37.770691253905198],
[-122.385782477468226, 37.770703665268918],
[-122.385798079922523, 37.771250048587049],
[-122.385622255652152, 37.772162083932052],
[-122.385554576344688, 37.772154239361129],
[-122.385681891861481, 37.771444190077446],
[-122.385515420224039, 37.771429684819722],
[-122.38546780756441, 37.771530707856108],
[-122.385335917119292, 37.771651620630855],
[-122.385287036807085, 37.771634547559174],
[-122.385642517132254, 37.770847369439849],
[-122.385683664105002, 37.770764304300435],
[-122.385720236601344, 37.770637361956886],
[-122.385724274638122, 37.77059197382043],
[-122.385559320924514, 37.770637189122013],
[-122.383154992189901, 37.769708715839762],
[-122.383375582677616, 37.76933298733065],
[-122.385570199525418, 37.770179656618097],
[-122.385492733315886, 37.769990673321502],
[-122.38547497668678, 37.769836444052352],
[-122.38501929687861, 37.768856908704215],
[-122.384893636964136, 37.768882266758567],
[-122.384787561607197, 37.76865665734794],
[-122.38500549801104, 37.768585873156887],
[-122.385007528170945, 37.768529529274218],
[-122.385037840293677, 37.768496768478933],
[-122.385006697245259, 37.768428594043755],
[-122.38508052413836, 37.768406124957501],
[-122.385042550658142, 37.768341493386622],
[-122.38510771303342, 37.768318476117585],
[-122.385167686616882, 37.76829554179551],
[-122.385149073018809, 37.768175662662372],
[-122.385147029970554, 37.768163334292169],
[-122.385144812710706, 37.768144141461285],
[-122.38470084491486, 37.768171155877575],
[-122.384624005099198, 37.768074869544797],
[-122.383881223535184, 37.768121766230543],
[-122.383842264982363, 37.767745376829602],
[-122.382456893000523, 37.767832748125578],
[-122.382439473722869, 37.767691561099248],
[-122.384901003015941, 37.7675361686969],
[-122.384848518174209, 37.767018283287165],
[-122.384847918040649, 37.767012360130963],
[-122.382854528282635, 37.767138299649837],
[-122.382800567665527, 37.766784124750316],
[-122.385859942984411, 37.766599245791156],
[-122.385894343938588, 37.766523155929399],
[-122.385924379700455, 37.76641142564803],
[-122.385933483994975, 37.766361149056699],
[-122.385914237836445, 37.766284543788501],
[-122.385992644580284, 37.766169979928648],
[-122.386291877422522, 37.765689977677845],
[-122.386372587962043, 37.765598038596792],
[-122.386520103480208, 37.765411635088689],
[-122.386541125110512, 37.765285627921941],
[-122.386469993174757, 37.765277839225583],
[-122.386436744413672, 37.76505861928149],
[-122.386447302231559, 37.764929345689509],
[-122.386483096429387, 37.76490817106005],
[-122.386501478211272, 37.764814482226171],
[-122.386491269379732, 37.764616868735338],
[-122.38644793023208, 37.764613442288407],
[-122.386451155646682, 37.764399819097633],
[-122.386482284438713, 37.7643993208899],
[-122.386481482527714, 37.764367744084808],
[-122.386603169586195, 37.764322532741204],
[-122.386601548243974, 37.76425869323451],
[-122.386585931922852, 37.764256883010674],
[-122.386571940029569, 37.764250926432666],
[-122.38656131971895, 37.764241482262236],
[-122.38655581779787, 37.764229209267128],
[-122.38655550400469, 37.764216853507875],
[-122.386720358990686, 37.764100218114386],
[-122.386739211018067, 37.764025063281011],
[-122.386733691302794, 37.764012103852934],
[-122.38672476584992, 37.764001259116526],
[-122.386714128120815, 37.763991128513133],
[-122.38670010140504, 37.763983799331974],
[-122.386686126988522, 37.763978529213567],
[-122.386670492591179, 37.763976032291019],
[-122.386649740182264, 37.763976364463595],
[-122.386634036749314, 37.763971122014347],
[-122.386621721632579, 37.763963078702353],
[-122.386611066835059, 37.763952261637705],
[-122.386603852994298, 37.763940702770881],
[-122.386600062668251, 37.763927715381541],
[-122.386601461140231, 37.763914645215138],
[-122.386604606072254, 37.763902234094914],
[-122.386738907102767, 37.763808749639459],
[-122.386828889531799, 37.763741383598706],
[-122.386840716091143, 37.763730206671987],
[-122.386855983933643, 37.763718287929905],
[-122.386869539846316, 37.763707083316298],
[-122.386884824769794, 37.763695851022327],
[-122.386900145253236, 37.763685991607943],
[-122.38691721218359, 37.763676790958648],
[-122.386934296546428, 37.763668276753165],
[-122.386951398349183, 37.763660449266119],
[-122.386970246931185, 37.763653279988162],
[-122.386989112953756, 37.763646797428088],
[-122.387007996064526, 37.763641001316863],
[-122.387026897301666, 37.763635891637833],
[-122.387047562432002, 37.763632127441824],
[-122.387066515625051, 37.76362907682639],
[-122.387271786163467, 37.763605188503739],
[-122.387241692331358, 37.763510215504958],
[-122.386905339639924, 37.763549936808673],
[-122.386894896912324, 37.763479371256736],
[-122.386775626938885, 37.763415354890846],
[-122.386725141086345, 37.763471101073094],
[-122.386629276523749, 37.763443106355105],
[-122.386635775530237, 37.763426520918784],
[-122.386503316054672, 37.763388124513462],
[-122.386596764100844, 37.763184731253212],
[-122.386314395824243, 37.763102036396099],
[-122.386214308919619, 37.763316522997265],
[-122.385510514730285, 37.763329843761532],
[-122.385502904472929, 37.763234510683318],
[-122.385278141497096, 37.763240166132988],
[-122.385288368966343, 37.763370480347639],
[-122.38518118352205, 37.763373568175126],
[-122.385104258477085, 37.762319301701545],
[-122.384682038971576, 37.762111108737756],
[-122.384291646501694, 37.762134518628663],
[-122.384461265879253, 37.764047083641032],
[-122.384304084745608, 37.764057150214732],
[-122.384132119672074, 37.762256559028991],
[-122.383427389000644, 37.762300785113965],
[-122.383450606038608, 37.762465914870035],
[-122.383630300057192, 37.762456862777178],
[-122.3836690703355, 37.762553071423532],
[-122.383744969614881, 37.762544304446941],
[-122.383904907669475, 37.764143878058199],
[-122.383832343655854, 37.764147784454543],
[-122.383810360659879, 37.764236036587789],
[-122.383580701961776, 37.764253441592125],
[-122.383538646212543, 37.764164152408867],
[-122.383462623420698, 37.764168114122675],
[-122.383459954192517, 37.764131073630139],
[-122.383299279201026, 37.764139821513076],
[-122.383109557752064, 37.762320284660944],
[-122.382290828789408, 37.762371818989514],
[-122.38251353675102, 37.764606298459128],
[-122.382344144468703, 37.764612437347246],
[-122.382121545934865, 37.762382076243206],
[-122.38174844490716, 37.762405201559091],
[-122.381695087947634, 37.764738170521944],
[-122.381631135065035, 37.764740565182315],
[-122.381630936164214, 37.764801000118787],
[-122.381492672008349, 37.764806640579245],
[-122.381450941763589, 37.76493503772344],
[-122.381172352882004, 37.76493330344676],
[-122.381123981911756, 37.764799477425129],
[-122.380983831900423, 37.764798967139676],
[-122.381029346103958, 37.762223710202747],
[-122.38330764917707, 37.762081573209855],
[-122.382185556454559, 37.760879873475361],
[-122.382168402620636, 37.760885641207267],
[-122.382152908506868, 37.760888635257665],
[-122.382137362223574, 37.760889570238476],
[-122.382121780810863, 37.760889132328003],
[-122.38210441862546, 37.760886662951151],
[-122.382090445117498, 37.760881392285128],
[-122.382076454213362, 37.760875434895482],
[-122.382064140442054, 37.760867390822959],
[-122.382053521188098, 37.760857946240883],
[-122.382044596105573, 37.76084710115525],
[-122.382023253267107, 37.760824093302155],
[-122.382014294110562, 37.760811875582888],
[-122.382005317206719, 37.760798970871889],
[-122.381998069607818, 37.76078603882209],
[-122.381986997879679, 37.76075874660679],
[-122.381983174441103, 37.760744386430567],
[-122.381981079958692, 37.760729998921875],
[-122.381980366958516, 37.760701854577775],
[-122.381981731049137, 37.76068741129496],
[-122.381984824092612, 37.760672940679711],
[-122.38198793521687, 37.760659156500736],
[-122.381992775285752, 37.760645344714604],
[-122.381695267558513, 37.760647347915544],
[-122.381838070964363, 37.762118779804872],
[-122.381335375976406, 37.762148093200558],
[-122.381148296266858, 37.760157516712624],
[-122.380611046370689, 37.760188065470565],
[-122.380912187127535, 37.763336013717719],
[-122.380701275367471, 37.763342126118935],
[-122.380400282533174, 37.760199669192616],
[-122.379507164112297, 37.760250310896886],
[-122.379808005517475, 37.763456637815253],
[-122.379779318273378, 37.763485250755494],
[-122.379565016753276, 37.763494162073435],
[-122.379533176547326, 37.763466514378344],
[-122.379201704975202, 37.759937914686475],
[-122.381256986630419, 37.759667520373661],
[-122.381256577752055, 37.759583059710486],
[-122.381469121143184, 37.759573486743299],
[-122.381446760180623, 37.75930533388199],
[-122.381389798546991, 37.759310363785765],
[-122.381303248927566, 37.759308311423226],
[-122.381202252005025, 37.758325846274602],
[-122.381200105587652, 37.758309399127988],
[-122.381197941449869, 37.758292265813587],
[-122.381197089710227, 37.758258629870305],
[-122.381199679398975, 37.758224251997007],
[-122.381200991455458, 37.758207749648136],
[-122.38120401536365, 37.75819053325035],
[-122.381207056652954, 37.758174003300283],
[-122.381221367866601, 37.758124330651064],
[-122.381234402126012, 37.75809253323947],
[-122.381242648836448, 37.758076607200529],
[-122.381262669528837, 37.75804744489573],
[-122.381289433303067, 37.758011307974613],
[-122.381302797797105, 37.757992553063836],
[-122.381314432708805, 37.757973825759706],
[-122.381327797196747, 37.757955071120548],
[-122.381337703552219, 37.757936371131194],
[-122.381360938912749, 37.75789754361324],
[-122.381380716140868, 37.757858771292213],
[-122.381390587715856, 37.757838698951588],
[-122.381398729699725, 37.757818653670306],
[-122.381408600911726, 37.757798581058942],
[-122.381416742893265, 37.757778536050878],
[-122.381423155645805, 37.757758518646433],
[-122.381431297626008, 37.7577384739118],
[-122.381444088336707, 37.757697065930351],
[-122.381450501074838, 37.757677048524144],
[-122.381464499104396, 37.757615019779642],
[-122.381469148185403, 37.757593657075738],
[-122.381475021977749, 37.757552359783979],
[-122.381477941486636, 37.757531024690024],
[-122.381480843608969, 37.757509003148037],
[-122.381427480867771, 37.75751946944429],
[-122.381405721286413, 37.757343328372727],
[-122.381468641764485, 37.757300433411309],
[-122.381446638421224, 37.75711468207534],
[-122.381323864533158, 37.757116641937891],
[-122.381323169199888, 37.757089184020202],
[-122.381364426846005, 37.75707891127486],
[-122.381321992818584, 37.756564544822638],
[-122.381321662531036, 37.756551502035926],
[-122.38132307883005, 37.756539118369027],
[-122.381326206602509, 37.756526020931318],
[-122.381331099013835, 37.756514268226432],
[-122.381339449129754, 37.756502460600949],
[-122.381347834701543, 37.756492025859821],
[-122.381357966510507, 37.756482250242897],
[-122.381369844881263, 37.756473132920476],
[-122.381383504601786, 37.756466047611781],
[-122.381397181710526, 37.756459649024094],
[-122.381399266420004, 37.75640536415446],
[-122.381383669266881, 37.756404239961626],
[-122.381368019603769, 37.756401055879024],
[-122.381354081758502, 37.756397158017677],
[-122.381338379955181, 37.756391914861666],
[-122.381324389963666, 37.756385957652711],
[-122.38129976407464, 37.756369869336808],
[-122.381289145560629, 37.756360424678547],
[-122.381280238512659, 37.756350265974667],
[-122.381265813968113, 37.756327147557755],
[-122.381260331236177, 37.756315560741236],
[-122.381258271437829, 37.756302546110341],
[-122.381256229700497, 37.756290217367201],
[-122.381255916815178, 37.756277861302344],
[-122.381240855709805, 37.755888041607285],
[-122.381237067430561, 37.75587505429101],
[-122.381229855216972, 37.755863495353786],
[-122.381219219049328, 37.755853363971241],
[-122.381205211793798, 37.755846720574091],
[-122.381189545219783, 37.75584285001387],
[-122.381023178934683, 37.755831084166076],
[-122.381005052890941, 37.755798410637965],
[-122.380939344081298, 37.755799459348452],
[-122.380938179657051, 37.755753467322073],
[-122.381031311951133, 37.755742366765169],
[-122.381010248974547, 37.755730341878809],
[-122.38098743910173, 37.755717658143908],
[-122.380924145958886, 37.755677464760758],
[-122.380881915817497, 37.755649296531168],
[-122.380862530269653, 37.755635184397235],
[-122.380841397836633, 37.755620413687737],
[-122.380821994593731, 37.755605615653565],
[-122.380802573973469, 37.755590130893374],
[-122.38078488252836, 37.755574618260482],
[-122.380758354080839, 37.755551693216646],
[-122.380751124581494, 37.755539447252119],
[-122.380745589509232, 37.755525801070959],
[-122.38074007147074, 37.755512841343261],
[-122.380736283298162, 37.75549985401004],
[-122.38073074823852, 37.755486208102681],
[-122.380728671510397, 37.755472506457778],
[-122.380724865279745, 37.755458832961516],
[-122.380718635462969, 37.755417728569704],
[-122.380718270538722, 37.755403313156876],
[-122.380719652161702, 37.755389556598288],
[-122.380719304614729, 37.755375827633614],
[-122.380722067512963, 37.755348314521783],
[-122.380728289091294, 37.755320746216135],
[-122.380731417602021, 37.755307648505891],
[-122.380736257562816, 37.755293837033165],
[-122.38074597221329, 37.755267586159846],
[-122.380759145196464, 37.755241280371166],
[-122.380767425749198, 37.755226726990642],
[-122.380777557807846, 37.755216951415953],
[-122.380789436047536, 37.755207834150042],
[-122.3808030608416, 37.755199376285184],
[-122.380814973485883, 37.755191631918663],
[-122.380828633023739, 37.75518454667273],
[-122.380844056826504, 37.755178806720394],
[-122.380857751116352, 37.755173094367549],
[-122.380873209326097, 37.755168727313375],
[-122.380888684919853, 37.755165046980004],
[-122.380905907041537, 37.755162024947012],
[-122.380921434762783, 37.75516040367944],
[-122.380952524623297, 37.755158534314724],
[-122.380976698502963, 37.755156774772679],
[-122.380999125498533, 37.755154356655588],
[-122.381021534766717, 37.755151252091551],
[-122.381043927344422, 37.755147461063977],
[-122.381066302193489, 37.755142983589487],
[-122.38108865965917, 37.755137819662529],
[-122.38111099939502, 37.755131969288627],
[-122.38113332243789, 37.755125432451251],
[-122.381153915967687, 37.755118923215505],
[-122.381176203900949, 37.755111013753655],
[-122.38119676265265, 37.755103131339425],
[-122.381225828164943, 37.755089619604064],
[-122.381246943141264, 37.755103703797808],
[-122.381242963358787, 37.755083165829973],
[-122.38126015068255, 37.755078770848776],
[-122.381277355393678, 37.755075062587856],
[-122.381292865706087, 37.755072754823154],
[-122.38131010484075, 37.755070419733926],
[-122.381327362035009, 37.75506877053013],
[-122.381361945276268, 37.755068218467898],
[-122.381396598051168, 37.755070412188203],
[-122.381413958860932, 37.755072881946376],
[-122.381448715950555, 37.755079194614936],
[-122.381480084590436, 37.755088307721437],
[-122.381497532329476, 37.755094209708098],
[-122.381511539483228, 37.755100853620512],
[-122.381527276134307, 37.755107469370813],
[-122.381548321633034, 37.755118807717949],
[-122.381562363566104, 37.755126824520609],
[-122.381579829044853, 37.755133412663042],
[-122.381595565024199, 37.755140028689837],
[-122.381612996090695, 37.755145244200165],
[-122.381630391696547, 37.755149086822691],
[-122.381647770609987, 37.755152242983492],
[-122.381665131447221, 37.755154712704652],
[-122.381684187368847, 37.755155781907895],
[-122.38170149639484, 37.755156192273823],
[-122.382833235564902, 37.755035795269471],
[-122.383668861276263, 37.754971624407645],
[-122.383685978819074, 37.754964483555838],
[-122.38372028351472, 37.754952947636127],
[-122.383737470668777, 37.75494855256818],
[-122.383756404038564, 37.75494481631263],
[-122.383773626345388, 37.754941794129564],
[-122.383792594868737, 37.754939430758334],
[-122.383811580457817, 37.754937754111957],
[-122.38384268824322, 37.754936570147059],
[-122.383861726388119, 37.754936952556008],
[-122.383880781586896, 37.754938021140639],
[-122.383896396575224, 37.754939831714687],
[-122.384073136269635, 37.754951427650568],
[-122.384099862744918, 37.754913917176538],
[-122.384076095308828, 37.754658835300546],
[-122.383998950777894, 37.754618177983438],
[-122.383899356302948, 37.754647239093948],
[-122.383797997440993, 37.754674954869053],
[-122.383696604385719, 37.754701297650087],
[-122.383569360630759, 37.75473148712782],
[-122.383548680403266, 37.754734564546567],
[-122.3835279827709, 37.754736955513799],
[-122.383505538587656, 37.754738687938882],
[-122.38348480614728, 37.754739706002738],
[-122.383441577306456, 37.754740396857535],
[-122.383400008003704, 37.754738313997002],
[-122.38337920595491, 37.754736586250608],
[-122.383356657006146, 37.754734199690795],
[-122.383335820163737, 37.754731099315492],
[-122.383314965907985, 37.754727311939398],
[-122.383295841160447, 37.754723497196949],
[-122.383254063070865, 37.754713177184357],
[-122.383234885782983, 37.75470730309371],
[-122.383213961945074, 37.754700770182538],
[-122.383194767270453, 37.754694209911989],
[-122.383175537439726, 37.754686276198775],
[-122.383158037470992, 37.754678315390812],
[-122.383138807994129, 37.754670381666052],
[-122.383103737780345, 37.754651713981168],
[-122.383086185277548, 37.75464169354953],
[-122.383068615380594, 37.754630986667287],
[-122.383052774639708, 37.754620252154247],
[-122.383036916504807, 37.754608831191064],
[-122.383015731729387, 37.754592001250259],
[-122.38299259130558, 37.754566275663684],
[-122.382971180378888, 37.754540521890775],
[-122.382949752076243, 37.754514081940449],
[-122.382930053282664, 37.754487614354218],
[-122.382908625009904, 37.754461174396191],
[-122.382888908501968, 37.754434020360335],
[-122.382870920808742, 37.754406838701115],
[-122.382842850708954, 37.754363390808408],
[-122.382816907001839, 37.754323234339928],
[-122.382797016608123, 37.754289216082142],
[-122.382791480900465, 37.754275569725095],
[-122.382785928504248, 37.754261237457797],
[-122.38278210489284, 37.754246877022375],
[-122.382781722177867, 37.754231775164968],
[-122.382784449823419, 37.754202889097733],
[-122.382789271581657, 37.754188390821014],
[-122.382795840220822, 37.754174551362205],
[-122.382804155740061, 37.754161370721022],
[-122.382814217447034, 37.754148848908173],
[-122.382826043083483, 37.754137672365715],
[-122.382839615252593, 37.75412715464509],
[-122.382853204821586, 37.754117323645531],
[-122.382868575702929, 37.754109523814002],
[-122.382885693124038, 37.754102383077345],
[-122.382904591526582, 37.754097274061955],
[-122.382896892098685, 37.754066494402807],
[-122.382890922160428, 37.754035687111681],
[-122.382884969278336, 37.754005566273698],
[-122.382876487005475, 37.753943896449059],
[-122.382873975008934, 37.75391303391072],
[-122.382869733880582, 37.753882198997694],
[-122.382868951022118, 37.753851308833418],
[-122.382866421635015, 37.753819759846344],
[-122.382865638778583, 37.753788869681728],
[-122.38286753098933, 37.753727034381221],
[-122.382869667430043, 37.75367480879347],
[-122.382867485984363, 37.753656988767865],
[-122.382865286797127, 37.753638482299571],
[-122.382861376571569, 37.753620689893637],
[-122.382850096841622, 37.753585160622798],
[-122.382842745420064, 37.753568109920103],
[-122.382833665214591, 37.753551086561764],
[-122.382822855548582, 37.753534091107603],
[-122.382812063283737, 37.753517782100509],
[-122.382801288419827, 37.753502159540567],
[-122.382788801838672, 37.753487251326646],
[-122.382774586124242, 37.75347237018628],
[-122.382742765715449, 37.753445409495008],
[-122.382726873440859, 37.753432615860532],
[-122.382709269084074, 37.753420535751609],
[-122.382691682135089, 37.753409142362763],
[-122.382672383117907, 37.753398463047603],
[-122.382653119587403, 37.753389156614546],
[-122.382611168393765, 37.753371971889877],
[-122.382590227592559, 37.7533647524183],
[-122.382569321590282, 37.753358906113988],
[-122.382546703510585, 37.753353773605845],
[-122.382524103512239, 37.753349327255975],
[-122.382501520571083, 37.75334556763007],
[-122.382478972425403, 37.753343181170841],
[-122.382456441314361, 37.753341480611873],
[-122.382433945688362, 37.753341153208574],
[-122.382402821501856, 37.753341650348268],
[-122.38237864858533, 37.753343409903252],
[-122.382356222188207, 37.753345828558139],
[-122.382297501266095, 37.753349513077993],
[-122.38226810654271, 37.753349982559506],
[-122.382240423203967, 37.753349737974666],
[-122.382210993352999, 37.753348834550927],
[-122.382181546112378, 37.753347244671602],
[-122.382152081137065, 37.753344968342162],
[-122.382124328241176, 37.753341977937026],
[-122.382094811792641, 37.753337642237426],
[-122.38206700673382, 37.753332592473967],
[-122.382039184289724, 37.753326856255676],
[-122.38201134446112, 37.753320433582523],
[-122.38200001736864, 37.75331754288009],
[-122.381983487255724, 37.753313324729064],
[-122.381957341428489, 37.753305501265011],
[-122.3819294494578, 37.75329701950217],
[-122.38187705455077, 37.753277254112369],
[-122.381850839550978, 37.753266685100435],
[-122.3818017982653, 37.753242746046119],
[-122.381777242861062, 37.753229403614625],
[-122.381754416238635, 37.753216033574361],
[-122.381731572936843, 37.753201977344837],
[-122.381708677132991, 37.753185861496782],
[-122.381985040410456, 37.753169774197133],
[-122.382560765120331, 37.753136419940226],
[-122.382560989570067, 37.75313671714089],
[-122.382951309683904, 37.753114103639163],
[-122.383438933023925, 37.753085850281579],
[-122.383914427464433, 37.753058600498669],
[-122.384879974685347, 37.753002645165687],
[-122.385845520438053, 37.752946681373402],
[-122.385845731512404, 37.752946669205699],
[-122.386811064397406, 37.752890709951139],
[-122.386811676199414, 37.752890674609837],
[-122.387755875750031, 37.752835749697695],
[-122.387756291326852, 37.752835725460692],
[-122.387756280477618, 37.752835611637821],
[-122.387633974640565, 37.751559603455405],
[-122.387585270262662, 37.750263378063039],
[-122.388507729357968, 37.750205975353602],
[-122.389478017653872, 37.750145107673561],
[-122.390433038183829, 37.750118341633915],
[-122.391418367221192, 37.750140606282606],
[-122.391693805117924, 37.750111668488358],
[-122.391705979739527, 37.750110389401705],
[-122.391714686151033, 37.750109474739723],
[-122.391929934247997, 37.750086859865874],
[-122.392350740047519, 37.750026024134087],
[-122.392354048972692, 37.750025545503377],
[-122.392381992909165, 37.750021506018193],
[-122.393314555211816, 37.749918012051069],
[-122.393322792145199, 37.749917097944952],
[-122.393340265733656, 37.749915158351328],
[-122.395231400136637, 37.749808114846253],
[-122.395307862010839, 37.749803786070743],
[-122.396273544250747, 37.74974560058007],
[-122.397285415820363, 37.749684622841229],
[-122.40206163398004, 37.749396678541473],
[-122.402063015501824, 37.749396333205695],
[-122.402215286387033, 37.749358244852793],
[-122.402746245055127, 37.749375020002113],
[-122.402866303074774, 37.749478453789486],
[-122.402866309087059, 37.749478458911533],
[-122.402968925612569, 37.749550036933734],
[-122.403054692816028, 37.74954427306843],
[-122.403203674195439, 37.749534260068266],
[-122.403260968692152, 37.749530409553117],
[-122.403568849778438, 37.749475672986911],
[-122.403592456970202, 37.749471475909672],
[-122.403667613571599, 37.749458113882532],
[-122.403783562755194, 37.749432891426196],
[-122.403735650894049, 37.749583872707518],
[-122.403514246938869, 37.750281563827826],
[-122.403378511001179, 37.750679445903444],
[-122.403214572776321, 37.751164169122518],
[-122.403175027775376, 37.751281093014263],
[-122.403072643662085, 37.751794247946641],
[-122.403060331379024, 37.751915861053995],
[-122.403006670294943, 37.752445905732571],
[-122.402978169178084, 37.75275045704997],
[-122.40301031565609, 37.753201877425177],
[-122.403011715723153, 37.753221541143297],
[-122.403127143734139, 37.75447773377249],
[-122.403244936870763, 37.755759623462495],
[-122.403245024221292, 37.755760575231484],
[-122.403305530792395, 37.756165877853867],
[-122.403395700993769, 37.756471262485057],
[-122.403543859417937, 37.75680412126377],
[-122.403689260967766, 37.757015002579273],
[-122.403774084903432, 37.757138026202746],
[-122.403774405770974, 37.757138490742172],
[-122.404168659910013, 37.75752977302043],
[-122.404441730762329, 37.757748221369937],
[-122.40472107938929, 37.757950649275713],
[-122.404835145723425, 37.7580339263735],
[-122.405048169961901, 37.758189448369819],
[-122.405545221503274, 37.758536929330724],
[-122.405903135660481, 37.758934413706449],
[-122.406103779268008, 37.759196479511928],
[-122.406247868764623, 37.759429354319998],
[-122.406261953936678, 37.75945211819198],
[-122.406389357641601, 37.759804405761585],
[-122.406492391998796, 37.760255279712112],
[-122.406492697683589, 37.760686469836571],
[-122.406479479731502, 37.760730932047331],
[-122.4062826701159, 37.761392945250627],
[-122.406147061407296, 37.7616371808829],
[-122.406021608630979, 37.761863123291867],
[-122.405925510731336, 37.762011914887523],
[-122.405653838302513, 37.762432552128487],
[-122.405384490436404, 37.76297005284507],
[-122.40532469627189, 37.76313750682079],
[-122.405258413683796, 37.763323129887908],
[-122.405203088479681, 37.763478066930332],
[-122.405104592203571, 37.763852244172895],
[-122.405059622300016, 37.764310557738277],
[-122.405089602982216, 37.764628538373131],
[-122.404841911264157, 37.764643492872132],
[-122.404496977488066, 37.764664317561468],
[-122.403527034519726, 37.764722870371436],
[-122.402563396844656, 37.764781034314389],
[-122.401598999326723, 37.764839236400867],
[-122.401604204317508, 37.764894634517518],
[-122.401720515816834, 37.766132520250999],
[-122.40075504647362, 37.766190486570189],
[-122.399760960198876, 37.766250252443854],
[-122.39980174760619, 37.766587745781216],
[-122.399677637243116, 37.766695444602661],
[-122.4004285874814, 37.76730030349627],
[-122.400680751363893, 37.767503407870436],
[-122.400877239583821, 37.76748837440357],
[-122.401842503677628, 37.76743077711658],
[-122.401962350744, 37.768706209224241],
[-122.402926809989424, 37.76864812762463],
[-122.403037758616776, 37.769828657390953],
[-122.403406518421917, 37.769807099957397],
[-122.403615112128733, 37.769893190404822],
[-122.403877699904385, 37.770062866265505],
[-122.403531054507056, 37.770336670466769],
[-122.401656665936628, 37.77181711392474],
[-122.399647849152032, 37.773403860176856],
[-122.399516440682405, 37.773507653276255],
[-122.399433130909728, 37.773573455617395],
[-122.400212340411557, 37.77419510487973],
[-122.400592319049849, 37.774498244536282],
[-122.400981567656032, 37.774808775969753],
[-122.402524096584528, 37.776039321403807],
[-122.40337073826143, 37.776714700215486],
[-122.403505778866929, 37.776822422431877],
[-122.403673439982725, 37.776956165214415],
[-122.404070256642925, 37.777272702482797],
[-122.404605505853894, 37.777699659794813],
[-122.405068508898097, 37.778068981419388],
[-122.405615266425855, 37.778505104539292],
[-122.404431250807633, 37.779440334605447],
[-122.403387209275081, 37.78026497235011],
[-122.401159718585049, 37.782024266952142]
]
]
}
},
{
type: 'Feature',
properties: {OBJECTID: 2, ZIP_CODE: 94105, ID: 94105},
geometry: {
type: 'Polygon',
coordinates: [
[
[-122.39249932896719, 37.793768814133983],
[-122.391890260341384, 37.794278544568918],
[-122.391788865572423, 37.794170982455135],
[-122.39173429034625, 37.79420276052317],
[-122.391666728649753, 37.794132425256194],
[-122.391723034266192, 37.79410061945832],
[-122.391673228351905, 37.794047854124599],
[-122.391982015107928, 37.793871906128679],
[-122.391589022782, 37.793527982873798],
[-122.391723231555744, 37.793429001692992],
[-122.390805927608938, 37.792657675413892],
[-122.388808599369057, 37.790978116182679],
[-122.388930714411984, 37.790880018842998],
[-122.388611692601799, 37.790313089306778],
[-122.388048971491713, 37.790507516256234],
[-122.388012417064502, 37.790431188672287],
[-122.388369268465311, 37.790308044637399],
[-122.388285919009036, 37.790161047422416],
[-122.388320274159014, 37.790150883121463],
[-122.388243932142601, 37.790007207265845],
[-122.388219415789919, 37.789995925591761],
[-122.388076857804336, 37.790038725053051],
[-122.38779803320179, 37.790149885537438],
[-122.385731305877229, 37.790973806479329],
[-122.385715648397209, 37.790970622998962],
[-122.385703294724394, 37.790961206457723],
[-122.385509561738004, 37.790556391724344],
[-122.385507518014222, 37.790544063409705],
[-122.385514141658973, 37.790532283492631],
[-122.385686917933171, 37.79045260764569],
[-122.387606646474296, 37.789787359176458],
[-122.387348795424046, 37.789311467853956],
[-122.38734757309517, 37.78931176210844],
[-122.385363735345749, 37.789788908162748],
[-122.385346470166525, 37.789790557672781],
[-122.385330865935444, 37.789789433734306],
[-122.3853151742195, 37.789784877582385],
[-122.385301142770246, 37.789777548268411],
[-122.385290501190326, 37.789767417313975],
[-122.385283285054584, 37.789755858694043],
[-122.385108047186435, 37.789329458915937],
[-122.385106003217075, 37.789317130597112],
[-122.385109132387825, 37.789304032849302],
[-122.385115773404124, 37.789292939120834],
[-122.385127656568173, 37.78928382174719],
[-122.385141339390941, 37.789277422487608],
[-122.385148542800621, 37.789220309385662],
[-122.387188020139192, 37.788773590697055],
[-122.387049561519532, 37.788228488916552],
[-122.385265755459955, 37.788520039162925],
[-122.385250134063114, 37.78851822849537],
[-122.385234425193858, 37.78851298588809],
[-122.385222089078539, 37.788504256015905],
[-122.385214890495845, 37.788493383558084],
[-122.385126670096767, 37.788154179856562],
[-122.385126356426341, 37.788141823596902],
[-122.385129502623784, 37.788129412294914],
[-122.385137873116122, 37.788118290909864],
[-122.385149773868434, 37.788109860244717],
[-122.385165203482913, 37.788104119771369],
[-122.38712311120571, 37.787785749180493],
[-122.387152415559953, 37.787781160094404],
[-122.38716964498991, 37.787778137163613],
[-122.38718858690207, 37.78777440037284],
[-122.387205798545097, 37.787770691273494],
[-122.387224740799539, 37.787766954471365],
[-122.387241935339802, 37.787762558917869],
[-122.387260859452994, 37.787758135677656],
[-122.387278054335084, 37.787753740113331],
[-122.387312408509445, 37.787743576101576],
[-122.387329567801103, 37.787737807654125],
[-122.387346745228243, 37.787732725636424],
[-122.387363887068403, 37.787726270740649],
[-122.38738104704403, 37.787720502274603],
[-122.38740694457185, 37.787241442038656],
[-122.387019444956891, 37.787247644385083],
[-122.384558944804354, 37.787400993480382],
[-122.384543323667074, 37.787399182993411],
[-122.384527632511421, 37.787394627009306],
[-122.384515296650974, 37.787385896512234],
[-122.384504655873897, 37.787375765751548],
[-122.384499135159118, 37.787362806267062],
[-122.384342210870813, 37.785748083262355],
[-122.384341897348037, 37.785735727269817],
[-122.384346773449252, 37.785723288336335],
[-122.38435689108006, 37.785712825798925],
[-122.384370521056837, 37.785704367292539],
[-122.384385968349036, 37.785699313626168],
[-122.387217967726542, 37.785525599931667],
[-122.387242186237785, 37.785525212275893],
[-122.387269846695702, 37.785524082797316],
[-122.387295742393547, 37.78552160811531],
[-122.387323367958444, 37.785519105736952],
[-122.387349245861117, 37.785515944605116],
[-122.387375089561743, 37.785511410569285],
[-122.387402662781668, 37.785506848841521],
[-122.387454279688384, 37.785495034977437],
[-122.387478323373855, 37.785487782842686],
[-122.387504079475306, 37.785479816566138],
[-122.387528105357717, 37.785471877983142],
[-122.387553826899222, 37.785462538802953],
[-122.387580894103834, 37.785438070169313],
[-122.387630346985745, 37.78486455148672],
[-122.385458308223278, 37.78499338709468],
[-122.385413881876744, 37.784606785946664],
[-122.387221366105805, 37.784501641660896],
[-122.387418079949683, 37.784479264504995],
[-122.38743876829875, 37.784476186423468],
[-122.387483534893533, 37.784467229088612],
[-122.387528231689217, 37.784455525961853],
[-122.387550562288524, 37.78444898795393],
[-122.387571145938807, 37.78444179118685],
[-122.387593442333781, 37.784433880546885],
[-122.387613991073025, 37.784425310610295],
[-122.38765505365474, 37.784406798388098],
[-122.387673819852623, 37.78439619708557],
[-122.387677823231684, 37.784349435820396],
[-122.387709046749492, 37.783875783688671],
[-122.386286930602978, 37.783958976243902],
[-122.386236533710786, 37.783405597391891],
[-122.387525601081578, 37.78333071590594],
[-122.387695596747974, 37.783278550154108],
[-122.387751878035047, 37.783246059476667],
[-122.387776877347846, 37.78286796141245],
[-122.3875502225155, 37.782801544578085],
[-122.387525883466154, 37.782797127453357],
[-122.387484228568439, 37.78279230054234],
[-122.387463418560699, 37.782790573250665],
[-122.387440913647538, 37.782790246810194],
[-122.387420138539767, 37.78278989267335],
[-122.387388984601131, 37.782789704683182],
[-122.387368261829351, 37.782791409869013],
[-122.387347521611616, 37.782792428607252],
[-122.384758972173714, 37.782940280456494],
[-122.384743316428853, 37.782937096842417],
[-122.384732711445736, 37.782928338977264],
[-122.384679972094801, 37.782554918115103],
[-122.384681388329753, 37.782542534464426],
[-122.384691505480149, 37.782532071892298],
[-122.384705187096728, 37.782525672675533],
[-122.387509249137921, 37.78234690330077],
[-122.387528224534123, 37.782344539065186],
[-122.387554136561661, 37.78234275076899],
[-122.38762294594062, 37.782322839482177],
[-122.387787765874378, 37.782275144853472],
[-122.387765464889313, 37.78194244138043],
[-122.388106738902522, 37.781931906493995],
[-122.388231340039766, 37.782146697467269],
[-122.388304301898813, 37.782356717503951],
[-122.388306939892615, 37.782385221520776],
[-122.389843136047602, 37.783611740842574],
[-122.389846392025618, 37.783609176617361],
[-122.390856721023212, 37.784410569188324],
[-122.391599105853345, 37.783822668268179],
[-122.391600764141245, 37.783823989838545],
[-122.392032919786118, 37.784168354830349],
[-122.392118766536498, 37.784205306785267],
[-122.392215026316663, 37.784279352365694],
[-122.392216553530702, 37.784278123341721],
[-122.39285700396303, 37.784773072758867],
[-122.39286959393705, 37.78478280203197],
[-122.39343711789931, 37.784459123881106],
[-122.394398389309941, 37.783701667981575],
[-122.395160622349934, 37.78431101230386],
[-122.395895701657864, 37.784896929203114],
[-122.396705177550587, 37.785542130425938],
[-122.397811613142864, 37.784666586003652],
[-122.399369533643153, 37.785899247741973],
[-122.400468483886854, 37.785030285141588],
[-122.400994549885382, 37.785441790992316],
[-122.400998469557948, 37.785444857061968],
[-122.401480059865179, 37.785821567351917],
[-122.401489835489045, 37.785829214187501],
[-122.402025419766176, 37.786248152290575],
[-122.402575227394536, 37.786678208153539],
[-122.403028193190352, 37.787024418822838],
[-122.403028734856406, 37.78702485040828],
[-122.403342641535644, 37.787274627660381],
[-122.403430800369534, 37.787641848645734],
[-122.403239953883428, 37.787802352067843],
[-122.40290309900054, 37.788085647297414],
[-122.402903089488873, 37.788085654318181],
[-122.402404665507532, 37.788463925757384],
[-122.402065730098272, 37.788721152097366],
[-122.401375490979433, 37.789264321921429],
[-122.400067228055164, 37.790303858609981],
[-122.399919790020746, 37.790414442896498],
[-122.399480001759599, 37.790744297277485],
[-122.399222136170906, 37.790956214990921],
[-122.39914859901539, 37.791016648609592],
[-122.399148598683425, 37.79101664916432],
[-122.398264448861653, 37.791716058450703],
[-122.39826444614279, 37.791716060417308],
[-122.397840810091907, 37.792047595331439],
[-122.39738344591872, 37.792405521295422],
[-122.396504486670068, 37.793097082520163],
[-122.396376076969489, 37.793198086984006],
[-122.396302004629632, 37.793256350149633],
[-122.396302004290646, 37.793256350429786],
[-122.395983670970253, 37.793501461560965],
[-122.395622922555773, 37.793779228585429],
[-122.39533276386878, 37.794011429145591],
[-122.395317307728533, 37.794023797689903],
[-122.394971722038662, 37.794300351169447],
[-122.394747579547172, 37.794479718347191],
[-122.394745733667804, 37.794478246556643],
[-122.394745701490038, 37.794478274267938],
[-122.394150899798674, 37.794987788593353],
[-122.39270797067924, 37.793614415765255],
[-122.392702063215523, 37.793608792659974],
[-122.39249932896719, 37.793768814133983]
]
]
}
},
{
type: 'Feature',
properties: {OBJECTID: 3, ZIP_CODE: 94129, ID: 94129},
geometry: {
type: 'Polygon',
coordinates: [
[
[-122.470990721149789, 37.787534455433345],
[-122.472290534181823, 37.787395917162272],
[-122.472401902490546, 37.787384046501884],
[-122.47254342327507, 37.787368961705944],
[-122.472782224474642, 37.787331534391747],
[-122.473316434470121, 37.787247805418339],
[-122.474432824368861, 37.787072820298278],
[-122.474584006514732, 37.787049123020516],
[-122.47616220885665, 37.786978730627588],
[-122.478707989065171, 37.78691405835],
[-122.481375583614479, 37.787198893328011],
[-122.483910676418589, 37.787705653817092],
[-122.483911841345289, 37.78771598691722],
[-122.484019551359538, 37.788671434543716],
[-122.484071292407094, 37.789571562974182],
[-122.484214987310182, 37.789767611906584],
[-122.484758163249651, 37.789969442365155],
[-122.485095392905748, 37.790094746949087],
[-122.486221786002261, 37.790513270391187],
[-122.486196663014411, 37.790544596769486],
[-122.486148110204482, 37.790605847513199],
[-122.486108757859654, 37.790687545376898],
[-122.486034586054117, 37.790761588869977],
[-122.48595999185838, 37.790819844471812],
[-122.485896199163861, 37.790893713055688],
[-122.485740384038749, 37.791021323419344],
[-122.48558351329909, 37.791238913899868],
[-122.485411383576832, 37.791468435611826],
[-122.485284654257228, 37.791712987869268],
[-122.484994993901111, 37.791948608146861],
[-122.484752903676167, 37.79221570331633],
[-122.484541285320944, 37.792522116372695],
[-122.484363647892437, 37.79274005429609],
[-122.484183607122475, 37.793062416612024],
[-122.484072129345151, 37.793295035940602],
[-122.483858237133077, 37.793646123471206],
[-122.483593432919847, 37.794035150786577],
[-122.48329368676049, 37.794671303481294],
[-122.483518531231283, 37.794730014502065],
[-122.48308859662535, 37.79561146099627],
[-122.482999467368202, 37.795903449272551],
[-122.48285101972256, 37.796177893057802],
[-122.482765752291186, 37.796484924353678],
[-122.482667211606753, 37.796813467545597],
[-122.482504820847737, 37.797149264997877],
[-122.482349642968302, 37.797495928150028],
[-122.482180347467406, 37.797832527598885],
[-122.482169137762298, 37.797996159399602],
[-122.482136359830861, 37.798129936813986],
[-122.482085493238017, 37.798234488898757],
[-122.482121580114068, 37.798289507917929],
[-122.482129545147487, 37.798328517967903],
[-122.482111649834962, 37.798371396374968],
[-122.482102148276397, 37.798404519393337],
[-122.482087585279373, 37.798442534909526],
[-122.482079722552115, 37.798472196426395],
[-122.482040900643639, 37.798509246213612],
[-122.481958513784505, 37.798535353148957],
[-122.481870239865685, 37.798535463289312],
[-122.481831454802517, 37.798573885582073],
[-122.48191348856912, 37.79872908258961],
[-122.481933747767386, 37.798774753652147],
[-122.481894064444091, 37.798779540742402],
[-122.481782518807989, 37.79868595916038],
[-122.481759479485277, 37.798795537302446],
[-122.481735532663109, 37.798806240772073],
[-122.481729674725472, 37.79884616987701],
[-122.481697076819628, 37.79885701872184],
[-122.481553967429107, 37.798748172710248],
[-122.481544740366218, 37.798791592096414],
[-122.481675391067768, 37.798887599511232],
[-122.481685177680191, 37.798930012650303],
[-122.481641997341171, 37.798933485499177],
[-122.481619981772425, 37.798951710306021],
[-122.481601609693158, 37.798976741512377],
[-122.481583384160913, 37.799007264136819],
[-122.481561643359143, 37.799035785621555],
[-122.481552599461594, 37.799086069282282],
[-122.48153672724159, 37.799139901359283],
[-122.481507471077649, 37.799211126714575],
[-122.481470873600131, 37.799266680501994],
[-122.481417267273812, 37.799333507835762],
[-122.481380082795965, 37.799367095921824],
[-122.481394839952742, 37.799401184738606],
[-122.48138749011072, 37.799450066445814],
[-122.481313103352264, 37.799516556146521],
[-122.481199920275785, 37.799556228466017],
[-122.481106226731853, 37.799612741364335],
[-122.481068868952889, 37.799704704484391],
[-122.481063386681015, 37.799823601791012],
[-122.481042139949025, 37.799870656721012],
[-122.48098682060791, 37.799938199625082],
[-122.480980184705871, 37.800013851703859],
[-122.480977156432658, 37.800224730569639],
[-122.480974804661557, 37.800331213761126],
[-122.480860274222692, 37.800385329797535],
[-122.480757965088657, 37.800443360304584],
[-122.48067857879505, 37.800582040732152],
[-122.48065611449222, 37.800648344612128],
[-122.480592381330325, 37.800724956178229],
[-122.480537665874181, 37.800815150409605],
[-122.480468568377589, 37.800950224199951],
[-122.480375485908439, 37.801094628286094],
[-122.480295978813317, 37.801293743123836],
[-122.480202328037436, 37.801416867810858],
[-122.480181840275407, 37.801557305763211],
[-122.480071801739967, 37.801844835145566],
[-122.480027318791514, 37.802059156846411],
[-122.480044134726015, 37.802235365083838],
[-122.480004943470632, 37.80238847850972],
[-122.479965705600534, 37.802604771748101],
[-122.479928024203545, 37.802749618690633],
[-122.479899085376999, 37.802897752511299],
[-122.479813341330441, 37.803057827736559],
[-122.479734279947053, 37.803208863153962],
[-122.479678141843124, 37.803310755542739],
[-122.479612025097651, 37.803427923840943],
[-122.479496444899141, 37.803572704736546],
[-122.479357004588351, 37.803861413494445],
[-122.479173928312875, 37.80433146553451],
[-122.479146809127258, 37.804483001950985],
[-122.479060667102701, 37.804693214811543],
[-122.478953175659996, 37.804881810346664],
[-122.478815220557294, 37.805291358623961],
[-122.47872883882674, 37.805492647931004],
[-122.478723432948883, 37.805679530333919],
[-122.47869664200617, 37.805843422292654],
[-122.478685946257201, 37.805961720018743],
[-122.478628322791295, 37.806008011253461],
[-122.478654742843744, 37.806089976088074],
[-122.478631304779441, 37.806119899160173],
[-122.478660343597923, 37.806170230012903],
[-122.478638955177018, 37.806277032642242],
[-122.478627125019798, 37.806352771870088],
[-122.478625044107972, 37.806469551574978],
[-122.47857586751384, 37.806637939992576],
[-122.478562516078711, 37.80678649853526],
[-122.478544650108333, 37.806960541692234],
[-122.478526703332861, 37.807066600081164],
[-122.478526389161814, 37.807184723319764],
[-122.478521297177736, 37.807253482414033],
[-122.478488208711909, 37.807311036148292],
[-122.478483958170003, 37.807411370608691],
[-122.478496304822514, 37.807549883734964],
[-122.478476156109295, 37.807833156107016],
[-122.478405186887699, 37.808093245296376],
[-122.478343748883177, 37.808126216988313],
[-122.478060427750734, 37.808278265895638],
[-122.477897062640963, 37.80844925522419],
[-122.477885395973601, 37.808531172189731],
[-122.477923697644769, 37.808669250052077],
[-122.477956528906134, 37.809251736581921],
[-122.477922196862778, 37.80978247039468],
[-122.477956931601639, 37.810111519960003],
[-122.477924513902849, 37.810324264541741],
[-122.477975357212003, 37.810543166576302],
[-122.477691959274622, 37.810627579828761],
[-122.477738440983671, 37.81094269802653],
[-122.477669662799912, 37.810960332923507],
[-122.477465352217308, 37.810997758254302],
[-122.4773147668257, 37.811025342092201],
[-122.476951827952391, 37.810983355163785],
[-122.476621797907725, 37.810876948869407],
[-122.47656163509636, 37.810893065263848],
[-122.476466638674822, 37.81083628492037],
[-122.47639876264958, 37.810757761311969],
[-122.476244453139699, 37.810423848047549],
[-122.476192907539087, 37.810243414175943],
[-122.47615497008627, 37.809858792499412],
[-122.47604874198008, 37.809640130705603],
[-122.475967371125094, 37.809574880888988],
[-122.475790153494444, 37.809485827869665],
[-122.475539966877108, 37.809387008587656],
[-122.474949730564461, 37.809260233883315],
[-122.474802168498073, 37.809179610065499],
[-122.474477490769161, 37.809143842083898],
[-122.474059299537672, 37.809106891534391],
[-122.473248913495638, 37.809099164155811],
[-122.472667246163553, 37.80903404071298],
[-122.472248345244111, 37.80897031306057],
[-122.471807567969009, 37.808865058985567],
[-122.471692590128313, 37.808861156356251],
[-122.471577117792876, 37.808857237159089],
[-122.471241422813662, 37.80879760884919],
[-122.470932885927255, 37.808717610499883],
[-122.47066006806898, 37.808613665617798],
[-122.470600816238615, 37.80859886080146],
[-122.470032562336371, 37.809430372877515],
[-122.469989867152222, 37.809452374737276],
[-122.469923620349192, 37.809434939483481],
[-122.469403337873828, 37.809203958897747],
[-122.469386781047135, 37.809167151824653],
[-122.469446470968407, 37.809067952374448],
[-122.469513627885206, 37.809054469737255],
[-122.470046113471852, 37.809288679655658],
[-122.470536336868321, 37.808582769832967],
[-122.47042036446561, 37.808452854807648],
[-122.470227327454069, 37.808354443608728],
[-122.470098624189163, 37.80826663136105],
[-122.470013817898405, 37.808202121652926],
[-122.469815463486142, 37.808098991213633],
[-122.469586546186093, 37.807953106986339],
[-122.469305300471973, 37.807727061403774],
[-122.469233592741006, 37.807568936815628],
[-122.469112342826094, 37.807370435141976],
[-122.46886886007195, 37.807066844008062],
[-122.468789265438318, 37.807002933173059],
[-122.468641769161479, 37.806924361175163],
[-122.468442727148087, 37.806860383444018],
[-122.468303117397753, 37.806818075943092],
[-122.46814816670377, 37.806980670547468],
[-122.46804250856195, 37.806913074050627],
[-122.468204198687829, 37.806743499513175],
[-122.468154584727131, 37.80670037662253],
[-122.467927641872478, 37.806563383834956],
[-122.4677672527434, 37.806455496134681],
[-122.467355591928154, 37.806141659736177],
[-122.467203291926239, 37.806012347645776],
[-122.466996296046148, 37.805909356729394],
[-122.466671493417238, 37.805802836197401],
[-122.466463320033583, 37.805982110961864],
[-122.466652133036774, 37.805790797867139],
[-122.466274152924925, 37.805653990321176],
[-122.466075349709101, 37.80558203392561],
[-122.465895016150796, 37.805570618742252],
[-122.465648753037854, 37.805488195293123],
[-122.46546102999136, 37.805393808021854],
[-122.464551731906468, 37.805113664168701],
[-122.464230324554308, 37.805004333527904],
[-122.463987997870177, 37.804939695859083],
[-122.463579617827847, 37.804879883064366],
[-122.463271699005631, 37.804887756693624],
[-122.462952230341088, 37.804917109899002],
[-122.4624302743036, 37.805013698161765],
[-122.462214023782167, 37.805018669869817],
[-122.462027122615794, 37.804955166469341],
[-122.461896643188638, 37.804930554615567],
[-122.461601325019004, 37.804956755736356],
[-122.461272453201914, 37.805023344559039],
[-122.461007547032963, 37.805086808651389],
[-122.459772513833471, 37.805253612450713],
[-122.45957795006224, 37.805293241948746],
[-122.459540191073017, 37.805305543773983],
[-122.45950068434351, 37.805317187894794],
[-122.459462907558404, 37.805328803259258],
[-122.459423363879012, 37.805339074505127],
[-122.45938555118417, 37.805349316978521],
[-122.459306427886148, 37.805368486538775],
[-122.459227232780066, 37.805384910313265],
[-122.459185886621981, 37.805392464497949],
[-122.459106618316682, 37.805406142481793],
[-122.459065217794489, 37.805411637333286],
[-122.459025547917307, 37.805417103422087],
[-122.458984129270405, 37.80542191181479],
[-122.458944422811243, 37.805426005021417],
[-122.458902967930442, 37.80542944052501],
[-122.458861494934339, 37.805432189583698],
[-122.458788912310027, 37.805436828799479],
[-122.458735345621889, 37.80544046541047],
[-122.458683526998115, 37.80544475969581],
[-122.458631726477662, 37.805449740388731],
[-122.458578213760234, 37.805455436499734],
[-122.458526449095928, 37.805461790012899],
[-122.458474703215558, 37.805468829647623],
[-122.458371283182728, 37.805485655405761],
[-122.458319609004732, 37.805495440705506],
[-122.458269665819927, 37.805505197514321],
[-122.45821802818655, 37.805516356173719],
[-122.458168120492331, 37.805527485811837],
[-122.458116519376176, 37.805540017007239],
[-122.458066648197928, 37.805552519182882],
[-122.457989327072951, 37.805574405126777],
[-122.45793619470966, 37.805594515430641],
[-122.457883043876322, 37.805613939560359],
[-122.457829874920449, 37.805632677510189],
[-122.457774957510779, 37.805650757180459],
[-122.457721751946011, 37.805668121951648],
[-122.457666780196845, 37.805684142829186],
[-122.457610078443324, 37.805700191847833],
[-122.457500062415335, 37.80572948720183],
[-122.457443287865871, 37.805742790973085],
[-122.457386495190917, 37.805755408011883],
[-122.457329684053221, 37.805767338598564],
[-122.457272855492562, 37.805778582715845],
[-122.457186701695477, 37.805793746855791],
[-122.457077909022615, 37.805803793319789],
[-122.456970882463025, 37.805815183288864],
[-122.456862180533747, 37.805828661426311],
[-122.456755226634087, 37.80584279746536],
[-122.456648326952561, 37.805858992150092],
[-122.456541463411881, 37.805876559873688],
[-122.456434635998889, 37.805895500361686],
[-122.45632959276756, 37.805916471347693],
[-122.456224568256204, 37.805938128659257],
[-122.456119597596228, 37.80596184517497],
[-122.456014644961741, 37.805986248302439],
[-122.45591147681688, 37.806012681382633],
[-122.455806614105612, 37.806040516209428],
[-122.455705248815832, 37.806069666405428],
[-122.455564429228914, 37.806112518618505],
[-122.45530695988451, 37.806195761893825],
[-122.454600415883462, 37.806430130022392],
[-122.454483234784888, 37.806468999744823],
[-122.454353658700001, 37.806478701096999],
[-122.454308145719423, 37.806459540393945],
[-122.454293829263207, 37.806375996256122],
[-122.454085665791084, 37.806359530611644],
[-122.454069929877903, 37.806353610767474],
[-122.453815604080873, 37.806293271483817],
[-122.453295386032664, 37.806259311412973],
[-122.452781551105744, 37.806270567825713],
[-122.452438711570082, 37.806267316310901],
[-122.451653324871984, 37.806353109244483],
[-122.450906745259303, 37.80653233722969],
[-122.450459653590798, 37.806646175036533],
[-122.44991286747026, 37.806721142700994],
[-122.449819483247254, 37.806724746830461],
[-122.449720673642986, 37.806719513093618],
[-122.449631038513971, 37.806734042766898],
[-122.449554038474531, 37.806768278664137],
[-122.44947869660497, 37.806799740182214],
[-122.449399659671798, 37.806822335243758],
[-122.449304851007483, 37.806837636909691],
[-122.449171524916196, 37.806836407131136],
[-122.449109070409847, 37.806831258752986],
[-122.449048183710957, 37.806819903592029],
[-122.449010891791161, 37.806784123494651],
[-122.448891660899136, 37.806726348099637],
[-122.448806459828916, 37.806711961234221],
[-122.448728288255808, 37.806701578532227],
[-122.448565239272398, 37.806755090545202],
[-122.448529100304583, 37.806763241657009],
[-122.448455091339923, 37.806133486140737],
[-122.448455258275729, 37.806133277363898],
[-122.448323332142422, 37.805007750605469],
[-122.448321161555853, 37.804993824977359],
[-122.448279145759457, 37.80472422506687],
[-122.44824552349904, 37.804508484024247],
[-122.448240728857812, 37.804477717258706],
[-122.448240723025904, 37.804477679722268],
[-122.448245764546613, 37.8044754914729],
[-122.448316879890498, 37.804444627382082],
[-122.448814547024654, 37.804228638340902],
[-122.448954929708933, 37.80412855834809],
[-122.449124213448584, 37.804007874392056],
[-122.449253815658196, 37.803861977230383],
[-122.449388062152011, 37.803710849923448],
[-122.449495662264184, 37.803470319431604],
[-122.449583722697156, 37.803153095621241],
[-122.449583713807527, 37.803152915295549],
[-122.449565462756809, 37.802791419060213],
[-122.449536106109235, 37.802697377072583],
[-122.449460220896157, 37.80245428555321],
[-122.449178591741017, 37.802073857413127],
[-122.449043488821943, 37.801965383441527],
[-122.448802640091088, 37.801772003872607],
[-122.448359651469772, 37.801586782043685],
[-122.447921599691895, 37.801532283988202],
[-122.447857007904148, 37.801596177616553],
[-122.447819731578562, 37.801633051558142],
[-122.447819572978844, 37.801633208279924],
[-122.447802865090509, 37.801525678628579],
[-122.447614227653389, 37.80032479990944],
[-122.447613279369918, 37.80032370169468],
[-122.447466030932901, 37.799389886853575],
[-122.447400275900733, 37.798948048802856],
[-122.447341437979304, 37.798552685345861],
[-122.447327769221047, 37.798519415660031],
[-122.447303043858923, 37.798459232650295],
[-122.447209582420982, 37.797849561838987],
[-122.44715829626513, 37.797515005478481],
[-122.44715829625072, 37.79751500492933],
[-122.447014738232738, 37.796578510197754],
[-122.447014738218328, 37.796578509648619],
[-122.446928896449293, 37.796018515191513],
[-122.44687098056005, 37.795640691997477],
[-122.446751148304088, 37.794858932799087],
[-122.446727777275527, 37.794706465308671],
[-122.446727777261131, 37.794706464759514],
[-122.446587862952981, 37.793765120337646],
[-122.446446456540414, 37.792813716046261],
[-122.446446033268856, 37.792810866507708],
[-122.446299573716246, 37.791878694429421],
[-122.446299547924625, 37.791878529215651],
[-122.44720637942703, 37.791763091830468],
[-122.447679208068394, 37.79170289872647],
[-122.449367313308201, 37.791487980191171],
[-122.449385188501296, 37.791484927305568],
[-122.450995459060991, 37.791209906278311],
[-122.452035629818212, 37.790998907609811],
[-122.454248357567437, 37.79059310209788],
[-122.455878319348855, 37.790294143976332],
[-122.457498733292852, 37.789996912625632],
[-122.459011873160264, 37.789719335764374],
[-122.459028627866218, 37.789715983297555],
[-122.459250455476877, 37.789713291862398],
[-122.45947565027717, 37.789710559160014],
[-122.459781586189493, 37.789596250165474],
[-122.459925547070256, 37.789542753604124],
[-122.468653534340191, 37.787783523544832],
[-122.470990721149789, 37.787534455433345]
]
]
}
},
{
type: 'Feature',
properties: {OBJECTID: 4, ZIP_CODE: 94121, ID: 94121},
geometry: {
type: 'Polygon',
coordinates: [
[
[-122.504456509027335, 37.788067554312491],
[-122.504150949920984, 37.788096097763379],
[-122.504066815467581, 37.788120877294119],
[-122.504049145771674, 37.78810744254686],
[-122.503997231067004, 37.788107638193928],
[-122.503846231021797, 37.788091662877633],
[-122.503713944876083, 37.788063694207068],
[-122.503612889329972, 37.788038628655784],
[-122.503526395190363, 37.78804009845387],
[-122.503485137277139, 37.78805041389267],
[-122.503463545305024, 37.78801987747579],
[-122.503373498826377, 37.788017973822534],
[-122.503335534005146, 37.788022052592311],
[-122.503263415949803, 37.788043193399247],
[-122.503234378285072, 37.788057421563131],
[-122.503243398050046, 37.788071003120102],
[-122.503209152201507, 37.78808463302547],
[-122.503179577522019, 37.788078954832578],
[-122.503144887269229, 37.788076110778647],
[-122.503077958752755, 37.78809716302807],
[-122.503049013609541, 37.788114823274398],
[-122.503006581160705, 37.78814576070333],
[-122.502956321560973, 37.788143180813591],
[-122.502925535751373, 37.788156752131144],
[-122.502902751007483, 37.788146151342978],
[-122.502865053026014, 37.788095972678335],
[-122.502836115946863, 37.78804976589835],
[-122.502789020665148, 37.78803614434397],
[-122.502704311593945, 37.788039643712104],
[-122.502589076168022, 37.788066323379901],
[-122.502515190951499, 37.788086120259166],
[-122.502425496104195, 37.788097257971025],
[-122.502376106845503, 37.788126939838207],
[-122.502316846531585, 37.7881114644726],
[-122.502255070395776, 37.788131055545016],
[-122.502169528699341, 37.788103665363288],
[-122.502105689513968, 37.788110929794158],
[-122.50207398762231, 37.788154733004774],
[-122.502071249254328, 37.788181562090124],
[-122.501989944924048, 37.788182942633284],
[-122.501951813392949, 37.78818084312524],
[-122.501912664088508, 37.788140990459205],
[-122.501912016401619, 37.788116965280736],
[-122.501877326179624, 37.788114120853955],
[-122.501877973840479, 37.788138145483494],
[-122.501858399507697, 37.788182429188559],
[-122.501842192404723, 37.788223222019695],
[-122.501801304245816, 37.788247265660054],
[-122.501766151357245, 37.788227260005755],
[-122.501756965310037, 37.788207500503631],
[-122.50172600293584, 37.788150340007959],
[-122.501700517223497, 37.788167941185236],
[-122.50167957356264, 37.788161429621908],
[-122.501619212555269, 37.788169321478662],
[-122.501569767420492, 37.788196943730178],
[-122.501591358665465, 37.788227480492822],
[-122.501533078675976, 37.788248385310276],
[-122.501514596042369, 37.788204747707923],
[-122.50145942465268, 37.788212551659868],
[-122.501437657642668, 37.788239704012419],
[-122.501335150234794, 37.788224962263008],
[-122.501268313574613, 37.788249445888859],
[-122.50115878458611, 37.788295256277053],
[-122.501091780980232, 37.788313561975109],
[-122.501021937979715, 37.788290711431223],
[-122.501006184350814, 37.78828411139213],
[-122.50097195648992, 37.788298427073251],
[-122.500993621505359, 37.788331709648567],
[-122.500947376526028, 37.788349663239131],
[-122.500879097304491, 37.788320605139283],
[-122.500861336013799, 37.788303738053742],
[-122.500826830696198, 37.788307757577726],
[-122.500806349431429, 37.788318405959657],
[-122.500754452719278, 37.788319286610971],
[-122.500738328529678, 37.78829895802815],
[-122.500712935348687, 37.788319991115557],
[-122.500640723790397, 37.788337698187455],
[-122.500593831459696, 37.788331626454848],
[-122.500550140713713, 37.78831588602435],
[-122.500538567416584, 37.788335997845735],
[-122.50048939950284, 37.78837391630227],
[-122.500458095017024, 37.788368266503305],
[-122.500446429574566, 37.788384946179491],
[-122.50034045177307, 37.788434129242091],
[-122.500272801380206, 37.788428409551436],
[-122.500256870701349, 37.788479498553457],
[-122.500250772830086, 37.788574372083048],
[-122.500192399744307, 37.788591844106463],
[-122.500174472488098, 37.788568799078057],
[-122.500178293975864, 37.788517915512088],
[-122.500130319126384, 37.788535897847389],
[-122.500091521884229, 37.788509086399898],
[-122.500099172636652, 37.788471872673249],
[-122.500066212558522, 37.788468998362944],
[-122.50006658231419, 37.788482726609828],
[-122.500011040812936, 37.788476801362307],
[-122.499966794796208, 37.788440467945314],
[-122.499878115891249, 37.788489357153694],
[-122.499810631863213, 37.788489815307436],
[-122.499785570748472, 37.78852320387022],
[-122.499760324750355, 37.788549727891812],
[-122.499797151337432, 37.788567645255235],
[-122.499803450517931, 37.788608742793357],
[-122.49976162645244, 37.788662331112889],
[-122.499733393517658, 37.788642207768127],
[-122.499727335024716, 37.788610033760072],
[-122.49968724080243, 37.78866359271359],
[-122.499634371443463, 37.788692645687142],
[-122.499577562358439, 37.788703910220832],
[-122.499554630056736, 37.788687817377856],
[-122.499511356576448, 37.788623310977023],
[-122.499481164550005, 37.788530426400044],
[-122.499432590648397, 37.788461889419303],
[-122.499336411156918, 37.788425062960037],
[-122.499266771879846, 37.788409762065221],
[-122.499202877060384, 37.788414965914313],
[-122.499128103233858, 37.788401812217707],
[-122.499099500985864, 37.788367960195586],
[-122.499041638784547, 37.788340098176221],
[-122.498955421371278, 37.788351861015244],
[-122.498920128036829, 37.788390916780045],
[-122.498889600061332, 37.788414096736403],
[-122.498846352726645, 37.788414829911119],
[-122.498829249780883, 37.788358120749585],
[-122.498858133988094, 37.78827384858316],
[-122.49881028141921, 37.788232082242921],
[-122.498779365121052, 37.788240846950437],
[-122.498721638945739, 37.788282343161484],
[-122.498684745303493, 37.788326233159403],
[-122.498610415395817, 37.78832955335983],
[-122.498598336042235, 37.788266578082698],
[-122.498619439354101, 37.78821471490064],
[-122.498602392043921, 37.788160064708592],
[-122.498537684539031, 37.788135065438439],
[-122.498508608985759, 37.788147919585676],
[-122.498480069151427, 37.788180680090115],
[-122.498393075984339, 37.788163612611328],
[-122.498359007071954, 37.788119551978269],
[-122.498367465612489, 37.788047987710556],
[-122.498258002596998, 37.788031987711385],
[-122.498205083784299, 37.787930560386634],
[-122.498141496631646, 37.787882879514228],
[-122.498020127555392, 37.787874635204304],
[-122.497965657850202, 37.7879085217278],
[-122.497937733854386, 37.787835513791961],
[-122.497862794972676, 37.787816181447418],
[-122.497833152644503, 37.787872309616162],
[-122.497858996475657, 37.787932304773527],
[-122.497838976582202, 37.787960113577462],
[-122.497779058543074, 37.787984477979037],
[-122.497727525397508, 37.787934532426668],
[-122.4976806523715, 37.787929145955836],
[-122.497620549305267, 37.78794664601778],
[-122.497594065916346, 37.787927179270163],
[-122.49754290189, 37.78789096244769],
[-122.49750382929264, 37.787853853467084],
[-122.497544349339876, 37.787816083058736],
[-122.497526053110533, 37.787779309105126],
[-122.497500930399411, 37.787746084497506],
[-122.497517139436695, 37.787705292265386],
[-122.497507659501551, 37.787674549599402],
[-122.497485331532715, 37.787616555022737],
[-122.497458570647495, 37.787586791856477],
[-122.497406323956653, 37.787574629197884],
[-122.49735786900257, 37.787574763042187],
[-122.497315176016556, 37.787596088453697],
[-122.497275259657627, 37.787591957457558],
[-122.497216443565691, 37.787592953772126],
[-122.497168648080745, 37.787553245760044],
[-122.497138187607533, 37.787514617578381],
[-122.497106127216909, 37.787480823939255],
[-122.497044990964866, 37.787459883810421],
[-122.496999885071403, 37.787455840347057],
[-122.496923235404381, 37.787437223130333],
[-122.496894579157143, 37.787401311287425],
[-122.49685734707576, 37.787368291637833],
[-122.496811927818939, 37.787352579117055],
[-122.496751769988833, 37.787368019451996],
[-122.496728617227618, 37.787343688934776],
[-122.496685721170834, 37.787357463425209],
[-122.496639544906756, 37.787313607347343],
[-122.496583690806744, 37.787296011229486],
[-122.496547105206147, 37.787287016686854],
[-122.496516354783793, 37.787301958649365],
[-122.49646797383916, 37.787304838384266],
[-122.496443903661216, 37.787310739875238],
[-122.496383616604291, 37.787321374760424],
[-122.496337075877918, 37.787328343443079],
[-122.496276530804948, 37.787329368567015],
[-122.496247565545247, 37.787346340725328],
[-122.496197934785357, 37.787367096454552],
[-122.496141439524379, 37.787390028597343],
[-122.496086747911505, 37.787415677408667],
[-122.496068420456311, 37.787442083500181],
[-122.496016690354622, 37.787449139908034],
[-122.495972174940263, 37.787467062259353],
[-122.495951842506244, 37.787478615416269],
[-122.495939786703687, 37.787485465489738],
[-122.495905650481646, 37.787503211836551],
[-122.495879794980965, 37.787507083489736],
[-122.495820979283494, 37.78750807910243],
[-122.49579201419597, 37.787525051142431],
[-122.495771716907484, 37.787542562920031],
[-122.495716453167731, 37.787546932051697],
[-122.495690597288615, 37.78755080339463],
[-122.495618108578682, 37.787558210990248],
[-122.495602871400223, 37.787570830192877],
[-122.495572047584162, 37.787583026463722],
[-122.495539604212951, 37.787599370571847],
[-122.495514135330879, 37.787617657121146],
[-122.495483182354334, 37.787625048105859],
[-122.495437195053938, 37.787652609233902],
[-122.495395954684781, 37.787663608544698],
[-122.495370190617706, 37.787670911683094],
[-122.495333314088882, 37.787715487058371],
[-122.495282044474621, 37.787739703822119],
[-122.495193913200154, 37.787744628911668],
[-122.495147390885393, 37.787752283545302],
[-122.495107603658113, 37.787752956804084],
[-122.495081894872186, 37.787762319709344],
[-122.495049506978233, 37.787780722682484],
[-122.494942531016747, 37.787792833838672],
[-122.494936422880045, 37.787823153702263],
[-122.49487624549289, 37.787837906657984],
[-122.494850021018962, 37.787828049271276],
[-122.494803406419749, 37.787832271634258],
[-122.494754880927445, 37.787894212652994],
[-122.494747761584406, 37.787951332156055],
[-122.494723178126165, 37.788002566741419],
[-122.494687204176572, 37.788080776838861],
[-122.494700862218465, 37.788138231843071],
[-122.494641953469724, 37.788135794738686],
[-122.494554921507401, 37.788052798168373],
[-122.494515868416002, 37.788016374906285],
[-122.4945350783522, 37.787958364153376],
[-122.494513047598829, 37.787911351574522],
[-122.494517883781597, 37.787833668269109],
[-122.494492854234224, 37.787803875161934],
[-122.494463538439888, 37.787807804761236],
[-122.494432676774579, 37.787818627891369],
[-122.494408993418205, 37.787838943934148],
[-122.494413448366132, 37.787875952476604],
[-122.494396887310245, 37.787903702167263],
[-122.49434981175834, 37.787890763675087],
[-122.494353194757167, 37.787823406042577],
[-122.494335895597104, 37.78782369865479],
[-122.49430957902598, 37.787810409012593],
[-122.494266331651687, 37.787811140513561],
[-122.49416034840992, 37.787795764612234],
[-122.494129594818148, 37.787746152815927],
[-122.494106737724252, 37.787732804619111],
[-122.494080878906914, 37.78767212220432],
[-122.494005791021607, 37.787582742860096],
[-122.49397989817011, 37.78758524069908],
[-122.493937148914341, 37.787604505606133],
[-122.49390314117592, 37.787627056362858],
[-122.493853140270886, 37.787634082573049],
[-122.493776804515477, 37.787627132573334],
[-122.493743568607016, 37.787613959813378],
[-122.493738061048077, 37.787613306047696],
[-122.493682801772195, 37.787606746485388],
[-122.493586205100101, 37.787618680905503],
[-122.493496509486093, 37.787629812101237],
[-122.493461856653141, 37.787628337503875],
[-122.493419162517711, 37.787649661504638],
[-122.493384362282285, 37.787642696015901],
[-122.493336275791464, 37.787656556752133],
[-122.493293636533849, 37.787679939994845],
[-122.493241832649318, 37.78768424947036],
[-122.493193617141287, 37.7876933054322],
[-122.493182042295089, 37.787713416527986],
[-122.493127220447846, 37.787734258699906],
[-122.493090653466112, 37.787725949238315],
[-122.493056424336842, 37.787740262623288],
[-122.493004582859115, 37.787743199151691],
[-122.492969929990394, 37.787741724684366],
[-122.492955061461288, 37.787768072078173],
[-122.492913931184304, 37.787783188809769],
[-122.492855170492433, 37.787786242224989],
[-122.492860417128782, 37.787852767193691],
[-122.492830071355925, 37.787882810136729],
[-122.492771255320051, 37.787883804228279],
[-122.492769800087729, 37.787829576197716],
[-122.492735920840914, 37.787856931882516],
[-122.49268687433684, 37.78777054473629],
[-122.492679439061774, 37.787751441716487],
[-122.492627892968244, 37.787765361179233],
[-122.492565672509713, 37.787768472646512],
[-122.492506929887313, 37.787772212321414],
[-122.492446513322577, 37.787778040470201],
[-122.492381054094224, 37.787789447708391],
[-122.492305602297094, 37.78781544526975],
[-122.492216274554934, 37.787840303764064],
[-122.492178548608294, 37.787853302497936],
[-122.492118555140365, 37.787874918314273],
[-122.492079412316457, 37.787899615509929],
[-122.492057605141056, 37.787925393277668],
[-122.491876207129678, 37.788001938945712],
[-122.491812827679937, 37.788026359033061],
[-122.491772083659185, 37.788055890066879],
[-122.491719745560601, 37.788104846164785],
[-122.491654323091851, 37.788117625573307],
[-122.491646041850075, 37.7881315002275],
[-122.491614039214184, 37.788164317512276],
[-122.491501375628616, 37.788222533071625],
[-122.491447583651606, 37.788217260993214],
[-122.491404851437281, 37.788237211413325],
[-122.491281422016286, 37.788281187084038],
[-122.491218428658357, 37.788320021552913],
[-122.491190014384841, 37.788357585284182],
[-122.491137087049111, 37.788384575161345],
[-122.491061983912687, 37.788423614320799],
[-122.490946338544006, 37.788499734606098],
[-122.490859530409139, 37.788554079246722],
[-122.490843207112334, 37.788590751992317],
[-122.490818381167585, 37.788633062206074],
[-122.490696422877051, 37.78873195173508],
[-122.490605105739689, 37.78881178134435],
[-122.490527498874997, 37.788886572527467],
[-122.490413287423564, 37.788951680519325],
[-122.490407103746506, 37.78897925443183],
[-122.490354139232181, 37.78900487109366],
[-122.490306437661019, 37.789033145843504],
[-122.490251889996458, 37.789064283086574],
[-122.490252239550742, 37.789077325209703],
[-122.490220015123754, 37.789101904980171],
[-122.490046709329732, 37.789222262378196],
[-122.489918657120555, 37.789352156846768],
[-122.489828681483118, 37.789482095324693],
[-122.489700630133797, 37.789482882790033],
[-122.489592566089883, 37.789454489856745],
[-122.489300670464104, 37.789412030065776],
[-122.489191447548507, 37.789340391834585],
[-122.488990889258972, 37.789283342302205],
[-122.48848285911852, 37.789442306771541],
[-122.488100013149761, 37.789428847345718],
[-122.488028309941384, 37.789530320047362],
[-122.487863707315668, 37.789588034282978],
[-122.487736999824023, 37.789574375465854],
[-122.487584402186499, 37.78949866010057],
[-122.487564674856429, 37.789472896340307],
[-122.487563664349921, 37.78943514280558],
[-122.487464302267156, 37.789473215069947],
[-122.48744759425297, 37.789430918694578],
[-122.487369692668253, 37.789430171560369],
[-122.487296628705792, 37.789480848156245],
[-122.487120114954962, 37.789610869819036],
[-122.487051777894393, 37.789708851205745],
[-122.4869376141597, 37.789840568479555],
[-122.486809390152729, 37.789964281705743],
[-122.486730121786451, 37.790041845235905],
[-122.486553036429143, 37.790150586495734],
[-122.486429009493079, 37.790237144752382],
[-122.486335272657072, 37.790356155991162],
[-122.486245109599949, 37.790414674064778],
[-122.486236878145661, 37.790495160989501],
[-122.486221786002261, 37.790513270391187],
[-122.485095392905748, 37.790094746949087],
[-122.484316748868366, 37.789805424389257],
[-122.484214987310182, 37.789767611906584],
[-122.484071292407094, 37.789571562974182],
[-122.484019551359538, 37.788671434543716],
[-122.483911841345289, 37.78771598691722],
[-122.483910676418589, 37.787705653817092],
[-122.481375583614479, 37.787198893328011],
[-122.479861181106074, 37.787037199203986],
[-122.478707989065171, 37.78691405835],
[-122.477707716230128, 37.786939475526701],
[-122.476637454822679, 37.786966661899442],
[-122.476572244768761, 37.786128658440397],
[-122.476575166016133, 37.786128513873635],
[-122.476575148769683, 37.786128282045887],
[-122.476436803741322, 37.784271125057622],
[-122.476306551695615, 37.782405954593735],
[-122.476169188584777, 37.78047585000003],
[-122.476025278884237, 37.778553841183147],
[-122.475888270951586, 37.776692974324831],
[-122.475750968701433, 37.774828017958995],
[-122.475613644972711, 37.772962670675476],
[-122.475613625589148, 37.772962410314676],
[-122.476694205661246, 37.772912858094969],
[-122.477069824745385, 37.772895630732648],
[-122.477766947236773, 37.772863655180586],
[-122.478836951668541, 37.772814568639937],
[-122.47883762078969, 37.772814536530767],
[-122.478848715172788, 37.772814028898644],
[-122.479904580478745, 37.772765580938412],
[-122.480978851643016, 37.772716079930653],
[-122.481947659007389, 37.77267180789157],
[-122.482048961146063, 37.772667157434498],
[-122.483119121668807, 37.772618024364625],
[-122.483119139145145, 37.772618264154566],
[-122.484194219251819, 37.772569315707138],
[-122.484194201052048, 37.772569061919981],
[-122.485152053625171, 37.772525429693054],
[-122.485261332297384, 37.772520422109807],
[-122.485262022888591, 37.772520390701253],
[-122.486334053115812, 37.772471462244795],
[-122.486678527930636, 37.772455879683093],
[-122.487398288926627, 37.772423078182946],
[-122.487398306387334, 37.772423316873983],
[-122.487399123482518, 37.77242327974907],
[-122.488470602075608, 37.772374307055074],
[-122.488471323394165, 37.772374169626119],
[-122.489539486385709, 37.772325343661755],
[-122.49061689309373, 37.772276279654356],
[-122.490617013718605, 37.772276274046327],
[-122.491688031137627, 37.772227293012065],
[-122.492761363210761, 37.772178246338406],
[-122.493316307377469, 37.772153213706439],
[-122.493832479293559, 37.77212966191987],
[-122.493832498174271, 37.772129926957135],
[-122.493833180817205, 37.772129896182108],
[-122.494902921073546, 37.772080894286702],
[-122.494903299427449, 37.772080795311069],
[-122.495971990075716, 37.772031913255347],
[-122.497046812008847, 37.771982808835908],
[-122.497412740335307, 37.771966238858134],
[-122.498113882732468, 37.771934487449556],
[-122.499183042122894, 37.771885392463027],
[-122.500200291234236, 37.771838923903807],
[-122.500257545202601, 37.771836308607973],
[-122.501327700223527, 37.771787274197017],
[-122.502399595949868, 37.771738155153713],
[-122.502399732131124, 37.771738148994636],
[-122.503472688521128, 37.771689380410749],
[-122.503472690942445, 37.771689380369601],
[-122.504544396347384, 37.771640577944709],
[-122.505611140464779, 37.771591516134151],
[-122.50668530503512, 37.771542352938617],
[-122.506685577396198, 37.771542340610623],
[-122.506991972993774, 37.771528822999358],
[-122.507750664399296, 37.771495034126787],
[-122.507750665782908, 37.771495034103232],
[-122.508780633594597, 37.771447480819759],
[-122.508823169175031, 37.771445503888728],
[-122.508823330922013, 37.771445496187766],
[-122.508867990729883, 37.771443447055226],
[-122.509894749698645, 37.771396032095495],
[-122.509894781266311, 37.771396329054475],
[-122.511053819156686, 37.771347546731022],
[-122.511055400217217, 37.771347479926334],
[-122.512571364940968, 37.771283657974607],
[-122.51313192303401, 37.771260053409627],
[-122.51314077587368, 37.771331323581165],
[-122.513103639776702, 37.771429475690731],
[-122.513116974838326, 37.771538439951165],
[-122.5131111559662, 37.771706791559524],
[-122.513101727800077, 37.771741976505247],
[-122.513108516285712, 37.771800920539754],
[-122.513097415135022, 37.771902061732895],
[-122.513158379126494, 37.77223615155534],
[-122.513150048202618, 37.772247968474822],
[-122.513145175599931, 37.772259726057939],
[-122.513142070416649, 37.772272827219133],
[-122.513140694405962, 37.772285899124284],
[-122.513142777404809, 37.77229891140734],
[-122.51314831943732, 37.772311864891819],
[-122.513155553774638, 37.772323415987366],
[-122.513162806726825, 37.772335653782996],
[-122.513171807785298, 37.772348547918142],
[-122.513179470052052, 37.772375886809904],
[-122.513181590285754, 37.772390272493183],
[-122.513180232870297, 37.772404030275354],
[-122.513177164205956, 37.772418504300951],
[-122.513164035088622, 37.772444825057953],
[-122.513153956021, 37.772455985088065],
[-122.513145624725894, 37.77246780201267],
[-122.513139041542303, 37.772480275551658],
[-122.513134206485844, 37.772493406254469],
[-122.513132830469672, 37.772506478159016],
[-122.513133202560653, 37.772520206404018],
[-122.513137015097556, 37.772533189699409],
[-122.513142557139105, 37.772546142909071],
[-122.513149791498321, 37.772557694004483],
[-122.513128650263695, 37.772862969521874],
[-122.513143974877181, 37.772917647305441],
[-122.513134546565453, 37.772952831971672],
[-122.513140759176039, 37.773054363934854],
[-122.513127629925961, 37.773080684410282],
[-122.513121083909837, 37.773094531347873],
[-122.513117996938973, 37.773108318663766],
[-122.513113180104355, 37.773122136070647],
[-122.513110502783931, 37.773151024750284],
[-122.513109145348821, 37.773164782804365],
[-122.513109926760848, 37.773193612966814],
[-122.513112046989562, 37.773207998100119],
[-122.513115877809639, 37.773221667551859],
[-122.513119727927929, 37.77323602341751],
[-122.513123558750877, 37.773249692868944],
[-122.513130848990954, 37.773263303241755],
[-122.513136372841529, 37.773275570567371],
[-122.513136837962776, 37.773292730939929],
[-122.513139032281771, 37.773309862056486],
[-122.513139962541018, 37.773344183350439],
[-122.513137434071865, 37.77337856371112],
[-122.513137899208886, 37.773395724632501],
[-122.51313663480029, 37.773412914815644],
[-122.513133622247153, 37.773429448109219],
[-122.513132357829548, 37.773446638017631],
[-122.513129363533338, 37.773463857742755],
[-122.513124956674076, 37.773492776231812],
[-122.513123636099678, 37.773507907142864],
[-122.513125756700802, 37.773522292818349],
[-122.513127895547086, 37.773537364376381],
[-122.513130108829742, 37.773555182186904],
[-122.51313457258631, 37.77359218983559],
[-122.513137102897502, 37.773685543750098],
[-122.51313464849045, 37.773722669817865],
[-122.513133402680765, 37.77374054642582],
[-122.513130445590789, 37.773759139276294],
[-122.513129218723165, 37.773777702029449],
[-122.513126261969134, 37.773796294599215],
[-122.513121575665878, 37.773814916705028],
[-122.513118599957409, 37.773832822854594],
[-122.513113913995852, 37.773851444954062],
[-122.513110938637425, 37.773869351371971],
[-122.513106251972374, 37.773887973208282],
[-122.513098199929146, 37.77391008650784],
[-122.513115558504083, 37.774550522030069],
[-122.513135161617555, 37.77469921031755],
[-122.513164585532962, 37.774890995995399],
[-122.513170483591551, 37.775108592933201],
[-122.513148799533084, 37.77520236034195],
[-122.513166877896921, 37.775294761967629],
[-122.513138108336719, 37.775382469681844],
[-122.513154511511672, 37.775413093012311],
[-122.513118656446565, 37.775494741304421],
[-122.513116560550898, 37.775991978980805],
[-122.513220716743945, 37.77664260637399],
[-122.513262136135666, 37.776766199546913],
[-122.513273147342474, 37.776853227885702],
[-122.513301250635152, 37.776996277263876],
[-122.513336088063554, 37.777196211308791],
[-122.513350113009579, 37.777330573444466],
[-122.513418927986152, 37.77744339753194],
[-122.513485622738756, 37.777541836186963],
[-122.513511493535475, 37.777602514461641],
[-122.513605787519069, 37.777633867571893],
[-122.513789576977686, 37.777711077145469],
[-122.513970390041706, 37.777742325491253],
[-122.514130469394843, 37.777902348781886],
[-122.514271487815051, 37.77812519117407],
[-122.514413862528215, 37.778270408245596],
[-122.514604595643718, 37.77847591891544],
[-122.51462964838835, 37.778506394234036],
[-122.514661065627067, 37.778643892998048],
[-122.514636184118331, 37.778747329407956],
[-122.514564452996041, 37.778846072735902],
[-122.514578405995934, 37.778977688986053],
[-122.51449838155861, 37.779153489214309],
[-122.5144938833634, 37.779242842682805],
[-122.514567855611702, 37.77941807161681],
[-122.514670725915678, 37.779446530659044],
[-122.514854558211539, 37.779525111397355],
[-122.514948079566921, 37.779719234525949],
[-122.514897941861832, 37.779848512679017],
[-122.514749765647835, 37.779872333834206],
[-122.514641072918508, 37.779820625636908],
[-122.514565266573783, 37.77989677577483],
[-122.514533951466817, 37.780082044762075],
[-122.514511340895595, 37.780269225221183],
[-122.514474054726847, 37.780425753002312],
[-122.51446673230646, 37.780602371059075],
[-122.514648527113849, 37.780860913612862],
[-122.51472341591213, 37.781133644263413],
[-122.514586047991969, 37.781300809991649],
[-122.514468426928062, 37.781302819849991],
[-122.514292998946104, 37.781279034300063],
[-122.514303621052633, 37.781351647553429],
[-122.514284968188448, 37.781429568185636],
[-122.514242655950966, 37.781464628517519],
[-122.513867881152649, 37.781428452669296],
[-122.513760174171992, 37.78147699096975],
[-122.513883322187127, 37.781614982927096],
[-122.513812238767187, 37.78173775061245],
[-122.513697000270085, 37.781891489394212],
[-122.513670014693673, 37.78198122658408],
[-122.513522169917209, 37.782081269425682],
[-122.513466336763443, 37.782192101792845],
[-122.513546762127802, 37.782286185176545],
[-122.513589561336119, 37.782396706497991],
[-122.513504004159799, 37.782432504856651],
[-122.51345966482603, 37.782520478406092],
[-122.513490615272289, 37.782576949453883],
[-122.51349907897729, 37.782633804536587],
[-122.513499154475824, 37.782700417272132],
[-122.513444212427984, 37.782780331251374],
[-122.513311970586869, 37.782817613200059],
[-122.513176844047379, 37.782748499450129],
[-122.513099674895386, 37.782774539876293],
[-122.513082211268937, 37.782896391754747],
[-122.512985625061674, 37.783036075867919],
[-122.513019551763222, 37.783138507955194],
[-122.513026396706579, 37.783199511429288],
[-122.512878567398928, 37.783236372275823],
[-122.512854035372925, 37.783352850568228],
[-122.512805434943459, 37.783475233699562],
[-122.512705462306386, 37.783553855572684],
[-122.512518627902452, 37.783620225547125],
[-122.512466567525493, 37.783742667306889],
[-122.512644903191074, 37.783873537806549],
[-122.512713964283492, 37.783931418677646],
[-122.512652381073622, 37.784021746473734],
[-122.512681006779928, 37.784120148680003],
[-122.512565948104239, 37.784153016218092],
[-122.512295468592697, 37.783942683042248],
[-122.512111442218099, 37.7837933668308],
[-122.511916645881882, 37.783949148187006],
[-122.511936379260646, 37.784102641671865],
[-122.512002036912364, 37.7841626409828],
[-122.51201098319315, 37.784237343198853],
[-122.511976089219957, 37.784290817818842],
[-122.511911287292179, 37.784326260764388],
[-122.511796674312308, 37.784311734732256],
[-122.511643280924901, 37.784334954352396],
[-122.511486279442096, 37.784288874386938],
[-122.511300968574147, 37.78428379521467],
[-122.511334223422679, 37.784425383212891],
[-122.511306545033449, 37.784553589399493],
[-122.511229614678896, 37.784588552121491],
[-122.51102434727656, 37.784485608568794],
[-122.510971002039966, 37.784496819600761],
[-122.510838401528204, 37.784584923981406],
[-122.510747296660981, 37.784671633775218],
[-122.510491862112929, 37.784697278857706],
[-122.510370776300974, 37.784699343616424],
[-122.510236724687886, 37.784733906185757],
[-122.510168389422006, 37.784702794445394],
[-122.510020323714343, 37.784723420804994],
[-122.509994254968106, 37.784727052267002],
[-122.509808028924709, 37.784816069670107],
[-122.509716922917022, 37.784902778658349],
[-122.509665899527562, 37.784999792217178],
[-122.509574233553352, 37.78512977535155],
[-122.509483405510977, 37.78522678080374],
[-122.50935080157798, 37.785314883231258],
[-122.509270075574662, 37.785337547981477],
[-122.509233168789549, 37.785444621876991],
[-122.509117710773396, 37.785590805131108],
[-122.508796514633275, 37.785744614237508],
[-122.508661532747013, 37.785744853745925],
[-122.508565980602214, 37.785795240243836],
[-122.508486275275231, 37.785855657828165],
[-122.50845217664569, 37.785938647661681],
[-122.508258558155333, 37.786074486851589],
[-122.50824179847983, 37.786094687819457],
[-122.508218230136194, 37.78611912520401],
[-122.508132741023516, 37.786157665329803],
[-122.508102962554631, 37.786144437693665],
[-122.508035220497703, 37.78613529033418],
[-122.507963402235234, 37.786167416830274],
[-122.507918608664951, 37.786238914034136],
[-122.507884921314982, 37.786273138055307],
[-122.507810998339579, 37.786355432403496],
[-122.507791149628716, 37.786389420730835],
[-122.507786702460081, 37.786416966109108],
[-122.507753742643061, 37.786414093677742],
[-122.507723143657557, 37.786434530234523],
[-122.507686905785704, 37.786502447942446],
[-122.50771513615085, 37.786586436657288],
[-122.507634122264022, 37.786726537606768],
[-122.507529970492527, 37.786842996798164],
[-122.507416802174745, 37.786882007667536],
[-122.507337150418977, 37.786944484013162],
[-122.507251469686537, 37.787040025961154],
[-122.50719904571541, 37.787149423517022],
[-122.507107186903028, 37.787272540712486],
[-122.507053654233644, 37.787276885429115],
[-122.506971891727119, 37.787453396158277],
[-122.506896872053431, 37.78749519083452],
[-122.50673936089315, 37.787494438084011],
[-122.506717248362293, 37.787444682355584],
[-122.506653688773341, 37.787462245895419],
[-122.506526049480186, 37.787478152978885],
[-122.506492546406875, 37.787519241120947],
[-122.506427084531083, 37.787594522862221],
[-122.506343785965981, 37.787650192878154],
[-122.506284872420196, 37.787711628562818],
[-122.506271997783998, 37.787747558158287],
[-122.506258863502353, 37.787773877799495],
[-122.50624035413243, 37.787793421492793],
[-122.506219873800518, 37.787804071365088],
[-122.506177628287418, 37.787841873914068],
[-122.506131292484596, 37.787856397132735],
[-122.506163876746712, 37.787909408764172],
[-122.506122372558949, 37.787974668305665],
[-122.506121008614969, 37.788052293211784],
[-122.506089600492331, 37.788170947004069],
[-122.506052098981115, 37.788192187283286],
[-122.505852340805589, 37.788229236102978],
[-122.505747263058424, 37.788247505451196],
[-122.505657587040744, 37.788259332046266],
[-122.505605226952582, 37.788243054476361],
[-122.505520554840288, 37.788247928168715],
[-122.505423328958457, 37.788236533825454],
[-122.505330267621474, 37.78825116471306],
[-122.505202440987361, 37.788260206114757],
[-122.505107748523827, 37.788214431400775],
[-122.505021260444238, 37.788152035322256],
[-122.50498134335804, 37.788147906935059],
[-122.504941407743146, 37.788143092108974],
[-122.504896245414301, 37.788136992665024],
[-122.504877161086682, 37.788135256957062],
[-122.504859843370596, 37.788134864962309],
[-122.504835625333357, 37.788135276762382],
[-122.504801138826153, 37.7881399833256],
[-122.504785514269201, 37.788138188774688],
[-122.504771508408268, 37.788132246255898],
[-122.504759158308161, 37.788123528620481],
[-122.5047502309164, 37.788113379306509],
[-122.504739555111996, 37.788102572979582],
[-122.504727204674595, 37.788093855346673],
[-122.504711432227211, 37.788086569376937],
[-122.504695715029484, 37.788081342687157],
[-122.504680053426, 37.788078175271465],
[-122.50466269900177, 37.788076410116517],
[-122.50464541869988, 37.788077390660611],
[-122.504626408521617, 37.788078400888217],
[-122.504609090805303, 37.788078008307494],
[-122.504591755258659, 37.788076929561612],
[-122.504576093667978, 37.788073762406697],
[-122.504558683651112, 37.788069937685613],
[-122.504543003526479, 37.788066083826294],
[-122.504525593174549, 37.788062259380773],
[-122.504508220574564, 37.788059807771766],
[-122.50449088434911, 37.788058729297397],
[-122.504468396217547, 37.788059111612547],
[-122.504456509027335, 37.788067554312491]
]
]
}
},
{
type: 'Feature',
properties: {OBJECTID: 5, ZIP_CODE: 94118, ID: 94118},
geometry: {
type: 'Polygon',
coordinates: [
[
[-122.448885763577039, 37.778388598994987],
[-122.449767079183658, 37.778277008331997],
[-122.450654812483819, 37.778164598609756],
[-122.450826415883952, 37.778142868140662],
[-122.451543139139602, 37.778052106408275],
[-122.452431111623397, 37.777939652339285],
[-122.453384996187339, 37.777826863341367],
[-122.45318832797058, 37.776853425180988],
[-122.452963825070867, 37.775750129254348],
[-122.452810237317621, 37.774995318605924],
[-122.453003330637316, 37.774970754669006],
[-122.45468264773983, 37.77475548474694],
[-122.454683295611602, 37.774755406979118],
[-122.455033749574639, 37.77471323536281],
[-122.45525254468275, 37.774686906456331],
[-122.455898178089939, 37.774604132119862],
[-122.456283639851293, 37.774554711848936],
[-122.456283671603558, 37.774554866249353],
[-122.456283917173579, 37.774554834704738],
[-122.457134751103212, 37.774454490912483],
[-122.458371099123696, 37.774308895694055],
[-122.458795325509186, 37.774254885425997],
[-122.459486118442314, 37.77416693399686],
[-122.459486145343419, 37.77416729779403],
[-122.459486938645284, 37.774167197254911],
[-122.460552700773292, 37.774031358657659],
[-122.460552661960989, 37.774031133779268],
[-122.461619755154771, 37.7738952534419],
[-122.461619775372085, 37.773895534117642],
[-122.461620188227315, 37.77389548164836],
[-122.462535340858068, 37.773778657528119],
[-122.462683796526321, 37.773759751788596],
[-122.463749210177951, 37.773624065149079],
[-122.464811670328331, 37.773488744378348],
[-122.465331676538511, 37.773422509669793],
[-122.465883163277454, 37.773398204721545],
[-122.466373346760548, 37.773376599548058],
[-122.466951728424362, 37.773351356945881],
[-122.466952500298319, 37.773351323464517],
[-122.468023916207073, 37.773303833556405],
[-122.468348575135167, 37.773289518371953],
[-122.469092496140973, 37.773256712542192],
[-122.469517084069324, 37.773237987003441],
[-122.470162692059887, 37.773209510586071],
[-122.470162712316579, 37.773209791534974],
[-122.471240089434815, 37.773162280380667],
[-122.47124006836178, 37.773161981865066],
[-122.471762122569857, 37.773138947752848],
[-122.472219951938214, 37.773117969260745],
[-122.472297341321692, 37.773114423074823],
[-122.473427836194134, 37.773062613687692],
[-122.473737577092777, 37.773048416620476],
[-122.474550910293516, 37.773011133644289],
[-122.474550931211951, 37.773011425844139],
[-122.47455168367884, 37.773011391539193],
[-122.475612802305008, 37.772962709520556],
[-122.475613644972711, 37.772962670675476],
[-122.475750968701433, 37.774828017958995],
[-122.475888270951586, 37.776692974324831],
[-122.476025278884237, 37.778553841183147],
[-122.476169188584777, 37.78047585000003],
[-122.476306551695615, 37.782405954593735],
[-122.476436803741322, 37.784271125057622],
[-122.476575148769683, 37.786128282045887],
[-122.476575166016133, 37.786128513873635],
[-122.476572244768761, 37.786128658440397],
[-122.476637454822679, 37.786966661899442],
[-122.47616220885665, 37.786978730627588],
[-122.475567725323828, 37.787005248954515],
[-122.475136959985235, 37.787024462123846],
[-122.474584006514732, 37.787049123020516],
[-122.474432824368861, 37.787072820298278],
[-122.473333621918172, 37.787245111436654],
[-122.473316434470121, 37.787247805418339],
[-122.472782224474642, 37.787331534391747],
[-122.47254342327507, 37.787368961705944],
[-122.472401902490546, 37.787384046501884],
[-122.472290534181823, 37.787395917162272],
[-122.468653534340191, 37.787783523544832],
[-122.466942641213976, 37.788133153852705],
[-122.465882841138949, 37.788349715761562],
[-122.4648365613821, 37.788563504283978],
[-122.463771243725489, 37.788781172337565],
[-122.459781586189493, 37.789596250165474],
[-122.45947565027717, 37.789710559160014],
[-122.459250455476877, 37.789713291862398],
[-122.459028627866218, 37.789715983297555],
[-122.459011873160264, 37.789719335764374],
[-122.457498733292852, 37.789996912625632],
[-122.455878319348855, 37.790294143976332],
[-122.454248357567437, 37.79059310209788],
[-122.452035629818212, 37.790998907609811],
[-122.450995459060991, 37.791209906278311],
[-122.449385188501296, 37.791484927305568],
[-122.449367313308201, 37.791487980191171],
[-122.449189583391288, 37.790608108274284],
[-122.449011564525605, 37.789726786022129],
[-122.448835781299294, 37.788856511426609],
[-122.448656220796209, 37.787977164570449],
[-122.4469741664482, 37.788186460801001],
[-122.446792779960703, 37.787261853518181],
[-122.446610465639836, 37.786302298311156],
[-122.446738337622591, 37.786243163870765],
[-122.446849274413296, 37.786186897081585],
[-122.447533801639068, 37.785411415165207],
[-122.447605133356163, 37.785275579171099],
[-122.447621599012791, 37.785194684567394],
[-122.447620107068687, 37.785083635258417],
[-122.447578549915917, 37.784998355250835],
[-122.447549635601661, 37.784906798974511],
[-122.447149436147441, 37.783030677550911],
[-122.447173033991248, 37.782710075581413],
[-122.447225622636566, 37.782575775503396],
[-122.447283893261542, 37.782434393634787],
[-122.447301513844337, 37.78239164221629],
[-122.447450898997985, 37.782195217632704],
[-122.447637300982407, 37.781719177617617],
[-122.447655108274333, 37.781537309189886],
[-122.447576361567485, 37.781175778551805],
[-122.447517982733274, 37.781069510753063],
[-122.447351927163439, 37.780152061280916],
[-122.447039806751391, 37.778622307248391],
[-122.447997721370214, 37.778501033647089],
[-122.448879206948348, 37.778389428728616],
[-122.448885763577039, 37.778388598994987]
]
]
}
},
{
type: 'Feature',
properties: {OBJECTID: 6, ZIP_CODE: 94123, ID: 94123},
geometry: {
type: 'Polygon',
coordinates: [
[
[-122.438402484723895, 37.794806973138577],
[-122.440045216960385, 37.794597761146619],
[-122.440868123190498, 37.794493055920753],
[-122.440870170501768, 37.794492795601883],
[-122.441712771485612, 37.794385578392699],
[-122.443384198876302, 37.794172877898092],
[-122.445035345747925, 37.79396273368863],
[-122.446587034424141, 37.793765298555968],
[-122.446446456540414, 37.792813716046261],
[-122.446587862952981, 37.793765120337646],
[-122.446727777261131, 37.794706464759514],
[-122.446727777275527, 37.794706465308671],
[-122.446751148304088, 37.794858932799087],
[-122.44687098056005, 37.795640691997477],
[-122.446928896449293, 37.796018515191513],
[-122.447014738218328, 37.796578509648619],
[-122.447014738232738, 37.796578510197754],
[-122.44715829625072, 37.79751500492933],
[-122.44715829626513, 37.797515005478481],
[-122.447209582420982, 37.797849561838987],
[-122.447303043858923, 37.798459232650295],
[-122.447327769221047, 37.798519415660031],
[-122.447341437979304, 37.798552685345861],
[-122.447400275900733, 37.798948048802856],
[-122.447466030932901, 37.799389886853575],
[-122.447613279369918, 37.80032370169468],
[-122.447614227653389, 37.80032479990944],
[-122.447802865090509, 37.801525678628579],
[-122.447819572978844, 37.801633208279924],
[-122.447819731578562, 37.801633051558142],
[-122.447857007904148, 37.801596177616553],
[-122.447921599691895, 37.801532283988202],
[-122.448359651469772, 37.801586782043685],
[-122.448802640091088, 37.801772003872607],
[-122.449043488821943, 37.801965383441527],
[-122.449178591741017, 37.802073857413127],
[-122.449460220896157, 37.80245428555321],
[-122.449536106109235, 37.802697377072583],
[-122.449565462756809, 37.802791419060213],
[-122.449583713807527, 37.803152915295549],
[-122.449583722697156, 37.803153095621241],
[-122.449495662264184, 37.803470319431604],
[-122.449388062152011, 37.803710849923448],
[-122.449253815658196, 37.803861977230383],
[-122.449124213448584, 37.804007874392056],
[-122.448954929708933, 37.80412855834809],
[-122.448814547024654, 37.804228638340902],
[-122.448316879890498, 37.804444627382082],
[-122.448245764546613, 37.8044754914729],
[-122.448240723025904, 37.804477679722268],
[-122.448240728857812, 37.804477717258706],
[-122.44824552349904, 37.804508484024247],
[-122.448279145759457, 37.80472422506687],
[-122.448321161555853, 37.804993824977359],
[-122.448323332142422, 37.805007750605469],
[-122.448455258275729, 37.806133277363898],
[-122.448456716038393, 37.806145711376217],
[-122.448529100304583, 37.806763241657009],
[-122.448398315024306, 37.806792871575105],
[-122.448372486009177, 37.806798105392311],
[-122.448348405000459, 37.806803997055574],
[-122.44832261235274, 37.806810603719661],
[-122.448274523063262, 37.806825132736471],
[-122.448250514438882, 37.806833770101044],
[-122.448204281209826, 37.806853075532878],
[-122.448182039290586, 37.806863057432189],
[-122.448159833037835, 37.806874411921982],
[-122.448139357121818, 37.80688573782485],
[-122.448117186873532, 37.806898464895561],
[-122.448103560271292, 37.806906930735266],
[-122.447833857922845, 37.807052164926837],
[-122.447528276286675, 37.807250818574119],
[-122.447180260711605, 37.80747705551984],
[-122.446637954280746, 37.807525151443585],
[-122.446476742583258, 37.807516824572637],
[-122.445255735074412, 37.807626931568663],
[-122.444832951299077, 37.807611928844082],
[-122.444812115030089, 37.807609525524043],
[-122.444789548054757, 37.807607150739592],
[-122.443882698723485, 37.807700913966812],
[-122.443762319418525, 37.807713359922936],
[-122.443684632386478, 37.807721507559208],
[-122.442739197031372, 37.807965235732532],
[-122.442711389346584, 37.807972404225552],
[-122.442625660786931, 37.808004032657479],
[-122.442524054141913, 37.808024247618199],
[-122.442354908341343, 37.808043514915532],
[-122.441767928096084, 37.808104685164672],
[-122.44153654297466, 37.808127036445633],
[-122.441200035212404, 37.808167598495942],
[-122.44095148917647, 37.808195724629321],
[-122.44065270005224, 37.808288542686931],
[-122.440627067703531, 37.808301325835579],
[-122.440575873699515, 37.808329637315019],
[-122.440528212527582, 37.808360637280757],
[-122.440504418161254, 37.808377510253422],
[-122.440482353473598, 37.808394354762264],
[-122.440462037446096, 37.808411857223902],
[-122.440440008975642, 37.808430074859068],
[-122.440419728804599, 37.808448949904253],
[-122.440401196955307, 37.808468483183979],
[-122.440382683383717, 37.808488702887828],
[-122.440369270902693, 37.808505405024498],
[-122.440221248842576, 37.808670595014306],
[-122.440123020723803, 37.808753931536479],
[-122.440031607015868, 37.808833035512706],
[-122.439928060968157, 37.808779113775664],
[-122.440270312303127, 37.808229595265985],
[-122.440282155842453, 37.808219099502388],
[-122.440294017657806, 37.80820928989008],
[-122.440307609508267, 37.808199452089056],
[-122.440319488926107, 37.808190329461823],
[-122.440334864961784, 37.808182522213436],
[-122.440348510624844, 37.808174743706033],
[-122.440379298231178, 37.808160502620083],
[-122.440394728431826, 37.80815475493111],
[-122.440410176225527, 37.808149693678615],
[-122.440427371995767, 37.808145290667582],
[-122.440444586383592, 37.808141573526278],
[-122.440470613795014, 37.808143892481645],
[-122.440632371579539, 37.808106894262245],
[-122.440777543613365, 37.808097638147814],
[-122.441785658321223, 37.807988336182923],
[-122.441808099289275, 37.807985906519384],
[-122.441799274649981, 37.807913258896662],
[-122.441490202960892, 37.807943755875684],
[-122.441489843938655, 37.807930027497129],
[-122.441472521937172, 37.807929625920565],
[-122.441480832705722, 37.807916441000579],
[-122.441399010156047, 37.807832633902123],
[-122.441414331805831, 37.807822767220159],
[-122.441512177188741, 37.807923479293905],
[-122.44162439956051, 37.807912017357232],
[-122.441545678197272, 37.807814424464247],
[-122.441557557740268, 37.807805301431408],
[-122.441658935146762, 37.807908701878773],
[-122.441779792066384, 37.807896411186228],
[-122.441788084829597, 37.807882540086432],
[-122.441704477043643, 37.807796702127824],
[-122.441718086585212, 37.807787550596132],
[-122.44181950044613, 37.807892323765437],
[-122.441935183814792, 37.807880804821842],
[-122.441943476554428, 37.807866933985672],
[-122.441859851343693, 37.807780409692931],
[-122.441873460855945, 37.807771257868716],
[-122.441976640855827, 37.807877375557908],
[-122.441977107703579, 37.807895222530654],
[-122.441816542778795, 37.807911600852826],
[-122.441823637077619, 37.807984277513498],
[-122.442320834639688, 37.807932139640414],
[-122.442377595612399, 37.807918156721222],
[-122.442423345751081, 37.807880319904761],
[-122.442454552098894, 37.807815940203007],
[-122.442446930178193, 37.807789283331502],
[-122.442372794146465, 37.807800805256427],
[-122.442345413582302, 37.807812930576347],
[-122.442346006240967, 37.807835582850217],
[-122.442033707111619, 37.807875062158132],
[-122.442009243703154, 37.807733999234173],
[-122.442027954502791, 37.807721329750571],
[-122.442048400903616, 37.807841170516582],
[-122.442059070073554, 37.807851982482966],
[-122.442207469058346, 37.807833743991878],
[-122.442217473805144, 37.807819158213746],
[-122.442189585584913, 37.807679524627673],
[-122.44220852946296, 37.807675779293724],
[-122.442236490235743, 37.807818158319698],
[-122.442248872177956, 37.807828255059988],
[-122.442314446214397, 37.807820307862364],
[-122.442321008509211, 37.807806465496753],
[-122.442293084181387, 37.807665459069689],
[-122.442311884371406, 37.807656221984004],
[-122.442337612108403, 37.807779409372287],
[-122.442355041151117, 37.807783929703042],
[-122.442395115206907, 37.807727644711157],
[-122.442384613878218, 37.807657084644539],
[-122.44241012033585, 37.80763949635341],
[-122.442685954576561, 37.807595809313327],
[-122.442711892175168, 37.807793159839584],
[-122.442714242657956, 37.807793886686525],
[-122.442762503926971, 37.807808807618663],
[-122.442779771325021, 37.807807149719757],
[-122.442902339949939, 37.807794142945916],
[-122.442998755417392, 37.807774012900218],
[-122.44305537242154, 37.807754538469467],
[-122.44312779660163, 37.807743731320251],
[-122.443201717191158, 37.807723971451296],
[-122.443260064122327, 37.807704468417526],
[-122.443291085252142, 37.807699150180341],
[-122.443284905918816, 37.807661481932094],
[-122.443264195467847, 37.807663883640146],
[-122.443274020298077, 37.807642433173122],
[-122.443270056810988, 37.807623269807593],
[-122.44314383017317, 37.807628783225987],
[-122.443254016387542, 37.807605679164965],
[-122.44326198542305, 37.807579452177009],
[-122.443135758859114, 37.807584965586791],
[-122.443242483942598, 37.807561918560637],
[-122.443256021380762, 37.807550021121365],
[-122.443252111820613, 37.807532917601364],
[-122.443237999416624, 37.807522848927505],
[-122.443246112189684, 37.807502113399792],
[-122.443244040453081, 37.807489099968812],
[-122.443229963993403, 37.807480404158795],
[-122.443238040829058, 37.80745829576658],
[-122.443234130578546, 37.807441191982505],
[-122.443218162072228, 37.807426347064215],
[-122.443264702406339, 37.807418712940589],
[-122.443256517776859, 37.807436702740098],
[-122.443274647533997, 37.807467993526231],
[-122.44326455321054, 37.80747914750733],
[-122.443284610988869, 37.807517960537304],
[-122.443274498692247, 37.807528428086727],
[-122.443278390296598, 37.807544845448142],
[-122.443294466994871, 37.807563808946817],
[-122.443284389944367, 37.807575649647809],
[-122.443286551537625, 37.807592095514579],
[-122.443302628241014, 37.807611058737429],
[-122.443292551178217, 37.80762289916445],
[-122.443296353650368, 37.807635884626045],
[-122.443302173270908, 37.807659823956676],
[-122.443308298708217, 37.807695432906783],
[-122.443434058250361, 37.807672072344801],
[-122.443672727711146, 37.807597406163168],
[-122.443654441112585, 37.80749401124762],
[-122.443659326683914, 37.80748225662078],
[-122.443872884696731, 37.807440280106206],
[-122.443843293810986, 37.807367974319583],
[-122.44370731452436, 37.807397684591926],
[-122.443671444290359, 37.807416130974829],
[-122.443653888762242, 37.807406805822907],
[-122.443615857187666, 37.807408806048031],
[-122.443601726794256, 37.807398051259632],
[-122.443646374280576, 37.807384267621238],
[-122.443657912040536, 37.807362102160489],
[-122.443677395248955, 37.807378949282132],
[-122.443708397548889, 37.807372944513865],
[-122.443719917316642, 37.807350092614648],
[-122.443739400535989, 37.807366939726066],
[-122.443768690788104, 37.807361649886793],
[-122.443780246134452, 37.8073401708521],
[-122.443799711046125, 37.807356331526904],
[-122.443829001635834, 37.807351041666962],
[-122.443838790315425, 37.807328218286891],
[-122.443858291875273, 37.807345751805421],
[-122.443944431867095, 37.807329910704055],
[-122.443955915261199, 37.807305685922557],
[-122.44397716482635, 37.807323877338213],
[-122.444023687043469, 37.8073155564826],
[-122.444033511615373, 37.807294106225484],
[-122.444052976916183, 37.807310266852966],
[-122.444104672197867, 37.807301173690028],
[-122.444114316981555, 37.807272858828142],
[-122.444139117510247, 37.80729442532332],
[-122.444173580792466, 37.807288363378881],
[-122.444194201234893, 37.80728252962394],
[-122.444071355206816, 37.80715270277112],
[-122.444216516082363, 37.807275294750141],
[-122.444262912050363, 37.807262168504906],
[-122.444272682607831, 37.807238658656139],
[-122.444290381984246, 37.807253474900222],
[-122.444329892128806, 37.807241835878372],
[-122.444341267517572, 37.807213492465038],
[-122.444362535128633, 37.807232370243902],
[-122.44440375797123, 37.807220016231902],
[-122.444415151652876, 37.807192359237938],
[-122.444436401305339, 37.807210550845831],
[-122.444546334776021, 37.807177835248929],
[-122.444557764011307, 37.807151551111282],
[-122.444577265002437, 37.807169084522954],
[-122.444645975607855, 37.807148723180354],
[-122.444656807573693, 37.807165712792234],
[-122.444442095756031, 37.807229685090327],
[-122.444483781319875, 37.807301104324431],
[-122.444798026960797, 37.807203901149613],
[-122.445256739502199, 37.807070664930905],
[-122.445225848727588, 37.807014862399406],
[-122.445091259282876, 37.807031503517287],
[-122.445058382323012, 37.807032045740513],
[-122.44505631062799, 37.807019032334502],
[-122.445158131368714, 37.807007052095038],
[-122.44517833798561, 37.806985429952121],
[-122.445116858617496, 37.806951420767781],
[-122.445030629048986, 37.806963830570979],
[-122.445058875964975, 37.806918727340673],
[-122.445006173970214, 37.806889380441703],
[-122.444888888156058, 37.806905735960221],
[-122.444874654156408, 37.80682493696483],
[-122.444919463246819, 37.806817330453363],
[-122.445007311205075, 37.806866699909307],
[-122.444974402625263, 37.806799942930326],
[-122.444993292526533, 37.806794137571423],
[-122.445038942963123, 37.806884719639513],
[-122.445121510119179, 37.806930742460146],
[-122.445046609432765, 37.806780897144854],
[-122.445065498977499, 37.806775091780075],
[-122.445153141586133, 37.806948762165227],
[-122.44523217658535, 37.806992095976476],
[-122.44535586222473, 37.80695571941591],
[-122.445247620593648, 37.806722643522114],
[-122.445266510453877, 37.806716838119371],
[-122.445374751789728, 37.806949914001784],
[-122.445469219634987, 37.806921573283674],
[-122.445352433919155, 37.8066927587953],
[-122.445373036116507, 37.806686238401404],
[-122.44548810952854, 37.806915767845673],
[-122.445561992695104, 37.80689463390474],
[-122.445445188748025, 37.806665133074851],
[-122.445464060244248, 37.8066586412139],
[-122.445580882228484, 37.806888828457545],
[-122.44570454953481, 37.806851765098479],
[-122.445651671462073, 37.806749628119896],
[-122.44565282578796, 37.806727633749716],
[-122.445895754405569, 37.806815647477016],
[-122.445736019894767, 37.806863607021306],
[-122.445754222526631, 37.806897643432812],
[-122.446384760166481, 37.806715556411739],
[-122.446258463322081, 37.806718327435846],
[-122.446193213892712, 37.806738632616792],
[-122.446170395914976, 37.806726648309962],
[-122.445981443875837, 37.806782644077451],
[-122.445970540045622, 37.80676290912637],
[-122.445598235532685, 37.806626211997774],
[-122.445606509444289, 37.806611653919497],
[-122.446001524256076, 37.806756217316881],
[-122.446149253941641, 37.806712575605459],
[-122.445708764584751, 37.806550221539489],
[-122.445717038134546, 37.806535664008109],
[-122.446176741453044, 37.806704568267236],
[-122.446283248720263, 37.80667328102048],
[-122.446005194935296, 37.806500006546784],
[-122.446020461726192, 37.80648808024214],
[-122.446305581169554, 37.806666731908173],
[-122.446420668040176, 37.806632556303882],
[-122.446151409366294, 37.806464630848126],
[-122.446166694812902, 37.806453390945222],
[-122.446443000465095, 37.806626007165498],
[-122.446554662537906, 37.806593261684583],
[-122.446391023698155, 37.806492266360543],
[-122.446406290771549, 37.806480340000242],
[-122.446524184932926, 37.806553247425605],
[-122.446620237835958, 37.806519385773647],
[-122.446642693746213, 37.806583567659246],
[-122.44670978090322, 37.806567352265269],
[-122.446939773843297, 37.806492135834091],
[-122.446948929215651, 37.806511213110113],
[-122.446720738906919, 37.806589146719396],
[-122.446733553252031, 37.806615717634571],
[-122.446996260681743, 37.80653378052115],
[-122.44699045975274, 37.806444601492437],
[-122.446974562378131, 37.806432503088267],
[-122.446987792972394, 37.806408935599343],
[-122.446983774594216, 37.806387713332704],
[-122.44696966191627, 37.806377645652319],
[-122.446979503500458, 37.806356881028954],
[-122.446973448766144, 37.806324017983009],
[-122.446942374816217, 37.806327277888172],
[-122.44695713738291, 37.806296131639499],
[-122.446941332573715, 37.806221538794638],
[-122.446922047288439, 37.806212242955326],
[-122.446935223870369, 37.806186616724325],
[-122.446919473110199, 37.806114083171188],
[-122.446903683817155, 37.806106103074534],
[-122.446913508081977, 37.806084652286692],
[-122.446909453048207, 37.80606205716353],
[-122.446700318081568, 37.806074437190453],
[-122.446888239127603, 37.80604523913599],
[-122.446903488381423, 37.806032626547122],
[-122.446899451700631, 37.806010717849745],
[-122.446881914446337, 37.806002079602202],
[-122.446893486335398, 37.805981286694831],
[-122.446879430339621, 37.805907352248376],
[-122.446670313096035, 37.805920418116813],
[-122.446859964791457, 37.805891192083081],
[-122.446873519346127, 37.805879980657039],
[-122.446859427027746, 37.80580467279912],
[-122.446845404479788, 37.805798037263322],
[-122.446855228367411, 37.805776586210264],
[-122.446849425403357, 37.805753333484326],
[-122.446649086514796, 37.805771061515294],
[-122.446833420536592, 37.805737116186556],
[-122.446845280397781, 37.805727305922368],
[-122.446841244096817, 37.805705397216052],
[-122.446823724582785, 37.805697445671754],
[-122.446835297139998, 37.805676653032066],
[-122.446831332492664, 37.805657489784885],
[-122.446817327967949, 37.805651540403126],
[-122.446825403536536, 37.805629431757723],
[-122.446805830072663, 37.805609152989824],
[-122.446817348267402, 37.805586300786253],
[-122.446809113007006, 37.805536305492353],
[-122.446789863569947, 37.805528382500277],
[-122.446803112068949, 37.805505501734793],
[-122.446787107265692, 37.805489284429996],
[-122.446700807332093, 37.805498949734627],
[-122.446698645389645, 37.80548250391827],
[-122.446795308825045, 37.805471980811141],
[-122.446771068810406, 37.805405768207393],
[-122.446462225224153, 37.805444515694951],
[-122.445989505497494, 37.805505194954378],
[-122.446003707846955, 37.805518695189633],
[-122.4460087518259, 37.805579044127001],
[-122.446547025898894, 37.805509728799308],
[-122.446550972467278, 37.805528205624398],
[-122.446518204506802, 37.805532866567553],
[-122.446489185128556, 37.80554845357441],
[-122.446462996481614, 37.80553995860523],
[-122.446437419711515, 37.805554801776253],
[-122.446402597499727, 37.805547136014376],
[-122.446377002372941, 37.805561292745764],
[-122.446359483641928, 37.805553341395452],
[-122.446335312891549, 37.805555800213412],
[-122.446311412770896, 37.805568555772986],
[-122.446295642000578, 37.805561262020625],
[-122.44627666253902, 37.805563635428271],
[-122.446249319434344, 37.805577134798497],
[-122.446231800006771, 37.805569182891531],
[-122.446148996869667, 37.805580163541499],
[-122.446123402382483, 37.805594320480907],
[-122.446104135009989, 37.805585710944754],
[-122.44608171290129, 37.805588827858948],
[-122.44605783038071, 37.805602270079603],
[-122.446038580653479, 37.805594346696139],
[-122.446017870868147, 37.805596748888597],
[-122.445994006657656, 37.805610876973709],
[-122.445976469264281, 37.80560223887116],
[-122.445950586862267, 37.805605412856671],
[-122.445928452266116, 37.805619512663846],
[-122.445909185255772, 37.805610903090184],
[-122.445885032816534, 37.805614048516972],
[-122.445861132260902, 37.80562680426543],
[-122.445845361169205, 37.805619510184115],
[-122.445814305801534, 37.805623456219109],
[-122.44579215352951, 37.805636869562669],
[-122.445772886191605, 37.805628260247033],
[-122.445750464048956, 37.80563137682369],
[-122.445724833141924, 37.805644160817579],
[-122.445709062413187, 37.805636866986909],
[-122.445683179641605, 37.805640040919442],
[-122.445655872372569, 37.805654912741964],
[-122.445638335008098, 37.805646274589208],
[-122.445605549302542, 37.805650249115246],
[-122.445581648680047, 37.80566300453242],
[-122.445565859972788, 37.805655024250306],
[-122.445531361592955, 37.805659714013281],
[-122.445505730631226, 37.805672497684945],
[-122.445489959918007, 37.805665203825008],
[-122.445462346810999, 37.80566840625292],
[-122.445436715841595, 37.805681190184124],
[-122.445420945133293, 37.805673896314971],
[-122.445391619690682, 37.8056778137015],
[-122.445362527733508, 37.805690654981625],
[-122.445346757369364, 37.8056833608223],
[-122.44531225895534, 37.805688050246587],
[-122.445290052615164, 37.805699404198599],
[-122.445276030220143, 37.805692768201546],
[-122.445243244128591, 37.805696742632556],
[-122.445217576794818, 37.805708153657022],
[-122.445203554404628, 37.805701517651372],
[-122.445170786636353, 37.80570617848889],
[-122.445148507984058, 37.805714786690388],
[-122.445105232410981, 37.805714813715646],
[-122.445083008046993, 37.805725481196227],
[-122.44507071598305, 37.80571881663689],
[-122.445037947513853, 37.80572347772349],
[-122.445017471439073, 37.805734803086857],
[-122.445001701099429, 37.805727508881461],
[-122.444908551660831, 37.805740032744836],
[-122.44488456097811, 37.805749355858453],
[-122.444846440036883, 37.805747924599146],
[-122.444825945937126, 37.805758563222234],
[-122.444811923572402, 37.805751927170057],
[-122.44478259772076, 37.805755844410804],
[-122.44476037365142, 37.805766512099389],
[-122.444713600749751, 37.805765222919185],
[-122.444691394641026, 37.805776576752621],
[-122.444677372284929, 37.805769940684463],
[-122.444653201761611, 37.805772399426502],
[-122.444630958989393, 37.805782380395051],
[-122.444585917098436, 37.805781062896116],
[-122.444563710619391, 37.805792416711171],
[-122.444549688278883, 37.80578578090244],
[-122.444518632419573, 37.805789726327305],
[-122.444494659650545, 37.805799735794025],
[-122.444451329400607, 37.805797703293351],
[-122.444429141227388, 37.805809743784408],
[-122.444413370583575, 37.805802449506146],
[-122.444390948345657, 37.805805566373394],
[-122.44436699318581, 37.805816262252314],
[-122.444352970844008, 37.805809625871085],
[-122.444327105931421, 37.805813485938437],
[-122.44430666567736, 37.805826184043205],
[-122.444289129128734, 37.805817545953296],
[-122.444266706866628, 37.805820662247768],
[-122.444242769660434, 37.805832044533943],
[-122.444228747333952, 37.805825408412545],
[-122.444206307444119, 37.80582783853189],
[-122.444182406178044, 37.805840593670816],
[-122.44416661758342, 37.805832613201659],
[-122.44414592563939, 37.805835701223295],
[-122.444121953151352, 37.805845710608445],
[-122.444025145055349, 37.805850740063669],
[-122.444001189835404, 37.805861436142784],
[-122.443959572249256, 37.805858688226643],
[-122.443935671622995, 37.805871443304085],
[-122.443919900675667, 37.805864149240215],
[-122.443902651728223, 37.805866493739174],
[-122.443880499045548, 37.805879906997674],
[-122.443864710121758, 37.805871926219289],
[-122.44378192426916, 37.805883591639486],
[-122.443756257338379, 37.805895002334175],
[-122.443714639749658, 37.805892254606199],
[-122.443692432758084, 37.80590360826271],
[-122.4436766621739, 37.805896314160641],
[-122.443654240222742, 37.805899430882093],
[-122.443630320868039, 37.805911499476395],
[-122.443614550281069, 37.80590420509148],
[-122.44359211035453, 37.805906635368508],
[-122.443568208950381, 37.805919390108215],
[-122.443552420405013, 37.80591140955697],
[-122.443535171434974, 37.805913754002177],
[-122.443511270025937, 37.805926509004905],
[-122.443495481838426, 37.805918528714912],
[-122.443473041543214, 37.805920958425858],
[-122.443450852475209, 37.80593299846943],
[-122.443435081915695, 37.805925704609677],
[-122.443407468616002, 37.805928906281792],
[-122.443388776471963, 37.805942262421105],
[-122.443369509665189, 37.805933652158522],
[-122.443347069022408, 37.805936082125754],
[-122.443328395172557, 37.80595012440785],
[-122.443309128031871, 37.805941514415672],
[-122.443291878362203, 37.805943859111288],
[-122.443267959626397, 37.805955927620595],
[-122.443252189065603, 37.805948633187285],
[-122.443233209414942, 37.805951006379615],
[-122.443207595577817, 37.805964475989526],
[-122.443174557723637, 37.805958839788218],
[-122.443148908639841, 37.80597093678324],
[-122.443134868425886, 37.805963614373887],
[-122.443058967715231, 37.805973792109128],
[-122.443036832460166, 37.805987891372702],
[-122.443017547724423, 37.805978594894604],
[-122.442981318355606, 37.805983312150161],
[-122.442948532359026, 37.805987285937427],
[-122.442926379114695, 37.806000698747546],
[-122.44290884267825, 37.805992060178127],
[-122.442839827294776, 37.806000751431881],
[-122.442815943694384, 37.806014192451634],
[-122.442798425230706, 37.806006240298515],
[-122.442734582834518, 37.806014159544731],
[-122.442707256867862, 37.806028343976273],
[-122.44268971976544, 37.806019705660304],
[-122.442636241331058, 37.806026767128834],
[-122.442610646012994, 37.806040923030253],
[-122.442591378939156, 37.80603231319558],
[-122.442551688858117, 37.806037087047187],
[-122.442547725650329, 37.806017923926198],
[-122.443029120691975, 37.805957802366279],
[-122.443387985849299, 37.805912059110995],
[-122.443753825765924, 37.805868259987832],
[-122.443769345089194, 37.805865944017846],
[-122.443957339015583, 37.805839496905513],
[-122.444492227815289, 37.805772993462419],
[-122.444668235229059, 37.805751549942215],
[-122.445284142224111, 37.805672032526566],
[-122.445279062855903, 37.805610310694497],
[-122.44527006920417, 37.805597411188494],
[-122.444483346869873, 37.805698286438428],
[-122.443744945559246, 37.805793553184138],
[-122.443018600699929, 37.805886555905765],
[-122.442516549650193, 37.805951138305055],
[-122.442427410705633, 37.806050808392641],
[-122.442522464016989, 37.806507977467341],
[-122.442586642075881, 37.806579026869471],
[-122.443131937777821, 37.806513045572309],
[-122.443499493172467, 37.806468532301039],
[-122.443667282141945, 37.806463706682081],
[-122.443846679856065, 37.806439461357343],
[-122.443959061743129, 37.806434175357609],
[-122.443938050605254, 37.806358981524156],
[-122.443116244562106, 37.806442570813587],
[-122.442613848569025, 37.80649411140103],
[-122.442611615303633, 37.806474919513256],
[-122.442654765933469, 37.806470088368528],
[-122.442661399886077, 37.806458991436592],
[-122.442687570467214, 37.806466801090252],
[-122.442708298579689, 37.80646508646474],
[-122.442716537115061, 37.806449155723413],
[-122.442746276492144, 37.806461026947929],
[-122.442770051771902, 37.806443467084335],
[-122.44279979080919, 37.80645533830107],
[-122.442874033560784, 37.806447934694987],
[-122.442882218173921, 37.806429944918698],
[-122.442912011462568, 37.806443875399388],
[-122.442927548550728, 37.806442245978758],
[-122.442937481103471, 37.806424914130673],
[-122.442965543726487, 37.806438873384522],
[-122.442990995725921, 37.806419225391323],
[-122.443019058349662, 37.806433184357886],
[-122.443039786445084, 37.806431469674095],
[-122.443047971009094, 37.806413479611678],
[-122.443077764322211, 37.806427410050546],
[-122.443098474448703, 37.80642500892381],
[-122.443108388985991, 37.806406990354105],
[-122.443136451627183, 37.806420949292765],
[-122.443157179716479, 37.806419234588326],
[-122.443165418150457, 37.806403303815522],
[-122.443193426900422, 37.806415203442874],
[-122.443215885660081, 37.806413459937652],
[-122.443222483596756, 37.806400990383416],
[-122.443248689797912, 37.806410172509004],
[-122.443329817859791, 37.806401281706691],
[-122.443338074230084, 37.806386037628911],
[-122.443366083001223, 37.806397937215287],
[-122.443447229004846, 37.806389732764778],
[-122.443455467380517, 37.806373802246185],
[-122.443480033821288, 37.806386445534933],
[-122.443505916940026, 37.806383271811711],
[-122.443512496848314, 37.806370115534087],
[-122.443538721058857, 37.806379984576957],
[-122.443562892155768, 37.806377525783311],
[-122.443569490023762, 37.806365055935018],
[-122.44359742694175, 37.80637420973634],
[-122.443676842221919, 37.806366033924192],
[-122.443672164594389, 37.806253487231395],
[-122.443695462542081, 37.806349932284753],
[-122.443707916670277, 37.806362774599044],
[-122.44379596596373, 37.806353769679554],
[-122.443802527838344, 37.806339926678575],
[-122.443830500721077, 37.806350453289745],
[-122.443861574478419, 37.806347194484687],
[-122.443868190266627, 37.806335411052103],
[-122.443896109229783, 37.80634387807568],
[-122.443922010642723, 37.806341390962501],
[-122.443913871646629, 37.806228901600704],
[-122.443940541034891, 37.806321857121844],
[-122.443956527422003, 37.806337388377891],
[-122.44398415881686, 37.80633487273537],
[-122.444004419522869, 37.806315310362876],
[-122.444018675589732, 37.806330870132562],
[-122.444044576647997, 37.806328382998174],
[-122.444051174437902, 37.806315913397398],
[-122.444077344761538, 37.806323722474062],
[-122.444106688857119, 37.806320492116114],
[-122.444113268646205, 37.806307335530214],
[-122.444137744599871, 37.806316546256639],
[-122.444163610043603, 37.806312686225482],
[-122.444171919814423, 37.806299501392182],
[-122.444198126803698, 37.806308683844726],
[-122.44422572221977, 37.806304795006142],
[-122.444232302000771, 37.806291638962733],
[-122.444258508634277, 37.806300820858432],
[-122.444287834382735, 37.806296903754081],
[-122.44429446807581, 37.806285806729939],
[-122.444320620790435, 37.806292929589091],
[-122.444410328338193, 37.806281149679826],
[-122.444398674018615, 37.806166658108886],
[-122.444430732743257, 37.806267078693303],
[-122.444443114393508, 37.806277175761053],
[-122.44453626493052, 37.806264652260793],
[-122.444546322932027, 37.806252125028941],
[-122.444572511964111, 37.80626062069139],
[-122.44466566211247, 37.806248097094617],
[-122.444654277108668, 37.8061439020343],
[-122.444684317803762, 37.806233368169231],
[-122.444698448132328, 37.806244122830272],
[-122.444729504511017, 37.806240177078124],
[-122.444737832507585, 37.806227678906012],
[-122.444765733548039, 37.806235459291536],
[-122.444782982907213, 37.806233114935374],
[-122.44479131087958, 37.806220616210318],
[-122.444819211930195, 37.806228396857783],
[-122.444886496978683, 37.806219733530369],
[-122.44488089641429, 37.806138105148783],
[-122.444906901269448, 37.806205662186763],
[-122.444919282967007, 37.806215758930051],
[-122.444986568338436, 37.806207095539854],
[-122.444994931901647, 37.806195969945342],
[-122.445021067006977, 37.806202405936702],
[-122.445093525002505, 37.8061929701732],
[-122.445087942204026, 37.80611202850794],
[-122.445113929253864, 37.806178899068257],
[-122.445128041656801, 37.806188967520207],
[-122.445202229600525, 37.806179502882479],
[-122.445210557849578, 37.806167004396592],
[-122.445236728249824, 37.806174813490792],
[-122.44525743822885, 37.806172411710314],
[-122.445265766467799, 37.80615991322049],
[-122.445267302625481, 37.806086407881679],
[-122.445285033545986, 37.806168522898403],
[-122.445310916864869, 37.806165349047845],
[-122.445305315838027, 37.806083720685585],
[-122.445331267107818, 37.80614921860834],
[-122.445347145482373, 37.806160631088311],
[-122.445366125472304, 37.806158257824791],
[-122.445374453006437, 37.806145759613244],
[-122.44540062410141, 37.806153568385149],
[-122.445424776743849, 37.806150423332426],
[-122.445433086611402, 37.80613723812958],
[-122.445434730189021, 37.806067851662334],
[-122.445459293346119, 37.806146420033315],
[-122.445479985322095, 37.806143331781477],
[-122.445489989537165, 37.806128745440887],
[-122.445516214271365, 37.806138614038851],
[-122.445543827543716, 37.806135411324078],
[-122.445560788683153, 37.80612208366891],
[-122.445567131287589, 37.806165929693421],
[-122.445546061556797, 37.806154603157502],
[-122.445523639245678, 37.806157719690731],
[-122.445501522738013, 37.806172505842895],
[-122.445489122634442, 37.806161722734075],
[-122.44546670032598, 37.806164839531021],
[-122.445442817508763, 37.806178281625698],
[-122.445432201695837, 37.806169528989997],
[-122.445352822460961, 37.806179079403755],
[-122.445327226916191, 37.806193235905667],
[-122.445316593481564, 37.806183797096139],
[-122.445244135177305, 37.806193233002396],
[-122.44522027063509, 37.806207361203953],
[-122.445207906544567, 37.80619795120483],
[-122.445188926532239, 37.806200324168309],
[-122.445161708883106, 37.806218628036419],
[-122.445135448551525, 37.806207386764015],
[-122.445111565653477, 37.806220828516935],
[-122.44509921920563, 37.806212104669896],
[-122.445030203866864, 37.80622079693034],
[-122.445008123555382, 37.806236955848796],
[-122.444978438202398, 37.806227144485362],
[-122.444954644838973, 37.806244018373903],
[-122.444924959836314, 37.806234206991327],
[-122.444902861169254, 37.806249679463384],
[-122.444888730810021, 37.806238924826829],
[-122.444823175735436, 37.806247559901692],
[-122.444801113352611, 37.806264405213646],
[-122.444785216712205, 37.806252306233745],
[-122.444723104639422, 37.806260197747797],
[-122.444699383130299, 37.80627981731422],
[-122.444681702577071, 37.806265687549761],
[-122.444619590489268, 37.806273579283847],
[-122.444597491739671, 37.806289051423988],
[-122.444583361417187, 37.806278296750953],
[-122.444519536610485, 37.806286903400981],
[-122.444493959540637, 37.806301746142793],
[-122.44447984720945, 37.80629167788976],
[-122.444386678651156, 37.806303514912976],
[-122.444361209083098, 37.806322476775328],
[-122.444343546554336, 37.806309033118175],
[-122.444324566500356, 37.806311406491666],
[-122.444297366567298, 37.806330396317819],
[-122.444279722039454, 37.806317639632702],
[-122.444255568948051, 37.806320784456545],
[-122.444233506414719, 37.806337629662124],
[-122.444217609851108, 37.806325530605875],
[-122.444126171547992, 37.806337339172615],
[-122.444102396615747, 37.806354899035341],
[-122.444084751416256, 37.806342142057929],
[-122.444034733554687, 37.806349147388161],
[-122.443955318332002, 37.806357323441311],
[-122.443976328801966, 37.806432517557667],
[-122.444009133253417, 37.806429229637253],
[-122.44401497169018, 37.80645385590833],
[-122.443983915176943, 37.806457801197638],
[-122.443991501564284, 37.806483085111559],
[-122.444006566508079, 37.806529534342857],
[-122.443998364182022, 37.80654683776438],
[-122.444012889909018, 37.806572694020851],
[-122.444137456251781, 37.806569953925113],
[-122.444004705900142, 37.806590683869416],
[-122.444008597616772, 37.806607101209622],
[-122.444028224510816, 37.8066294400098],
[-122.444014687364202, 37.806641337539759],
[-122.444016813135761, 37.806656410256579],
[-122.444032907804939, 37.806676060090197],
[-122.4440210291, 37.806685183643154],
[-122.444025100564104, 37.806708465032258],
[-122.444042961537718, 37.806729459206764],
[-122.444031118428768, 37.806739955631187],
[-122.444035226540592, 37.806764609873134],
[-122.444052799240296, 37.806774621138679],
[-122.444173599989711, 37.806760268693552],
[-122.444175761756156, 37.806776714546551],
[-122.443903104192728, 37.806809364848277],
[-122.443899212488802, 37.80679294750523],
[-122.443999302417467, 37.806780996791801],
[-122.444012857566491, 37.806769785696332],
[-122.443998457621589, 37.806748734467796],
[-122.444004821781832, 37.806727340974426],
[-122.443985267126379, 37.806707748443934],
[-122.443996768032036, 37.80668420981921],
[-122.443979015619519, 37.806667334220748],
[-122.443988858092823, 37.806646570397213],
[-122.443972709865449, 37.806624861254427],
[-122.443980822328029, 37.806604125398131],
[-122.443978768461875, 37.806591798410317],
[-122.443966422424324, 37.806583074165033],
[-122.443972768605505, 37.806560994240272],
[-122.443949501347888, 37.806531848697659],
[-122.443975330928197, 37.806526615843026],
[-122.443974234501226, 37.806484743188264],
[-122.443966666100792, 37.806460145980267],
[-122.443854499850644, 37.806473669177059],
[-122.443860373479154, 37.806499667782823],
[-122.443717402901086, 37.806526746415607],
[-122.443667420469765, 37.806535124185942],
[-122.443645087827377, 37.806541672798915],
[-122.443622719585392, 37.806546848536961],
[-122.443600333023568, 37.806551337843935],
[-122.443577910179286, 37.806554454561891],
[-122.443581820462299, 37.80657155833741],
[-122.443586556699174, 37.806620238019541],
[-122.443637961503612, 37.806864552713115],
[-122.443633273319165, 37.806883858652405],
[-122.443607138425932, 37.806877421799527],
[-122.443529794028962, 37.806898611546323],
[-122.443526675114754, 37.806911710787858],
[-122.443502306167488, 37.806906618541966],
[-122.443424944087113, 37.80692712178169],
[-122.443421824461069, 37.806940221031809],
[-122.443397438234925, 37.806934442320348],
[-122.443318380993759, 37.806956346879609],
[-122.443315262039832, 37.806969446115438],
[-122.443289162740911, 37.806964382337512],
[-122.443211818508658, 37.806985571869724],
[-122.443208734784008, 37.807000044253662],
[-122.443180869538779, 37.806993635816845],
[-122.443103524899072, 37.807014825283645],
[-122.443102154219687, 37.807028582437368],
[-122.443076036948625, 37.80702283217979],
[-122.442998692594642, 37.807044021572032],
[-122.442995572888506, 37.807057120810583],
[-122.442969456307765, 37.807051370518039],
[-122.442895554290288, 37.807071816676462],
[-122.442876807520932, 37.807083113165248],
[-122.442860372447001, 37.807050420945309],
[-122.44288643546534, 37.807054111684081],
[-122.442950027240173, 37.807036582576075],
[-122.442956535452808, 37.807020680875418],
[-122.44298955579778, 37.807025630704103],
[-122.443044549671924, 37.807010303103709],
[-122.443051093786181, 37.806995773988241],
[-122.443080653430101, 37.80700078080757],
[-122.443137377283094, 37.806985425210136],
[-122.443143903403268, 37.806970209382371],
[-122.443176924084369, 37.806975159152948],
[-122.443230187542511, 37.806959860250316],
[-122.443236731623188, 37.806945331399028],
[-122.443266291259548, 37.806950338171859],
[-122.443323015021249, 37.806934981935846],
[-122.443327829074263, 37.806920481311195],
[-122.443311249747254, 37.806882297698685],
[-122.443357388360823, 37.806925488066938],
[-122.443415825168074, 37.806909417378883],
[-122.443402365072131, 37.806858134260111],
[-122.443446755408701, 37.806900666674323],
[-122.443506922515155, 37.806884567152593],
[-122.443513466527847, 37.806870038011155],
[-122.443541295807862, 37.80687507323001],
[-122.443611772372606, 37.806856057118701],
[-122.443568098366953, 37.806642517527813],
[-122.443490717910933, 37.80666233411602],
[-122.443464637369544, 37.806657956797729],
[-122.443447387531151, 37.806660301241159],
[-122.443394142301429, 37.806676286675255],
[-122.443369792101194, 37.80667188082289],
[-122.443307715462936, 37.806681144456071],
[-122.443302883453555, 37.806694958647995],
[-122.443274946458374, 37.806685805052041],
[-122.443204469968975, 37.806704820962679],
[-122.443178370770624, 37.806699757160004],
[-122.443107894250431, 37.806718773287464],
[-122.44308352539521, 37.806713680954857],
[-122.443013048491437, 37.806732697031315],
[-122.442985237265603, 37.806728348120288],
[-122.442950738216922, 37.806733036852982],
[-122.44291647270785, 37.806746649473865],
[-122.442888625547027, 37.806740927400313],
[-122.442821555362244, 37.806757827053026],
[-122.442793726174969, 37.806752791664266],
[-122.442731613479054, 37.806760682403457],
[-122.442721537132741, 37.806772522772178],
[-122.442695384049358, 37.806765399290242],
[-122.442678134861055, 37.806767743884308],
[-122.442671608648851, 37.806782959137742],
[-122.442640174735473, 37.806772489262421],
[-122.44262290758212, 37.806774147415787],
[-122.442611226258151, 37.806790821310969],
[-122.442619566601024, 37.806844935481941],
[-122.4425572741916, 37.806845961528367],
[-122.442543113877818, 37.806767907443565],
[-122.442812274930034, 37.80673394443496],
[-122.442895043918895, 37.806721593264598],
[-122.44288439854499, 37.806645541768312],
[-122.44286390392358, 37.80665618032328],
[-122.442620734223425, 37.806691089066426],
[-122.442586432743397, 37.80670332845169],
[-122.442569254711358, 37.806708418497294],
[-122.442553843632766, 37.806714852893514],
[-122.44253845015912, 37.806721973451488],
[-122.442524957636692, 37.80672882453954],
[-122.442523074304333, 37.806729780720396],
[-122.44251132146853, 37.806743708869504],
[-122.442504741349737, 37.806756865090371],
[-122.442501639536246, 37.806770651023797],
[-122.442501980779383, 37.80678369296961],
[-122.442511153361352, 37.806803457290563],
[-122.442513800037688, 37.806838436574978],
[-122.442498190669355, 37.806837320216118],
[-122.442500262610309, 37.806850333930662],
[-122.442500855308538, 37.806872986207821],
[-122.442513308640088, 37.806885829207545],
[-122.442543448720272, 37.807045340228143],
[-122.442550657494735, 37.807056209147177],
[-122.442552729104918, 37.807069222865962],
[-122.442549574089071, 37.807080949216051],
[-122.442542975993348, 37.807093419280186],
[-122.442532880918762, 37.80710457321085],
[-122.442521020253452, 37.807114382489758],
[-122.442507375020014, 37.80712216152461],
[-122.442493693848277, 37.807128567143486],
[-122.442476479790699, 37.807132284309965],
[-122.44245921255002, 37.807133942439243],
[-122.442443603113219, 37.807132825798654],
[-122.442426210144987, 37.807129678620242],
[-122.442401877121071, 37.807125959012424],
[-122.442394668361601, 37.807115090084459],
[-122.442382322776425, 37.807106365943092],
[-122.442371670941014, 37.807096240723055],
[-122.442357217513063, 37.80707312972298],
[-122.442353415933297, 37.807060144492915],
[-122.442352751441661, 37.807034746485243],
[-122.442355888527402, 37.807022333707671],
[-122.442327317913012, 37.80685661596673],
[-122.442325228043273, 37.806842915816503],
[-122.442319678177554, 37.80682927264953],
[-122.442314163892661, 37.806817002627895],
[-122.442303476176264, 37.806805503986638],
[-122.442292807121106, 37.806794692040256],
[-122.442278730911681, 37.806785996390175],
[-122.44225259583861, 37.806779559791913],
[-122.442263912071212, 37.806815083032639],
[-122.442334351220893, 37.807191623601256],
[-122.442574008114292, 37.807154713430769],
[-122.442579917970377, 37.807182085225314],
[-122.442316125837024, 37.807222826535309],
[-122.442296128149565, 37.807120146892402],
[-122.442249660075092, 37.807130526084627],
[-122.442243205590515, 37.807148487593025],
[-122.442218675723581, 37.80713721717698],
[-122.442177362768064, 37.807146137987679],
[-122.442169249735414, 37.807166873443258],
[-122.44214120495144, 37.807153600709071],
[-122.442110219881215, 37.807160291509724],
[-122.442102143088249, 37.807182399820256],
[-122.442074080353734, 37.807168440637511],
[-122.441951871381676, 37.807195175211561],
[-122.441943758626778, 37.807215910645752],
[-122.441915713871779, 37.807202638132658],
[-122.441829644720443, 37.807221223495034],
[-122.441823243975179, 37.807241243729116],
[-122.441796947879098, 37.807228628850183],
[-122.441714321769382, 37.807246470710545],
[-122.441706226203735, 37.807267892572305],
[-122.441678163511327, 37.807253933295577],
[-122.441590382530393, 37.807273233392451],
[-122.441583945818934, 37.807291881022437],
[-122.441559397367783, 37.80727992432282],
[-122.441528412884566, 37.807286614959068],
[-122.441522065914484, 37.807308694749302],
[-122.4414922725324, 37.807294763645217],
[-122.441459575632209, 37.807302169181312],
[-122.441451444085047, 37.807322218159875],
[-122.441425148030646, 37.807309603472838],
[-122.441347676557456, 37.807325986488941],
[-122.441341185930639, 37.807342574807244],
[-122.441318422046436, 37.807332648592578],
[-122.441240951224984, 37.807349031801699],
[-122.441234550317162, 37.807369052277899],
[-122.441208253583667, 37.807356437279445],
[-122.44112907030356, 37.807373535328814],
[-122.44112095660725, 37.807394270717083],
[-122.44109464263579, 37.807380969523756],
[-122.440999993407189, 37.807402442127575],
[-122.440987126791967, 37.807373811300785],
[-122.441006340540554, 37.807380362365826],
[-122.441088966969374, 37.807362521001856],
[-122.441071293907683, 37.807282464951484],
[-122.441105839449861, 37.807345761826411],
[-122.441121664279194, 37.807355115562864],
[-122.441199135479366, 37.807338732426437],
[-122.441181426400448, 37.807257303252058],
[-122.441215936141603, 37.807319227778606],
[-122.441235275185775, 37.807330583566994],
[-122.44130240044376, 37.80731574411066],
[-122.44131244119076, 37.80730253099884],
[-122.441289899930467, 37.807234916217887],
[-122.441336846017577, 37.807308996562313],
[-122.441403970896872, 37.807294157328393],
[-122.441389758204977, 37.807214043807704],
[-122.441424286396526, 37.807276654700864],
[-122.441440110897986, 37.807286008125857],
[-122.441505522979043, 37.807271883482372],
[-122.441489561884524, 37.807191112300579],
[-122.441524179900497, 37.807257155053932],
[-122.441538238159126, 37.807265164360558],
[-122.441610518456187, 37.807248866405487],
[-122.441598394609557, 37.807182453357271],
[-122.441630905705154, 37.807234109473121],
[-122.441643233270554, 37.80724214726019],
[-122.441715531475523, 37.807226535673394],
[-122.441722129729229, 37.807214065930424],
[-122.441749959016704, 37.807219101571583],
[-122.44181537098703, 37.807204977030693],
[-122.441821969214871, 37.8071925070075],
[-122.441804977662258, 37.807138535507519],
[-122.441848068147848, 37.807197571115559],
[-122.441911750066581, 37.807183474731303],
[-122.441901356658576, 37.80711703321635],
[-122.441942735164389, 37.807176783982825],
[-122.442002974305893, 37.807163431240092],
[-122.44201133876993, 37.807152305853435],
[-122.442037401781846, 37.80715599677972],
[-122.442094216092357, 37.807144073567486],
[-122.44210250836673, 37.807130202449336],
[-122.442130373562975, 37.807136610866159],
[-122.442190612977058, 37.807123257747243],
[-122.4421768301127, 37.807059618983033],
[-122.442207521070316, 37.807107871278774],
[-122.442221597332434, 37.80711656693682],
[-122.442292164942742, 37.807100983492141],
[-122.442243704644795, 37.806836704402386],
[-122.442167767011739, 37.806845508971712],
[-122.442147308147, 37.806857520267137],
[-122.442072831477645, 37.806855999790052],
[-122.442050696118415, 37.806870098860529],
[-122.442038314362932, 37.806860002097636],
[-122.44197618353418, 37.806867205731571],
[-122.44195577849186, 37.806881276017322],
[-122.441943396394166, 37.806871178975598],
[-122.441881247592036, 37.806877696126804],
[-122.441859148445275, 37.806893168021055],
[-122.44184673044974, 37.806881698103723],
[-122.441786329930238, 37.806888873147223],
[-122.441762464513715, 37.80690300092192],
[-122.441750082438688, 37.806892903859939],
[-122.441684509153674, 37.806900850470612],
[-122.441658930973958, 37.80691569315082],
[-122.441646530958224, 37.806904909645212],
[-122.441572305572137, 37.806912998636243],
[-122.441548386244634, 37.806925066794669],
[-122.441465311637984, 37.806925747662177],
[-122.441443158191802, 37.806939160185685],
[-122.44142908206166, 37.806930464709019],
[-122.44136529221457, 37.806940441967662],
[-122.441344958843104, 37.806957258153332],
[-122.441327368515545, 37.806946560051927],
[-122.441311849243505, 37.806948875968999],
[-122.441293246205632, 37.806965663663163],
[-122.441275637234966, 37.806954278858043],
[-122.44126011795251, 37.806956594493755],
[-122.441239730706059, 37.80697135136279],
[-122.441223906642946, 37.806961997904651],
[-122.441151465000161, 37.806972117453661],
[-122.441129311490656, 37.806985530192655],
[-122.441115235374099, 37.806976834129472],
[-122.441037621302598, 37.806987725743447],
[-122.44101719810962, 37.807001109708246],
[-122.441003139964337, 37.806993100613703],
[-122.440922064462001, 37.807004048844455],
[-122.440901659189493, 37.807018119222057],
[-122.440895696481135, 37.806988688312863],
[-122.441218230630383, 37.806943549393232],
[-122.441263058469275, 37.806936630972665],
[-122.441435464921327, 37.80690975751326],
[-122.441433016200833, 37.806882328691337],
[-122.441372490336036, 37.806884698487615],
[-122.441304935046745, 37.806883063866231],
[-122.441274237201611, 37.806900737372722],
[-122.441242947719005, 37.806895758576474],
[-122.44119330612007, 37.806917177241274],
[-122.441110393048419, 37.806924035754299],
[-122.441042945411667, 37.806926519579946],
[-122.440998117551175, 37.806933437642307],
[-122.440918593700744, 37.806937493327403],
[-122.440899792827196, 37.80694673020367],
[-122.440782200958282, 37.806951412279737],
[-122.440680218094201, 37.806957210845738],
[-122.44054721454367, 37.806968326842338],
[-122.440468121234176, 37.806988856613863],
[-122.440371365223044, 37.806995942367976],
[-122.440134737571853, 37.807016316747912],
[-122.43989673886324, 37.807050447763743],
[-122.43967267172718, 37.807087782808438],
[-122.439538386124013, 37.807116087220599],
[-122.439408914197855, 37.80712989048353],
[-122.439239537222377, 37.807140229675355],
[-122.439104802429114, 37.807151372502958],
[-122.438766800452754, 37.807200879974303],
[-122.438299128879564, 37.807256638299236],
[-122.437960892936687, 37.807297219553782],
[-122.437688625577763, 37.807344957007658],
[-122.437514504314919, 37.807372539848515],
[-122.437376577168436, 37.807394034049501],
[-122.437259217227975, 37.807407636246566],
[-122.437146815479664, 37.80741222942855],
[-122.437031382840118, 37.807433353744614],
[-122.436885215537345, 37.80747077743743],
[-122.436714393247598, 37.807492124635075],
[-122.436614801865048, 37.807523289038706],
[-122.436563088290782, 37.807531692199284],
[-122.436507376472989, 37.80751955916309],
[-122.436298557575597, 37.807544276277241],
[-122.436240083275962, 37.807558970839189],
[-122.436155205939471, 37.807556930640864],
[-122.435982097955772, 37.80755702547102],
[-122.435828364056036, 37.807569849863164],
[-122.435859235962624, 37.807691580598309],
[-122.433925269093152, 37.807945122059223],
[-122.433817271048738, 37.80791942385212],
[-122.433787568621852, 37.807908923241605],
[-122.433755903391244, 37.807889527355464],
[-122.43376416154652, 37.807874283957823],
[-122.433933527911989, 37.807929878638532],
[-122.435838185171932, 37.807680938490563],
[-122.435834169572829, 37.807659716129535],
[-122.435737591220459, 37.807673662142683],
[-122.433917274710794, 37.807904049527295],
[-122.433913385157453, 37.807887631858222],
[-122.434041074707324, 37.807871803440726],
[-122.434044035083929, 37.807852526536877],
[-122.434070401961165, 37.807867888872153],
[-122.434160130921143, 37.807856803195897],
[-122.434164803061421, 37.807836811488876],
[-122.434189457816743, 37.807852888603414],
[-122.434284359969311, 37.807841031264509],
[-122.434289032075128, 37.807821039552501],
[-122.434313686852093, 37.80783711664111],
[-122.434406858247897, 37.807825287589175],
[-122.434411548897913, 37.80780598229466],
[-122.434437915834692, 37.807821344547961],
[-122.434520741089443, 37.807811058557668],
[-122.434525413482959, 37.8077910671051],
[-122.434551797979211, 37.80780711577237],
[-122.434636336023075, 37.807796114603541],
[-122.434641025919433, 37.807776809311157],
[-122.434665680757917, 37.807792886326304],
[-122.434750218436946, 37.807781885630661],
[-122.434754908641708, 37.807762580053435],
[-122.434779544918584, 37.807777970622496],
[-122.434871004379232, 37.807766856012883],
[-122.434875676329611, 37.807746864551945],
[-122.434900331208965, 37.807762941518149],
[-122.434976252743482, 37.807753454920828],
[-122.434979194289198, 37.807733491570779],
[-122.435005579555238, 37.807749540125371],
[-122.435084943914418, 37.807739310518855],
[-122.43508961579829, 37.807719318774772],
[-122.435116018975634, 37.807736053738346],
[-122.435191922576223, 37.807725881117662],
[-122.435196576876137, 37.807705202655406],
[-122.43522297972649, 37.807721937600746],
[-122.435302361927597, 37.807712394556091],
[-122.435306998308789, 37.807691029930353],
[-122.435333419066353, 37.8077084510101],
[-122.435402436929863, 37.807699764700374],
[-122.435407055040258, 37.807677713642711],
[-122.435433494058017, 37.807695821128007],
[-122.435507685095942, 37.807686362859421],
[-122.435514015990663, 37.807663596960829],
[-122.43554045469773, 37.807681704977007],
[-122.435609472497859, 37.807673017996969],
[-122.435614072648008, 37.807650280497519],
[-122.435642259638655, 37.807669046525525],
[-122.435711277415109, 37.807660359485872],
[-122.43572966745738, 37.807635335465775],
[-122.435735467093281, 37.807658589004994],
[-122.435830350851532, 37.807646043988242],
[-122.435804210559851, 37.807572993499143],
[-122.435788619382777, 37.807572562680427],
[-122.435772938706066, 37.807568699417203],
[-122.435758952605468, 37.807563435158237],
[-122.435746625277645, 37.807555396762375],
[-122.435735992180923, 37.807545957377542],
[-122.435727054339125, 37.807535116438025],
[-122.435721558628927, 37.807523531999962],
[-122.435719488549438, 37.807510518156661],
[-122.435678807510797, 37.807410923656249],
[-122.435671271850225, 37.807321086052454],
[-122.435659314380757, 37.807260850297496],
[-122.435635232905554, 37.807266739353338],
[-122.435635716129568, 37.807285273061382],
[-122.435609349135348, 37.807269911074314],
[-122.435543792417761, 37.807278540984541],
[-122.43552006850399, 37.80729815869541],
[-122.435504101570785, 37.807283312732451],
[-122.435441987649398, 37.807291199357643],
[-122.435419994063011, 37.807310788651876],
[-122.43540402680101, 37.807295942681101],
[-122.435341912858448, 37.807303829253563],
[-122.435318189229335, 37.807323446918055],
[-122.435302222331032, 37.807308600927854],
[-122.435234935185079, 37.80731725906076],
[-122.435212941536335, 37.807336848316268],
[-122.435196974310131, 37.807322002317541],
[-122.435127956788023, 37.807330689056798],
[-122.435105963445992, 37.807350278012088],
[-122.435089996584352, 37.807335431993209],
[-122.435019248678017, 37.807344147060114],
[-122.4349972725025, 37.807364422440152],
[-122.434981288114457, 37.807348889967201],
[-122.434910540175395, 37.807357604694324],
[-122.434888564319408, 37.807377880322939],
[-122.434872579266241, 37.807362348121238],
[-122.434798388810123, 37.807371805710694],
[-122.434776412580376, 37.807392081598607],
[-122.434758697865377, 37.807376577207712],
[-122.434691410594411, 37.807385235030431],
[-122.434667704309632, 37.80740553900322],
[-122.434651719289548, 37.807390006497108],
[-122.434575798078043, 37.807399492611601],
[-122.434552092103161, 37.807419796555429],
[-122.434536125337331, 37.807404950461788],
[-122.434461916577604, 37.807413721960565],
[-122.434439940575373, 37.80743399723081],
[-122.434423973489999, 37.807419151402279],
[-122.434349765034597, 37.807427922275664],
[-122.43432605864993, 37.807448226454213],
[-122.434310074038208, 37.807432693896239],
[-122.434230709546782, 37.807442922713086],
[-122.434208733825983, 37.807463198209049],
[-122.434192749235578, 37.807447665635237],
[-122.434111654710136, 37.807457923293533],
[-122.434087948236439, 37.807478226874963],
[-122.434071963321998, 37.807462694290493],
[-122.433992599465014, 37.807472923210291],
[-122.433970605449531, 37.807492512508169],
[-122.433954638431118, 37.807477666067122],
[-122.433870083452888, 37.807487980028228],
[-122.433846376910722, 37.807508283835588],
[-122.433830409920873, 37.80749343765234],
[-122.43374412454402, 37.807503779895939],
[-122.433722148333416, 37.807524055581261],
[-122.433706163485638, 37.807508522947344],
[-122.433606088798641, 37.807521151358706],
[-122.433584112530909, 37.807541426469101],
[-122.433574191011218, 37.807492831512612],
[-122.433602216513336, 37.807505419848866],
[-122.433678120078412, 37.807495247927321],
[-122.433686343139499, 37.80747863165486],
[-122.433714368662436, 37.807491220239072],
[-122.433795462933048, 37.807480962859643],
[-122.433803685966325, 37.807464346578953],
[-122.433831693616042, 37.80747624842688],
[-122.433911075733292, 37.807466706318117],
[-122.433919280165583, 37.807449403606796],
[-122.433947305702674, 37.807461991586599],
[-122.434024939884253, 37.807451791061574],
[-122.434034892878572, 37.807435146394688],
[-122.434062900561514, 37.80744704846235],
[-122.434135379039915, 37.807438305591944],
[-122.434143601646298, 37.807421689293108],
[-122.434171609334427, 37.807433591060409],
[-122.434245800271043, 37.807424133585066],
[-122.434254022851178, 37.80740751727847],
[-122.434282048436359, 37.807420105453431],
[-122.434352778623364, 37.807410704669572],
[-122.434361000831984, 37.807394088361185],
[-122.434389026430239, 37.807406676510716],
[-122.43446148730483, 37.807397247549531],
[-122.434471439847925, 37.807380602851318],
[-122.43449944756594, 37.807392504266289],
[-122.434571926300066, 37.807383761671048],
[-122.434581860921966, 37.807366430255094],
[-122.434609886547221, 37.807379018352258],
[-122.434682347359626, 37.807369588980769],
[-122.434690569836022, 37.807352972643585],
[-122.434718577593046, 37.807364874555745],
[-122.434784152364955, 37.807356931263477],
[-122.43479237481715, 37.807340314919166],
[-122.434820382585727, 37.807352216807175],
[-122.434884226976308, 37.807344301846562],
[-122.434894179763575, 37.807327657106839],
[-122.434922187543705, 37.807339558970696],
[-122.434987762271462, 37.807331615565204],
[-122.434997697142578, 37.807314284382969],
[-122.435025722825799, 37.807326872656006],
[-122.43509127963911, 37.807318242759216],
[-122.435101232376525, 37.807301598001935],
[-122.435129240172827, 37.807313499542126],
[-122.43519308450432, 37.807305584688869],
[-122.435201306859327, 37.807288968315881],
[-122.435231044678986, 37.807300841444686],
[-122.435296619692778, 37.807292898136311],
[-122.4353048420232, 37.807276281756089],
[-122.435332849842581, 37.807288183247969],
[-122.435398406593208, 37.807279553455011],
[-122.435406628899386, 37.80726293706762],
[-122.435436384982893, 37.8072754965727],
[-122.435451904167508, 37.80727318170905],
[-122.435460126807058, 37.807256565312237],
[-122.435488134643933, 37.807268466767304],
[-122.435508433635007, 37.807250278724965],
[-122.435536459373509, 37.807262866602237],
[-122.435602016078107, 37.80725423669606],
[-122.435615572581426, 37.80724302656666],
[-122.435634803373304, 37.807250264946127],
[-122.435655496065394, 37.807247178418407],
[-122.435588180541416, 37.806922774713847],
[-122.435582667693723, 37.80691050382292],
[-122.435534182131477, 37.806909926104069],
[-122.435571873987683, 37.806894886513319],
[-122.435559492755871, 37.80688478880149],
[-122.435545453103273, 37.806877464940861],
[-122.435529719250937, 37.806871542612598],
[-122.435514074542013, 37.806869052731017],
[-122.435493292470525, 37.806868707065597],
[-122.435344768504805, 37.806882132076758],
[-122.435121911744176, 37.806899523218981],
[-122.434871780421872, 37.806933156410132],
[-122.434433666315243, 37.806993908011997],
[-122.434416381034183, 37.806994878255509],
[-122.434278149661878, 37.807004699734037],
[-122.434260827915324, 37.807004297098374],
[-122.434243471085438, 37.807002521306472],
[-122.434227808507927, 37.806999344820447],
[-122.434210379805293, 37.806994823568417],
[-122.434194645688478, 37.806988901067868],
[-122.434180606150846, 37.806981577044944],
[-122.434166548746745, 37.806973567135586],
[-122.434154185915276, 37.806964155430045],
[-122.434143535561248, 37.806954029186485],
[-122.434134579447857, 37.806942501702544],
[-122.434125606153387, 37.806930288047226],
[-122.434123142595496, 37.806902172634167],
[-122.434101162359013, 37.806855835376808],
[-122.434090404384904, 37.806841590530418],
[-122.434081359579054, 37.806826631135792],
[-122.43406669419322, 37.806795281911626],
[-122.434061091508866, 37.806779579065555],
[-122.434055471636611, 37.80676318977391],
[-122.434051599648825, 37.806747458545502],
[-122.434049475890433, 37.80673238537485],
[-122.434047316368137, 37.806715939336222],
[-122.434046440132462, 37.806682304072865],
[-122.43401902773472, 37.806493903623902],
[-122.434011784506907, 37.806481661588982],
[-122.434004523385283, 37.806468732570444],
[-122.433998992958308, 37.806455775445059],
[-122.433995192532976, 37.806442790224423],
[-122.433964135838224, 37.806446732869858],
[-122.433932703641176, 37.806436260667759],
[-122.433886127202001, 37.806442518242726],
[-122.433858853036313, 37.806458760199753],
[-122.433839551447093, 37.806448775787949],
[-122.433791244999313, 37.806455061692688],
[-122.4337639708083, 37.80647130362771],
[-122.433744668882483, 37.806461319206093],
[-122.433694632079209, 37.806467633442772],
[-122.433667357862433, 37.806483875355433],
[-122.43364805594635, 37.806473890918021],
[-122.433596288440668, 37.806480233488799],
[-122.433569014197744, 37.806496475378673],
[-122.433549712637699, 37.806486490919518],
[-122.433503136480809, 37.806492748337497],
[-122.433477574676203, 37.806508275404134],
[-122.433458272433256, 37.806498290941384],
[-122.433404793122563, 37.806505348218124],
[-122.43337751882855, 37.806521590063653],
[-122.433358216941642, 37.806511605578869],
[-122.4333047372658, 37.806518662815925],
[-122.433279192939949, 37.806534876279215],
[-122.433259891408895, 37.80652489177271],
[-122.433206393839583, 37.806531262531053],
[-122.433179119492635, 37.806547504330624],
[-122.433159817625679, 37.806537519813411],
[-122.43309943408164, 37.806545377123399],
[-122.43307215969898, 37.806561618623626],
[-122.433052858195936, 37.806551634357852],
[-122.432990744619175, 37.806559519418741],
[-122.432963470221836, 37.806575761442943],
[-122.43294416836936, 37.80656577661594],
[-122.432885515114464, 37.806573605181946],
[-122.432858276424469, 37.806591219775477],
[-122.432851977723161, 37.806548745928424],
[-122.432876452705358, 37.806557958985486],
[-122.432950642939176, 37.806548502597778],
[-122.432958937194059, 37.806534631840726],
[-122.432985142526235, 37.806543816515223],
[-122.433055872042729, 37.806534416507489],
[-122.433064219557167, 37.806522605325611],
[-122.433088659156226, 37.806530445464773],
[-122.43316111864155, 37.80652101703766],
[-122.433169413207281, 37.806507146534614],
[-122.433195618216885, 37.806516331442637],
[-122.433259444532922, 37.80650773092048],
[-122.433269469079946, 37.806493832326176],
[-122.433293944088703, 37.806503045022133],
[-122.433357787918965, 37.806495131161043],
[-122.433366082106133, 37.806481260924372],
[-122.433392287462695, 37.806490445233919],
[-122.433454400931879, 37.806482559686899],
[-122.433462695099607, 37.806468689443392],
[-122.433488900463672, 37.806477873731517],
[-122.433552726373762, 37.806469273330841],
[-122.433561038053369, 37.806456089520083],
[-122.433587243771214, 37.806465273780709],
[-122.433649339320041, 37.806456701696959],
[-122.43365765098109, 37.806443517879387],
[-122.433683838827505, 37.806452015684521],
[-122.433745952233608, 37.806444129983937],
[-122.433754245996482, 37.806430259725488],
[-122.43378045172912, 37.806439443943233],
[-122.433842565114432, 37.806431558191733],
[-122.433850858857866, 37.806417687926462],
[-122.433877064598036, 37.806426872122742],
[-122.433932274491454, 37.806419786251801],
[-122.433954393037553, 37.806405002549944],
[-122.433958408377592, 37.806426224974288],
[-122.43399121327684, 37.806422940114579],
[-122.433989124957407, 37.806409239815579],
[-122.433988785204093, 37.806396197569725],
[-122.433991530954188, 37.80636868345389],
[-122.433981985185667, 37.806334503629429],
[-122.433942822534163, 37.806226642930824],
[-122.433950330141514, 37.806182569274938],
[-122.433940283395017, 37.806129169298679],
[-122.433873424076822, 37.805821925113698],
[-122.433853509955952, 37.80572198947479],
[-122.433844483207295, 37.805707716218421],
[-122.433823004146618, 37.805680599328511],
[-122.433808821860836, 37.805667784061214],
[-122.433796405313814, 37.805656313293774],
[-122.433780528829729, 37.805644899532474],
[-122.433766418068998, 37.805634829721896],
[-122.43374886455932, 37.805625503361618],
[-122.433731328933206, 37.805616863432853],
[-122.433713811190202, 37.805608909935621],
[-122.433675422356743, 37.805597178553839],
[-122.433656263344702, 37.805592685320363],
[-122.433637140790879, 37.805589565215314],
[-122.433616323330028, 37.805587846350818],
[-122.43359552375523, 37.805586814191379],
[-122.433576472363242, 37.805586439544221],
[-122.433535016220674, 37.805589866131839],
[-122.433516072105618, 37.805593610629053],
[-122.433498858293476, 37.805597326206154],
[-122.432719648836795, 37.805721348282255],
[-122.432704236424613, 37.805727781678655],
[-122.432688842557212, 37.805734900946824],
[-122.432673484086777, 37.805743393361759],
[-122.432659891674504, 37.805753230287664],
[-122.432648029581884, 37.805763038856455],
[-122.432637933547895, 37.805774191937303],
[-122.432627855379891, 37.805786031451547],
[-122.432619525401748, 37.805798529044132],
[-122.432612943621251, 37.805811684990026],
[-122.432606379692928, 37.805825526820627],
[-122.432603276080599, 37.805839312496055],
[-122.432600137407348, 37.805851724742368],
[-122.432500317433352, 37.805940575058216],
[-122.432391913920043, 37.805965699763121],
[-122.432397426855275, 37.805977970519415],
[-122.432516390332239, 37.805959539768239],
[-122.432628376560629, 37.805872550799698],
[-122.432642540805432, 37.805884679499613],
[-122.432527165744716, 37.805974471194816],
[-122.432403189584164, 37.805999851361079],
[-122.43238951051228, 37.806072868560939],
[-122.432404443045669, 37.806114514237365],
[-122.432490452847844, 37.806359639916195],
[-122.43244910342851, 37.806367184726966],
[-122.432520431119073, 37.806580274784345],
[-122.432498061398036, 37.806585448423995],
[-122.432424985907915, 37.806371700265615],
[-122.432400868391511, 37.806376216073893],
[-122.432301460176419, 37.806081865240721],
[-122.43236869294482, 37.806071149476409],
[-122.432380802509087, 37.806004338539104],
[-122.43235326017701, 37.806010283635004],
[-122.432347175872593, 37.805976047248159],
[-122.432319651407369, 37.805982678495994],
[-122.432302633632929, 37.805993944955773],
[-122.432282173360747, 37.806005686719168],
[-122.432280461289963, 37.806006669320666],
[-122.432265120589491, 37.806015848390899],
[-122.432249654811855, 37.806020221869829],
[-122.432227231644546, 37.806023336155739],
[-122.432194784491401, 37.806040349205666],
[-122.432179693529363, 37.806059138076137],
[-122.432171560304809, 37.806079186408191],
[-122.432165157068255, 37.806099206671476],
[-122.432169117939694, 37.806118369860684],
[-122.432192469776069, 37.806150950175152],
[-122.432209844223067, 37.806153412703416],
[-122.432227007583123, 37.806214250207013],
[-122.432213468614208, 37.806226146108848],
[-122.432203354593938, 37.806236612991817],
[-122.432202178080502, 37.806257920803567],
[-122.43220649593593, 37.806290812956746],
[-122.432221571326565, 37.806337949854225],
[-122.432306430556167, 37.806804907302421],
[-122.432383452345448, 37.807103744994606],
[-122.432564682589728, 37.808479722911237],
[-122.432615131844727, 37.808489197136744],
[-122.432610261989339, 37.808501638018015],
[-122.432598381927761, 37.808510760137189],
[-122.432584628175405, 37.80851441914389],
[-122.432342320320956, 37.808516329227118],
[-122.432078432185492, 37.807223425689031],
[-122.431999351719028, 37.807178023752513],
[-122.431443837686672, 37.8072509882197],
[-122.431386630568454, 37.807314417209206],
[-122.431727121174518, 37.8090235974717],
[-122.431341938476805, 37.809056687748011],
[-122.430994999022246, 37.807365467556572],
[-122.430915919059899, 37.807320064620313],
[-122.430360402907354, 37.807393024257635],
[-122.430303194747026, 37.8074564524454],
[-122.43062118366457, 37.809166690185819],
[-122.430108306409053, 37.8092156017048],
[-122.429835000067499, 37.807825332620489],
[-122.429264030219372, 37.807903346686288],
[-122.429270969868725, 37.807970532619663],
[-122.428236680346103, 37.808405663457563],
[-122.427001622006514, 37.808109268493716],
[-122.426995537909036, 37.808141644021028],
[-122.427545144293163, 37.808640840008444],
[-122.428014153033857, 37.808569308327186],
[-122.428043639051282, 37.808704798333089],
[-122.427533242566099, 37.808782500069931],
[-122.427523467767188, 37.808739396087624],
[-122.427301030953672, 37.808773247159571],
[-122.427287243070779, 37.808708920235645],
[-122.427490716316399, 37.808678126013014],
[-122.426909232318224, 37.808151294840016],
[-122.426839001555635, 37.808113298884024],
[-122.426613230594512, 37.808152010516238],
[-122.426560904719622, 37.807943556174827],
[-122.426488519796493, 37.807651861239542],
[-122.426357658303132, 37.807388412718332],
[-122.426257507799036, 37.807185417079722],
[-122.426066893674061, 37.80699787612533],
[-122.4257796482039, 37.806715259689653],
[-122.425627533230582, 37.806456787332273],
[-122.425531817297653, 37.806150610629167],
[-122.425487611207828, 37.806009959663712],
[-122.425486832357592, 37.806006120121552],
[-122.425298563577385, 37.80507790289635],
[-122.425204919000421, 37.804616199985951],
[-122.425109521046082, 37.804145845932808],
[-122.424918804152185, 37.803205508171892],
[-122.424808684502352, 37.802662664019884],
[-122.424731259133807, 37.802280983275736],
[-122.424731635083759, 37.802281009278651],
[-122.424538324517613, 37.801303719934985],
[-122.424517597070277, 37.801201189595353],
[-122.424358667137113, 37.800415027771606],
[-122.424242907462499, 37.799842398528341],
[-122.42417056511286, 37.799484537126212],
[-122.42417056430692, 37.799484532744323],
[-122.423982145098208, 37.798552453684835],
[-122.423982396975646, 37.798552421556877],
[-122.423793785438747, 37.7976164776058],
[-122.423792964234153, 37.797616581376253],
[-122.423601296960271, 37.796691058659476],
[-122.42360129621845, 37.796691056748735],
[-122.423601876988513, 37.796690945913937],
[-122.423601877370103, 37.796690947281171],
[-122.425249874473522, 37.79648130315109],
[-122.426892728667355, 37.796272251947869],
[-122.428537813517494, 37.796062892623418],
[-122.430182832162615, 37.795853517593606],
[-122.431827832563371, 37.79564412085616],
[-122.433469062960725, 37.795435179810816],
[-122.435113289920963, 37.795225833115033],
[-122.436760975027326, 37.795016021968365],
[-122.438402484723895, 37.794806973138577]
]
]
}
},
{
type: 'Feature',
properties: {OBJECTID: 7, ZIP_CODE: 94133, ID: 94133},
geometry: {
type: 'Polygon',
coordinates: [
[
[-122.418530631419571, 37.804999043218864],
[-122.418718265666911, 37.805931520041717],
[-122.418781807492508, 37.806241018338142],
[-122.418781854642702, 37.806241248585302],
[-122.418856183917853, 37.806607498073362],
[-122.418908043871269, 37.806863030947284],
[-122.419086067910683, 37.807803117635643],
[-122.419223966222532, 37.808453096037454],
[-122.419103158585543, 37.808467422639801],
[-122.419122467317635, 37.808544708340989],
[-122.418980965776527, 37.808562118993599],
[-122.418965099874526, 37.808484090255142],
[-122.417886530686005, 37.80861494396968],
[-122.417923033396889, 37.808821741173873],
[-122.417843612318336, 37.80882989992265],
[-122.417811191268285, 37.808647071958433],
[-122.417726330574766, 37.808645704666795],
[-122.417731886802656, 37.808592736810425],
[-122.417624531730937, 37.808591735208473],
[-122.417601699719071, 37.808579058949235],
[-122.41748929463067, 37.808583633129054],
[-122.417485092698755, 37.808420948020817],
[-122.417586902421718, 37.808408305143338],
[-122.417575917233663, 37.808385134844094],
[-122.417669145522396, 37.808375378317514],
[-122.41765313920358, 37.808291858459306],
[-122.41737529132557, 37.808325217992042],
[-122.417344584298249, 37.808141675039998],
[-122.416347061956941, 37.808260209523006],
[-122.416354024690548, 37.808328768820694],
[-122.416305697821443, 37.808334361125667],
[-122.416338782629509, 37.80847597548388],
[-122.41718410046191, 37.808496573566089],
[-122.417183326975007, 37.808533669258267],
[-122.416327431803367, 37.808505689336052],
[-122.416281962820022, 37.808487886292838],
[-122.416150789583881, 37.80850306555427],
[-122.416144807019506, 37.808539558863203],
[-122.416207242955323, 37.808544038257011],
[-122.416187547333237, 37.808854071166344],
[-122.41742892570683, 37.808927290365972],
[-122.417412600540189, 37.80916653558441],
[-122.418193962887401, 37.809680962781762],
[-122.41929170565983, 37.810403664792204],
[-122.41931534577914, 37.810380618458765],
[-122.419422885954745, 37.810454266609824],
[-122.419833484960733, 37.810735462513406],
[-122.419807989843818, 37.810753732347422],
[-122.420595101766708, 37.811266948659416],
[-122.420353825913267, 37.811509857466909],
[-122.420001661760068, 37.81128073132367],
[-122.419845148459302, 37.811320361929653],
[-122.419951835473171, 37.811563099184333],
[-122.419915762044113, 37.811573987538154],
[-122.419724362099529, 37.811134852199615],
[-122.41972295750638, 37.81113418613959],
[-122.419216088646508, 37.810893843097361],
[-122.419185739151644, 37.810925239548666],
[-122.419097184597589, 37.810915006165231],
[-122.418987802638568, 37.810835752698928],
[-122.418935347953351, 37.810882616404598],
[-122.419125945102621, 37.811023040645175],
[-122.419048154317267, 37.811094352280243],
[-122.419465867632354, 37.811381473037407],
[-122.419350858543552, 37.811486353332427],
[-122.418846744437559, 37.811473267417028],
[-122.416831664498375, 37.810133272229294],
[-122.415352404138332, 37.809160867759147],
[-122.415205531523597, 37.809171493557926],
[-122.415205867990196, 37.809184535850846],
[-122.415200978155667, 37.80919628956385],
[-122.415187329670815, 37.809204065160294],
[-122.415151663626474, 37.809230739831797],
[-122.415171052667063, 37.809244159741915],
[-122.415194871121983, 37.809227978313764],
[-122.415413019588954, 37.809363153673537],
[-122.415370856947149, 37.809406415569271],
[-122.415142166917732, 37.809265230241984],
[-122.415155744585249, 37.809254708904987],
[-122.415139781310558, 37.809239860465802],
[-122.415039713249854, 37.809185860695372],
[-122.41488880052961, 37.80924118848273],
[-122.414968316086458, 37.80930376277346],
[-122.414992913705149, 37.809317784591791],
[-122.415006420575594, 37.809304517526144],
[-122.415222785388849, 37.809437662297633],
[-122.415180622939999, 37.809480924119129],
[-122.41496425806919, 37.809347778996823],
[-122.414981136896941, 37.8093310235652],
[-122.41495316698277, 37.809320490118694],
[-122.414845930117963, 37.809256992445782],
[-122.414780776445994, 37.809281398852669],
[-122.414774461081151, 37.809372149219335],
[-122.415340036749569, 37.80975508488244],
[-122.415288518799699, 37.809838328383556],
[-122.41456302792659, 37.80956443044294],
[-122.414023978762671, 37.809471544827012],
[-122.413420668373689, 37.809236173514122],
[-122.41337430449579, 37.809317959368158],
[-122.413395600212141, 37.809338215320878],
[-122.413411510435665, 37.809351004954635],
[-122.413425672211702, 37.809363136228626],
[-122.413441564407123, 37.809375239427176],
[-122.413455726199771, 37.809387370972054],
[-122.413471618398191, 37.809399473891929],
[-122.413487492569899, 37.80941089065314],
[-122.413505097854454, 37.809422279326348],
[-122.413520972382244, 37.809433696077356],
[-122.413538559637843, 37.80944439831444],
[-122.413554416481929, 37.809455128624236],
[-122.413572003401356, 37.809465830861896],
[-122.413607142559428, 37.809485862444731],
[-122.413624694804525, 37.809495192064489],
[-122.414282035042135, 37.809946003161961],
[-122.414200903764723, 37.81002217256772],
[-122.414027337823839, 37.810138985552911],
[-122.413780738047123, 37.809907441000853],
[-122.413857049972947, 37.809845771015681],
[-122.412616832608151, 37.809078904365926],
[-122.412498775807535, 37.80906571088461],
[-122.412398060995869, 37.809120908451149],
[-122.412400109349747, 37.809133236262518],
[-122.412396967167027, 37.809145648237823],
[-122.412390346141294, 37.809157430172931],
[-122.412380210884578, 37.809167208369729],
[-122.412426492762847, 37.809216588736774],
[-122.412450629760414, 37.809212763732177],
[-122.41262839277087, 37.809393236325491],
[-122.412573868329858, 37.809427083257212],
[-122.412396105370902, 37.809246610582868],
[-122.412412861666652, 37.809225050449037],
[-122.412356250722411, 37.809177897728922],
[-122.41234073008107, 37.809180209833173],
[-122.412323390603305, 37.809179117259049],
[-122.412307675451856, 37.809173878278465],
[-122.412099340782589, 37.809285071655154],
[-122.412099676704088, 37.809298113956672],
[-122.412096516784118, 37.809309839486673],
[-122.412089895696084, 37.809321621404543],
[-122.412078012629308, 37.8093307411864],
[-122.412124294062423, 37.809380121676121],
[-122.412148413801376, 37.809375610565525],
[-122.412315935400727, 37.809561743172587],
[-122.412252793608843, 37.809597103119742],
[-122.412093889154491, 37.809409457275514],
[-122.41211066290181, 37.809388583353197],
[-122.412057512853792, 37.809341374382768],
[-122.412040244067796, 37.809343027789311],
[-122.412024634631933, 37.809341907398313],
[-122.412008919813204, 37.809336668372488],
[-122.411894272206808, 37.809388657747697],
[-122.412861765933144, 37.810522545447967],
[-122.412718336607824, 37.810599724430624],
[-122.412705816724809, 37.810584132828346],
[-122.411509089676429, 37.81123738012537],
[-122.41148957739901, 37.811219154555417],
[-122.412686215557258, 37.810562475550952],
[-122.411452462026304, 37.809105334882879],
[-122.411423380532113, 37.809118854220145],
[-122.411248622782082, 37.808920476073887],
[-122.411085557936261, 37.808907323817536],
[-122.411283571142818, 37.809134854169606],
[-122.411256255700124, 37.809149718017444],
[-122.411031438641331, 37.808889659210472],
[-122.410955336187001, 37.808892265747417],
[-122.410765573350616, 37.808850703243849],
[-122.410736033164511, 37.808846374759867],
[-122.410731512966407, 37.808872543480319],
[-122.410649866328171, 37.808861505447226],
[-122.410652655797975, 37.808835364493682],
[-122.410546641899074, 37.808819227353638],
[-122.410441958004114, 37.809325664485378],
[-122.410406413493931, 37.809289843904054],
[-122.410401787512413, 37.809311893981061],
[-122.410630331289113, 37.809716792194763],
[-122.410709259423612, 37.809689418065965],
[-122.410633083668301, 37.809554681184579],
[-122.41064851611452, 37.809548937394226],
[-122.410729547478269, 37.809670547859675],
[-122.410757004560026, 37.809661175631867],
[-122.410712947997226, 37.809563688219221],
[-122.410728380093076, 37.809557944424022],
[-122.410791312651469, 37.80964894551029],
[-122.410822177556227, 37.809637457886339],
[-122.410778085579025, 37.80953859734884],
[-122.410793518010678, 37.809532853539501],
[-122.410858216047515, 37.809625199709956],
[-122.410889098254941, 37.809614398511123],
[-122.410843240792332, 37.809514193154044],
[-122.410858672867818, 37.809508449341749],
[-122.410923406302985, 37.809602168351013],
[-122.410950845665482, 37.809592109640889],
[-122.410904952795121, 37.809490531433248],
[-122.410920384860916, 37.809484787612853],
[-122.410985153693048, 37.809579879462774],
[-122.411024617975485, 37.809566192280315],
[-122.410978689334627, 37.809463241232329],
[-122.410994104065225, 37.809456810959603],
[-122.411058925978935, 37.809553962080649],
[-122.411089808473605, 37.809543160823544],
[-122.411042113998747, 37.809438864964896],
[-122.411057546043196, 37.809433121126496],
[-122.411195348876859, 37.80967536169041],
[-122.41117818636998, 37.809681133587063],
[-122.411116453591873, 37.809569511282646],
[-122.41104955067469, 37.80959325722408],
[-122.41111476155065, 37.809705510201134],
[-122.411097598684464, 37.809711282091641],
[-122.411034100233891, 37.80959831463543],
[-122.410977509113948, 37.809619146556997],
[-122.411041007143098, 37.809732113774253],
[-122.411025592359422, 37.809738544052792],
[-122.410960346257056, 37.809624918427609],
[-122.410907162593759, 37.809643635209717],
[-122.410972426300958, 37.809757947300923],
[-122.410956993836351, 37.80976369113344],
[-122.410891730147881, 37.809649379033807],
[-122.410835138249837, 37.809670210623501],
[-122.410900419538606, 37.809785209191027],
[-122.410884987408849, 37.809790953008481],
[-122.410819706138938, 37.809675954432528],
[-122.410764809648242, 37.809695385622547],
[-122.410830108511632, 37.809811070390921],
[-122.41081467602497, 37.809816814204737],
[-122.410747646757216, 37.80970115746215],
[-122.410639354408318, 37.809731067210933],
[-122.410896947885561, 37.810188372007936],
[-122.410975841429376, 37.810159624823598],
[-122.410901536485113, 37.810030351311333],
[-122.410916969009435, 37.810024607486383],
[-122.410997965998874, 37.810144845157168],
[-122.41103912533255, 37.810129757339681],
[-122.410977003992286, 37.810003033077805],
[-122.410992436505126, 37.809997289242951],
[-122.411075146003029, 37.810116812392209],
[-122.411112880121649, 37.810103153220581],
[-122.411050758345823, 37.809976429551675],
[-122.411066208857108, 37.809971371863952],
[-122.411147188358683, 37.810090922996501],
[-122.411190078057032, 37.810075806811575],
[-122.411127956511336, 37.809949082902484],
[-122.411143389001253, 37.809943339047805],
[-122.411224368596535, 37.81006289012803],
[-122.411256964037719, 37.810051374350031],
[-122.411194842059288, 37.809924650755768],
[-122.41121027488505, 37.809918906886708],
[-122.4112929849924, 37.810038429879377],
[-122.411332431435511, 37.81002405588923],
[-122.411270309344076, 37.809897332059471],
[-122.411285742158299, 37.809891588180513],
[-122.411366721926342, 37.810011139164168],
[-122.411401047752832, 37.809999595302976],
[-122.411337195490745, 37.809872899820583],
[-122.411354358375661, 37.809867127895387],
[-122.411435338227506, 37.809986678832487],
[-122.411471359105562, 37.809973733758071],
[-122.411409237165202, 37.809847009994684],
[-122.411424669612117, 37.809841266103092],
[-122.41150566722375, 37.80996150342942],
[-122.411546826352634, 37.809946415434261],
[-122.411484704299241, 37.809819691435401],
[-122.411500136734659, 37.809813947533918],
[-122.411582846845619, 37.809933470331323],
[-122.4116188680253, 37.809920525480692],
[-122.411556745877689, 37.809793801793724],
[-122.411572177956074, 37.809788057888397],
[-122.411653176094603, 37.809908295109032],
[-122.4116909096619, 37.809894636032141],
[-122.411628787405917, 37.809767912107915],
[-122.411644219819436, 37.809762168187518],
[-122.411725217707357, 37.809882405639449],
[-122.411759525734439, 37.809870174962185],
[-122.411697403388885, 37.809743451348098],
[-122.411712835792031, 37.809737707418712],
[-122.411881278427131, 37.810026834486933],
[-122.41186411554628, 37.81003260648864],
[-122.411782586611622, 37.809891776308959],
[-122.411719126796399, 37.80991478009306],
[-122.411802385721074, 37.810055582271964],
[-122.411785222827419, 37.810061354262146],
[-122.411703694356945, 37.809920524023092],
[-122.411645389734517, 37.809942070760108],
[-122.411726900787329, 37.810082214596392],
[-122.411711467967621, 37.810087958532876],
[-122.411628227200978, 37.809947842721932],
[-122.41156305384375, 37.809971560917056],
[-122.411644564773539, 37.810111704809465],
[-122.411629131941311, 37.810117448735141],
[-122.411547621726527, 37.809977304820983],
[-122.411485874174801, 37.809999594002001],
[-122.411567384297499, 37.810139737958238],
[-122.411551952145643, 37.810145481862563],
[-122.411470441699677, 37.81000533790143],
[-122.411408676427612, 37.810026940604999],
[-122.411490204455376, 37.81016777104513],
[-122.41147477194562, 37.81017351494495],
[-122.411393243940836, 37.810032684494281],
[-122.411328070780158, 37.81005640255357],
[-122.41140959834128, 37.810197233054254],
[-122.411394148491496, 37.81020229050096],
[-122.41131090784944, 37.810062174474744],
[-122.411249177828495, 37.810085149968437],
[-122.411330687944414, 37.810225294080347],
[-122.4113152554104, 37.810231037959227],
[-122.411232014885002, 37.810090921878086],
[-122.411175405434363, 37.810111067735896],
[-122.411256933104966, 37.81025189806045],
[-122.411241500559697, 37.810257641929645],
[-122.411159972912074, 37.810116811594561],
[-122.411103380733024, 37.810137643311123],
[-122.411184890977466, 37.810277787516789],
[-122.411169458075165, 37.810283531382133],
[-122.411087948545713, 37.810143387154753],
[-122.411017619235537, 37.810168562307894],
[-122.411099128998927, 37.810308706303054],
[-122.411083696429642, 37.810314450151544],
[-122.411004005467134, 37.81017771001823],
[-122.410905971459442, 37.810202646996828],
[-122.411216101543474, 37.810750434096292],
[-122.411307020324173, 37.810718058221234],
[-122.411214614556201, 37.8105581756828],
[-122.411231794935318, 37.81055309021869],
[-122.411325542368957, 37.810697843090367],
[-122.411366719609191, 37.810683441322411],
[-122.411291830600106, 37.810531515646439],
[-122.411307262852333, 37.810525771776568],
[-122.411402864908169, 37.810675301597549],
[-122.411522935608915, 37.810632152260467],
[-122.411446209498621, 37.810476136111049],
[-122.411461659747943, 37.810471078652185],
[-122.411555407533228, 37.810615831617966],
[-122.41160859172949, 37.810597114547022],
[-122.411624041992908, 37.810592057067005],
[-122.411677226161913, 37.810573340239586],
[-122.411600605842565, 37.810421442809904],
[-122.411617768833821, 37.810415670846979],
[-122.411711534523249, 37.810561109852458],
[-122.411738974133357, 37.810551050960818],
[-122.411686385419046, 37.810391210096554],
[-122.411701817957677, 37.810385466169308],
[-122.411764700631707, 37.810541706828857],
[-122.411829892102887, 37.810518674961713],
[-122.41176529620391, 37.810363148827776],
[-122.411780746061879, 37.81035809133261],
[-122.411847054752684, 37.810512902971148],
[-122.411915671345156, 37.810488441813206],
[-122.411840781416544, 37.810336516754752],
[-122.411856213585779, 37.81033077281284],
[-122.411935941632692, 37.810468884965481],
[-122.411921351800245, 37.810305681309181],
[-122.411938638145514, 37.810304714362765],
[-122.411953405498025, 37.81047478237366],
[-122.412071780474818, 37.810433033401743],
[-122.412010591984938, 37.810275392256564],
[-122.412115642263785, 37.810455670909619],
[-122.412100192408317, 37.810460728448561],
[-122.412084406280471, 37.810452743692409],
[-122.41176878056207, 37.810565675738737],
[-122.41175334799118, 37.810571419674538],
[-122.411684748938015, 37.810596566899896],
[-122.411669298331702, 37.810601624393506],
[-122.411598969130708, 37.810626799885483],
[-122.411583536533968, 37.810632543799024],
[-122.411518344886403, 37.810655575529537],
[-122.411502912623547, 37.810661319426885],
[-122.411432582949345, 37.810686494275835],
[-122.411417150327338, 37.81069223816754],
[-122.411223323763636, 37.810761991358582],
[-122.41132311146211, 37.810939609065692],
[-122.411244573940635, 37.811116682909216],
[-122.410949479920689, 37.811220352571489],
[-122.410930216342933, 37.811279036146971],
[-122.410681455051716, 37.81136684679597],
[-122.410613578346386, 37.811352838185535],
[-122.410419696661208, 37.811420531005773],
[-122.410148367227194, 37.811505958616635],
[-122.408511879957302, 37.811283856992631],
[-122.407577358643394, 37.808803424612513],
[-122.407596251976869, 37.808797625245276],
[-122.408535735474004, 37.811269050069917],
[-122.410153064417187, 37.811486654300801],
[-122.41040703579597, 37.811399447392162],
[-122.410397994853795, 37.811384485925792],
[-122.410199185064457, 37.81132796106332],
[-122.410033026138677, 37.811396577420801],
[-122.410028523199003, 37.811423432538689],
[-122.408569038736545, 37.811217693403208],
[-122.408604939400348, 37.811065346992223],
[-122.408622314546491, 37.811067812437848],
[-122.408601547208733, 37.811202746444437],
[-122.408639776140404, 37.811208308039326],
[-122.408681379486623, 37.811075784005041],
[-122.408700502750108, 37.811078908147074],
[-122.408681466003685, 37.811213813888727],
[-122.408723173522517, 37.811220006160561],
[-122.408763046269982, 37.811087510102226],
[-122.408782169539933, 37.811090634230986],
[-122.40876313259281, 37.811225539991135],
[-122.408803092361268, 37.811231073796982],
[-122.408842964625947, 37.811098577717516],
[-122.408862088248199, 37.811101701827724],
[-122.408843051796623, 37.811236607869454],
[-122.408881280424794, 37.811242169666208],
[-122.408921153248102, 37.811109673549396],
[-122.408942006980325, 37.811112769370261],
[-122.408921240203938, 37.811247703157434],
[-122.408964677875915, 37.811253867342053],
[-122.409004568208587, 37.811122057634492],
[-122.409025404309773, 37.811124467552588],
[-122.409006385440833, 37.811260059513721],
[-122.409042866672721, 37.811264962818356],
[-122.409082738873835, 37.811132466653085],
[-122.409101862168811, 37.811135590729982],
[-122.409082825791046, 37.81127049654058],
[-122.409126264189027, 37.81127666092906],
[-122.409166136247578, 37.811144164735886],
[-122.409185259542042, 37.811147288524687],
[-122.409166223312823, 37.811282194348451],
[-122.409211409832309, 37.811289016857089],
[-122.409251281745554, 37.811156520635443],
[-122.40927213551177, 37.811159616672512],
[-122.40925136932222, 37.811294550516585],
[-122.409279162626277, 37.81129822094033],
[-122.40932078253644, 37.811166383119904],
[-122.409339888202226, 37.811168820995697],
[-122.409320870242325, 37.811304413000762],
[-122.409364308333835, 37.811310577307111],
[-122.409405910098016, 37.811178053025465],
[-122.409425033757373, 37.811181176769772],
[-122.409405998308287, 37.811316082900326],
[-122.40944074878638, 37.811321014101964],
[-122.40948063795679, 37.811189203966087],
[-122.409501474085218, 37.811191613525516],
[-122.409480725959895, 37.811327233846249],
[-122.409527624648632, 37.811333341792235],
[-122.409567496367472, 37.811200845459226],
[-122.409588350159311, 37.811203941440354],
[-122.40956758453207, 37.81133887533899],
[-122.409607544075371, 37.811344408877801],
[-122.409647432976385, 37.811212599235269],
[-122.409666538650669, 37.811215036508962],
[-122.4096475212896, 37.811350629114692],
[-122.409687480492039, 37.811356162357413],
[-122.409729082397121, 37.811223637951706],
[-122.409748205742758, 37.811226761923784],
[-122.40972917051603, 37.811361667836366],
[-122.40976739996718, 37.811367229334621],
[-122.409807270930216, 37.811234732926998],
[-122.409826394289098, 37.811237857160975],
[-122.409807359540622, 37.811372762805725],
[-122.409849067242604, 37.811378954679277],
[-122.409888938066231, 37.811246458244362],
[-122.409909791884289, 37.81124955416864],
[-122.409890757298484, 37.811384460375677],
[-122.409934195469972, 37.811390623922954],
[-122.409972335687982, 37.811258155482349],
[-122.409991388408557, 37.811258533667043],
[-122.410051001542016, 37.811355083215751],
[-122.410080225111116, 37.811347055723829],
[-122.410039452733983, 37.811242647397464],
[-122.410060076955276, 37.811236819614464],
[-122.410111355764599, 37.81134586484395],
[-122.410186754248173, 37.811315801374953],
[-122.410002034752523, 37.810999466686859],
[-122.410015948336749, 37.810934689402742],
[-122.410036236914948, 37.810915819594705],
[-122.410045418985376, 37.810868973454134],
[-122.40995683043738, 37.810857360334786],
[-122.409929090780366, 37.810990347084882],
[-122.409911715601922, 37.810987881557118],
[-122.409936471227283, 37.810873484930354],
[-122.409873927744698, 37.810864883322409],
[-122.409849172039969, 37.810979280485419],
[-122.409831796859692, 37.810976814671307],
[-122.409859730943055, 37.810851378751366],
[-122.409793708942289, 37.810842147255194],
[-122.409767522509881, 37.810968241308018],
[-122.409751878141279, 37.810965747731309],
[-122.409778063900148, 37.81083965341854],
[-122.409713790367476, 37.810831080014538],
[-122.409685856045158, 37.810956515900401],
[-122.409668480889763, 37.810954050611365],
[-122.409696415233427, 37.810828614454991],
[-122.40963387182353, 37.810820012994292],
[-122.409609415933446, 37.810946079263672],
[-122.409592040775962, 37.810943613688799],
[-122.409616496701801, 37.810817547697539],
[-122.409552222853762, 37.810808973936524],
[-122.409527766835737, 37.810935040463818],
[-122.4095103913304, 37.810932574607932],
[-122.409534847384165, 37.81080650835878],
[-122.409470556252117, 37.810797248385086],
[-122.4094443696399, 37.810923342636215],
[-122.409426994147125, 37.810920877042648],
[-122.409453181134111, 37.810794782789721],
[-122.40938717688249, 37.810786237228463],
[-122.409360972477401, 37.810911645024227],
[-122.409343596990126, 37.810909179418339],
[-122.409371532226004, 37.810783743881395],
[-122.409307258435504, 37.810775169986833],
[-122.409279323454484, 37.810900606052307],
[-122.409261948311553, 37.810898140154237],
[-122.409289883328043, 37.810772704367388],
[-122.409222130673314, 37.810763500569543],
[-122.409194195884822, 37.810888936060401],
[-122.409178551206097, 37.810886442413199],
[-122.409204755910437, 37.810761034657382],
[-122.409142194961319, 37.810751746498703],
[-122.409114277009948, 37.810877868693844],
[-122.409096902238019, 37.810875403314995],
[-122.409124837171674, 37.81074996729771],
[-122.409062293894237, 37.810741365533815],
[-122.409034358851102, 37.810866801261916],
[-122.409016983385186, 37.810864335607896],
[-122.409044919155974, 37.810738900147257],
[-122.408982375890048, 37.810730298066382],
[-122.408954440030968, 37.81085573406159],
[-122.408937065255401, 37.810853268110044],
[-122.408965000457812, 37.810727832404666],
[-122.408898979017181, 37.810718600127345],
[-122.408871043014514, 37.810844035828495],
[-122.408853668258587, 37.8108415704138],
[-122.408881603590444, 37.810716134453337],
[-122.408815582170575, 37.810706902129297],
[-122.408787646031413, 37.810832337810972],
[-122.408770288923606, 37.810830558546641],
[-122.408798206756401, 37.810704436717558],
[-122.408730454910014, 37.810695232351428],
[-122.408702518970472, 37.810820667733054],
[-122.408686891971527, 37.810818860457857],
[-122.408713079833362, 37.810692766372398],
[-122.408650536651805, 37.810684164390111],
[-122.408622600588473, 37.810809600027646],
[-122.408605243143839, 37.810807820744628],
[-122.408633161587474, 37.810681698673903],
[-122.408556510134844, 37.810663024107164],
[-122.408588984612706, 37.810512106294745],
[-122.408606359289806, 37.810514572023159],
[-122.408587340511048, 37.810650164195629],
[-122.408629047705375, 37.810656356501411],
[-122.408668902323384, 37.810523174029143],
[-122.408686277704945, 37.81052564000916],
[-122.40866552792356, 37.81066125993452],
[-122.408708965930458, 37.810667424477344],
[-122.408748820750048, 37.810534241698186],
[-122.40876619543765, 37.81053670740306],
[-122.40874717695219, 37.810672299875314],
[-122.408794093155748, 37.810679094270796],
[-122.408833947835987, 37.810545911737734],
[-122.408849592085303, 37.810548405436371],
[-122.40883057374208, 37.810683997647232],
[-122.408875741869977, 37.810690133853562],
[-122.408915614060632, 37.81055763773044],
[-122.408932971115192, 37.810559417248072],
[-122.408913970565308, 37.81069569563472],
[-122.408960869161646, 37.810701804075741],
[-122.409000741206668, 37.810569307924148],
[-122.409018098597954, 37.810571086874475],
[-122.40899736742189, 37.810707393837795],
[-122.409040787124908, 37.810712871283229],
[-122.409080641733894, 37.810579688936649],
[-122.409096286337629, 37.810582182322406],
[-122.409077268090201, 37.810717774577761],
[-122.40911897536337, 37.810723966710214],
[-122.409158829484909, 37.81059078406853],
[-122.409176204199355, 37.810593249712966],
[-122.409157186441121, 37.810728841975312],
[-122.409200623829136, 37.810735006073635],
[-122.409240478156264, 37.81060182339904],
[-122.409257853229136, 37.810604289300421],
[-122.409238852918037, 37.810740567743849],
[-122.409285751569428, 37.810746676055665],
[-122.409325605404021, 37.810613493358183],
[-122.409341250023104, 37.81061598671144],
[-122.40932224986912, 37.810752265442567],
[-122.4093656699755, 37.81075774303735],
[-122.40940554098205, 37.810625246755905],
[-122.409422898749284, 37.810627025915643],
[-122.409403898742326, 37.810763304659638],
[-122.409447336517104, 37.810769468661483],
[-122.40948544197218, 37.810635627488516],
[-122.409502816715019, 37.810638093359387],
[-122.409485547293727, 37.810774343825763],
[-122.409528985434875, 37.8107805080665],
[-122.409565359949454, 37.810646694615322],
[-122.409582735382628, 37.810649160188639],
[-122.409567196568673, 37.810785383198734],
[-122.409612364812048, 37.81079151884834],
[-122.409648756853613, 37.810658392357979],
[-122.409666132285238, 37.810660857644436],
[-122.409648863165444, 37.8107971084087],
[-122.409690552872675, 37.810802613901892],
[-122.409730423669671, 37.810670117506156],
[-122.409747781109076, 37.81067189662366],
[-122.409728781340874, 37.810808175424455],
[-122.409772201856015, 37.810813652863935],
[-122.409810324407417, 37.810680498024219],
[-122.409827699517621, 37.810682963841622],
[-122.409810430682086, 37.810819214354417],
[-122.4098555989803, 37.810825350459979],
[-122.409895451834942, 37.810692167571958],
[-122.409912826590485, 37.810694632833282],
[-122.409895222374288, 37.810817841328777],
[-122.409936876790525, 37.81082197386079],
[-122.409973639826163, 37.810703262163521],
[-122.409991014940061, 37.810705727682269],
[-122.409959938125212, 37.81084357554878],
[-122.410048526318235, 37.810855188946014],
[-122.41005622518567, 37.810817980946432],
[-122.410043511556253, 37.810794838529432],
[-122.410054194116455, 37.810739040961913],
[-122.410078049482479, 37.810724233171044],
[-122.410094488114893, 37.810623018930904],
[-122.410081703845862, 37.810597130219826],
[-122.410092509988729, 37.810546137980772],
[-122.410117989755761, 37.810527183534326],
[-122.410136070412563, 37.810422508799753],
[-122.410119930917134, 37.810400795044814],
[-122.41012762970874, 37.810363587311961],
[-122.410156217048225, 37.810330848613937],
[-122.41017620465729, 37.81023300994017],
[-122.410158299784257, 37.810209951610261],
[-122.410179752853338, 37.810101788351538],
[-122.410076402542387, 37.809920107344034],
[-122.410041882266327, 37.809924099736733],
[-122.410019086454341, 37.809912794612728],
[-122.409979357246016, 37.809916185169463],
[-122.409958274206915, 37.809904165299031],
[-122.409922023510461, 37.809908185953802],
[-122.409899227375504, 37.80989688081219],
[-122.409856019993072, 37.80989964065347],
[-122.409833224216882, 37.809888335493483],
[-122.409796955869524, 37.80989166994722],
[-122.409774159751635, 37.809880364506853],
[-122.40973616131653, 37.809883726681605],
[-122.409715095991231, 37.809872393479395],
[-122.409673618697951, 37.809875125240453],
[-122.409650822957047, 37.809863820045173],
[-122.409611093758144, 37.809867210477904],
[-122.409590028449543, 37.809855876978752],
[-122.409552029326491, 37.809859239105428],
[-122.40952923395507, 37.809847933880995],
[-122.409489504405954, 37.809851324003851],
[-122.409466709046484, 37.809840018767318],
[-122.409426961850301, 37.809842722706414],
[-122.409405896576772, 37.809831389174342],
[-122.409362689214092, 37.809834148834945],
[-122.409339893540192, 37.80982284385405],
[-122.40930537326976, 37.809826836031277],
[-122.409282577599768, 37.809815530764716],
[-122.409239369556644, 37.809818290665945],
[-122.409216574238357, 37.809806985106434],
[-122.409183784056154, 37.809810949516532],
[-122.409160988755644, 37.809799644220845],
[-122.409117781056253, 37.80980240379737],
[-122.409096715848435, 37.809791070484557],
[-122.409062177941692, 37.809794376702477],
[-122.40903938231871, 37.80978307138885],
[-122.409001401198537, 37.80978711949534],
[-122.408980336012803, 37.809775786161715],
[-122.408940588826241, 37.809778489662385],
[-122.408917793572726, 37.809767184319618],
[-122.408872855464537, 37.809769972088361],
[-122.408850059531787, 37.809758666743676],
[-122.408812061110055, 37.80976202834627],
[-122.408789265535077, 37.809750722984248],
[-122.40874778827569, 37.809753454419798],
[-122.408724992367041, 37.80974214905094],
[-122.408688724387432, 37.809745483158423],
[-122.408665928836285, 37.809734177772519],
[-122.408627929726592, 37.809737539327024],
[-122.408605134533261, 37.809726233923747],
[-122.40856886620287, 37.809729567725441],
[-122.408546070674888, 37.809718262316345],
[-122.408502862660981, 37.80972102194783],
[-122.408480067491766, 37.809709716520373],
[-122.408442068732256, 37.809713078009395],
[-122.408419272882526, 37.809701772581377],
[-122.40838475263304, 37.809705765038423],
[-122.408363687557454, 37.809694431319926],
[-122.408318732173385, 37.809696532434543],
[-122.408295936693619, 37.809685226977031],
[-122.408254459445629, 37.809687957964584],
[-122.408238053815026, 37.809790545390122],
[-122.40821721811372, 37.809788135332319],
[-122.408256439046454, 37.809562942360742],
[-122.408275562248491, 37.809566066566916],
[-122.408269450984477, 37.809665053549438],
[-122.408286825452777, 37.809667519325309],
[-122.40832766898086, 37.809572777430049],
[-122.408321557439706, 37.809671764420713],
[-122.408342410750109, 37.809674860622998],
[-122.408383254218379, 37.809580118983206],
[-122.408377142750709, 37.809679105976613],
[-122.408394517910963, 37.809681571450852],
[-122.408435360963296, 37.809586829524143],
[-122.408429249910625, 37.809685816514552],
[-122.408451833660507, 37.80968888497187],
[-122.408492676297627, 37.809594143031056],
[-122.408484852889558, 37.809693844457087],
[-122.408503958134872, 37.809696281919784],
[-122.408544801055655, 37.809601539955445],
[-122.408536959377372, 37.809700554958617],
[-122.408557795064482, 37.809702964959982],
[-122.408598638259278, 37.809608222696959],
[-122.408592544731249, 37.809707896412988],
[-122.408615128826568, 37.809710964284278],
[-122.40865597161357, 37.809616222281704],
[-122.408639231230907, 37.809705767179551],
[-122.408663757193779, 37.809717044567101],
[-122.408704599922103, 37.80962230254778],
[-122.408696758454738, 37.809721317561177],
[-122.408722821063833, 37.809725016115578],
[-122.408763663375069, 37.80963027408157],
[-122.408757553102589, 37.809729261082566],
[-122.408776676029532, 37.8097323854876],
[-122.408817518615137, 37.809637643154893],
[-122.408811408067763, 37.809736630164153],
[-122.408839165466787, 37.809738927817939],
[-122.408880043284086, 37.809645558612985],
[-122.408873932819418, 37.809744545625371],
[-122.40889130733342, 37.809747011586715],
[-122.408932150126873, 37.809652269208989],
[-122.408926057042962, 37.809751942941425],
[-122.408946892742989, 37.809754352324887],
[-122.408987735476614, 37.809659610202615],
[-122.408979894728986, 37.80975862522854],
[-122.409002478177683, 37.809761693586005],
[-122.409043320837327, 37.809666951170023],
[-122.40903548016307, 37.809765966199507],
[-122.409052855026459, 37.809768431856902],
[-122.409093697286551, 37.809673689703786],
[-122.409085856332652, 37.809772704742095],
[-122.409106709703295, 37.809775800809213],
[-122.409147552244775, 37.809681058631973],
[-122.409141441787753, 37.809780045663132],
[-122.409162295162758, 37.809783141720409],
[-122.409203137637348, 37.809688399524063],
[-122.409195297173937, 37.809787414563765],
[-122.409214402473708, 37.809789852185943],
[-122.409255244539409, 37.809695109977277],
[-122.409249134570899, 37.809794097008144],
[-122.409268257528154, 37.809797221058851],
[-122.409309099536273, 37.809702479106257],
[-122.40930298963896, 37.809801466139774],
[-122.409325573445983, 37.809804533880602],
[-122.409366415377917, 37.809709791633715],
[-122.409360305556405, 37.809808778670053],
[-122.409379410874138, 37.809811216540062],
[-122.409420252741057, 37.809716474274637],
[-122.409412429873498, 37.809816175771125],
[-122.409431535526792, 37.809818613077915],
[-122.409472376985178, 37.809723870800191],
[-122.409466267649847, 37.80982285783616],
[-122.409488851138192, 37.809825926100473],
[-122.409529693219639, 37.809731183791826],
[-122.409521853187186, 37.809830198852438],
[-122.409544436665897, 37.809833266556943],
[-122.409585278680453, 37.809738524229203],
[-122.409577438721357, 37.809837539293362],
[-122.409600022218754, 37.809840607536366],
[-122.409640864166391, 37.809745865189505],
[-122.409624124935263, 37.809835409950374],
[-122.409648668402042, 37.809847373575664],
[-122.409694718878129, 37.809753233598798],
[-122.409683400550946, 37.809851618269946],
[-122.40970946326199, 37.809855316880828],
[-122.409750304385923, 37.809760574507528],
[-122.409744195418114, 37.809859561557211],
[-122.409763300747386, 37.809861998815862],
[-122.409800681301817, 37.809767312459051],
[-122.409798050568668, 37.809866929913561],
[-122.409813677394268, 37.809868737041889],
[-122.409859727674416, 37.809774597001002],
[-122.409848409562613, 37.809872981687576],
[-122.409872741508423, 37.809876708014343],
[-122.409896207540612, 37.809779500054304],
[-122.409902917913584, 37.809838449581335],
[-122.409927956256155, 37.809869633383848],
[-122.410058214833967, 37.809886065459693],
[-122.40978805552237, 37.809411107578008],
[-122.409692176324654, 37.809452490025258],
[-122.409753394315103, 37.809476907533615],
[-122.409795083288799, 37.80948241299123],
[-122.409790439454952, 37.809503776606206],
[-122.409767643810284, 37.809492471432705],
[-122.409733123723498, 37.809496464009918],
[-122.40971032808983, 37.809485158825325],
[-122.40967926884106, 37.809489095348837],
[-122.409656473217836, 37.809477790153814],
[-122.409630622889722, 37.80948232932171],
[-122.409609557687361, 37.809470995825244],
[-122.409573289526762, 37.809474329935902],
[-122.409550493924201, 37.809463024720365],
[-122.40952291317636, 37.809467591881273],
[-122.409500117230408, 37.809456286387039],
[-122.409465597146067, 37.809460278886],
[-122.409442784254765, 37.809448287206727],
[-122.409413473087668, 37.809452882357093],
[-122.409390677508952, 37.809441576836036],
[-122.409354409006824, 37.809444910885041],
[-122.409331613792688, 37.809433605621535],
[-122.409304033042332, 37.809438172731298],
[-122.409281237484791, 37.809426867189075],
[-122.409251926309096, 37.809431462024762],
[-122.40922913042256, 37.809420156752616],
[-122.409192844962547, 37.809422804303409],
[-122.409170049433754, 37.809411499014253],
[-122.409133798935159, 37.809415519427169],
[-122.409110985426068, 37.809403527969394],
[-122.409076465338302, 37.809407520079958],
[-122.409053670177968, 37.809396214762678],
[-122.409027819488273, 37.809400753529559],
[-122.409005024337446, 37.809389448202872],
[-122.408973965091334, 37.809393384540734],
[-122.408951169258785, 37.809382079214799],
[-122.40891837994225, 37.80938604354025],
[-122.408895584120444, 37.809374738203552],
[-122.408862794804193, 37.809378702513534],
[-122.408839998993102, 37.809367397166127],
[-122.408808940093522, 37.809371333454934],
[-122.408786144638981, 37.809360028091476],
[-122.408756815463747, 37.809363936372364],
[-122.4087340203655, 37.80935263099321],
[-122.408701230358204, 37.809356595269499],
[-122.408678435270645, 37.809345289879595],
[-122.408645645263661, 37.809349254140457],
[-122.408622850186802, 37.809337948739781],
[-122.408591790941983, 37.809341884977052],
[-122.408568995183444, 37.809330579577171],
[-122.408536205869268, 37.809334543796403],
[-122.408513410121444, 37.809323238385751],
[-122.408482351223043, 37.809327174588631],
[-122.408459555831755, 37.809315869161935],
[-122.408426766172141, 37.809319833356362],
[-122.408403970791582, 37.809308527918944],
[-122.408371181132239, 37.809312492097938],
[-122.408350116177374, 37.809301158650754],
[-122.408315578458229, 37.809304464375806],
[-122.408292783099327, 37.809293158916844],
[-122.408263471569185, 37.80929775351261],
[-122.408240676566351, 37.80928644803798],
[-122.408207886561954, 37.809290412177198],
[-122.408185073925949, 37.809278420254287],
[-122.408155762741032, 37.809283014817716],
[-122.408132967413039, 37.809271709327838],
[-122.408100177755486, 37.809275673431507],
[-122.408077382438208, 37.809264367930865],
[-122.408039154542493, 37.809258805877114],
[-122.408058756181504, 37.809145866471148],
[-122.408066594168815, 37.809248747837302],
[-122.408087429706811, 37.809251157647353],
[-122.408126507222988, 37.809155071214583],
[-122.408120448716886, 37.809256117235002],
[-122.408137823084502, 37.809258583032992],
[-122.408178631290198, 37.80916246830698],
[-122.408172554871641, 37.809262828172606],
[-122.408196869235468, 37.809265868402413],
[-122.408235946617765, 37.809169781933626],
[-122.408229888259399, 37.809270827959395],
[-122.408254202289157, 37.809273868457552],
[-122.408293279587355, 37.809177781420765],
[-122.408287221320464, 37.809278827998476],
[-122.408308056867014, 37.809281237494979],
[-122.408347134113498, 37.809185150989656],
[-122.408332158807269, 37.809276040458201],
[-122.408356702573101, 37.809288004342378],
[-122.408397510165557, 37.809191889546774],
[-122.408391452032305, 37.809292935854977],
[-122.408412287593251, 37.809295345607659],
[-122.408453095124827, 37.809199231067545],
[-122.408447037059574, 37.809300277103894],
[-122.408471350761801, 37.809303317562879],
[-122.408512158553279, 37.809207202447709],
[-122.408506100235769, 37.809308249041685],
[-122.408521727251397, 37.8093100560612],
[-122.408560804236558, 37.809213969485583],
[-122.408554745970605, 37.809315015532796],
[-122.408577329958945, 37.809318083960704],
[-122.408618119627377, 37.809221282377308],
[-122.40861206179197, 37.80932232869629],
[-122.408636375847209, 37.809325368841058],
[-122.408677182759092, 37.809229254229557],
[-122.408671125342451, 37.80933030027127],
[-122.40868850009889, 37.809332766257086],
[-122.408727576866028, 37.809236679077507],
[-122.408721501183379, 37.80933703897],
[-122.408740606697776, 37.80933947666351],
[-122.408781413482515, 37.80924336201619],
[-122.408775356206561, 37.809344408062977],
[-122.40879620945104, 37.809347504459829],
[-122.408837016154081, 37.809251389244281],
[-122.408830941310313, 37.809351749130926],
[-122.408848316070006, 37.809354214818633],
[-122.4088891230695, 37.809258100128716],
[-122.40888306559286, 37.80935914618636],
[-122.408902170426074, 37.809361583864899],
[-122.408942977698928, 37.809265468876312],
[-122.408936919955934, 37.809366515216752],
[-122.408959503968703, 37.809369583296906],
[-122.408998562767209, 37.809272810139959],
[-122.408992505092215, 37.809373856208545],
[-122.409013358354017, 37.809376952566957],
[-122.409054147832379, 37.809280150828236],
[-122.409048090239509, 37.809381197174098],
[-122.409070674261315, 37.809384265232971],
[-122.409109750575112, 37.809288178476827],
[-122.40910369305017, 37.809389224550813],
[-122.409122798597593, 37.809391662456981],
[-122.409161857180791, 37.809294888697217],
[-122.409155800079347, 37.809395935042737],
[-122.409180113834879, 37.809398975080981],
[-122.409220920775525, 37.809302860271487],
[-122.409214863400692, 37.809403906350916],
[-122.409233968955562, 37.809406344239079],
[-122.409273045055528, 37.809310256880117],
[-122.409266988111227, 37.80941130350562],
[-122.40929130186926, 37.809414343246381],
[-122.409332108667385, 37.80931822812412],
[-122.409326033795196, 37.809418588046228],
[-122.409343408940103, 37.809421053929945],
[-122.40938421532131, 37.809324938520824],
[-122.409378158527119, 37.809425985151776],
[-122.40939901180549, 37.809429080892826],
[-122.409438070062492, 37.809332307591447],
[-122.409432013326835, 37.809433353675857],
[-122.409477180743622, 37.809439489653357],
[-122.409529287502835, 37.809446200260403],
[-122.409588351243272, 37.809454171101315],
[-122.40962830977378, 37.809459704635067],
[-122.409632794735771, 37.809432163090825],
[-122.409672911837845, 37.809443874825128],
[-122.409782563727632, 37.809399522210484],
[-122.409759009148317, 37.809358700227392],
[-122.409646479104083, 37.809089266648215],
[-122.409583548723262, 37.809065563811615],
[-122.409522825494292, 37.80906036618412],
[-122.409518181262428, 37.809081729795679],
[-122.409495386134864, 37.809070424563046],
[-122.409466075113144, 37.809075019452258],
[-122.409443262001091, 37.809063028052371],
[-122.409410472498593, 37.80906699224586],
[-122.409387677045885, 37.809055686998015],
[-122.409356617959673, 37.80905962343688],
[-122.409333822524488, 37.809048318453144],
[-122.409299302613846, 37.809052310629191],
[-122.40927823759111, 37.809040977347202],
[-122.409247178159163, 37.809044913762847],
[-122.409226113153551, 37.80903358074611],
[-122.409193341651701, 37.809038231311064],
[-122.409172276649144, 37.80902689801011],
[-122.409141217563558, 37.809030834392281],
[-122.409118422162948, 37.809019529092303],
[-122.409083884609018, 37.809022835042484],
[-122.409061089219591, 37.809011529731414],
[-122.409026569318456, 37.809015522102243],
[-122.409005504354852, 37.809004189046036],
[-122.408972714854954, 37.80900815311788],
[-122.408949919486972, 37.808996847785302],
[-122.408918860402167, 37.809000784108946],
[-122.408896065051678, 37.808989479040513],
[-122.408865005613961, 37.808993415081005],
[-122.408842210612988, 37.80898210972196],
[-122.408807673071223, 37.808985415865877],
[-122.408784877735343, 37.808974110501353],
[-122.408753818298166, 37.808978046512571],
[-122.408732753379752, 37.808966713133003],
[-122.40870344269787, 37.808971307827179],
[-122.408680647389247, 37.80896000271705],
[-122.408653066760635, 37.80896456912587],
[-122.408630271454712, 37.808953263731418],
[-122.408595751557471, 37.808957255976196],
[-122.408574686669112, 37.808945922568363],
[-122.40853841837243, 37.808949256366759],
[-122.4085173534951, 37.808937922948687],
[-122.408484564351539, 37.808941887153871],
[-122.408461768739215, 37.80893058200698],
[-122.408432440401654, 37.808934489921761],
[-122.408409645138534, 37.808923184484605],
[-122.408375125243424, 37.808927176664845],
[-122.408354060404321, 37.808915843492116],
[-122.408319522857553, 37.808919148943978],
[-122.408296727616332, 37.808907843484988],
[-122.408265686178666, 37.808912466074247],
[-122.408242890954767, 37.808901160879408],
[-122.408208353409876, 37.808904466298728],
[-122.408185558190112, 37.808893160818222],
[-122.408154499115199, 37.808897097215251],
[-122.40813170390588, 37.808885791724293],
[-122.40810064447102, 37.808889727563603],
[-122.408077849618252, 37.808878422056637],
[-122.408048538584595, 37.808883016593732],
[-122.408027473807891, 37.80887168336259],
[-122.407989475110696, 37.808875044711961],
[-122.407968410338185, 37.808863711195677],
[-122.40793908201519, 37.808867619537004],
[-122.407916286847737, 37.808856314004366],
[-122.407867659098386, 37.808850233137854],
[-122.407892470076433, 37.808737895932389],
[-122.407895080955839, 37.808839488699526],
[-122.407919412118858, 37.808843215435566],
[-122.407965428881198, 37.808747703240833],
[-122.407954143699186, 37.808847460639832],
[-122.407971518664866, 37.808849926725884],
[-122.408015804954957, 37.808754442230494],
[-122.408004537488765, 37.808854886346353],
[-122.408030581417677, 37.80885789835331],
[-122.408074867989683, 37.808762414104869],
[-122.408063600595128, 37.808862857951631],
[-122.408080957579173, 37.808864637589593],
[-122.408126991783163, 37.808769811495232],
[-122.408115706821903, 37.808869569183827],
[-122.408134811496907, 37.808872006712299],
[-122.408175637137717, 37.80877657841792],
[-122.408167830687617, 37.808876966281417],
[-122.408188666131636, 37.808879376348344],
[-122.408234682562991, 37.808783863774664],
[-122.40822341538842, 37.808884307910851],
[-122.4082459985258, 37.808887375864508],
[-122.408292014895409, 37.808791863543163],
[-122.408280730145464, 37.80889162097256],
[-122.408299853182712, 37.808894745449784],
[-122.408345869480527, 37.808799232832989],
[-122.408334584808884, 37.808898990541991],
[-122.40835716795533, 37.808902058474338],
[-122.408401454133696, 37.808806574104075],
[-122.408390187174248, 37.808907017981177],
[-122.408412770332475, 37.808910086177463],
[-122.408457056451198, 37.808814602061034],
[-122.408447501979367, 37.808914331510991],
[-122.408464876962967, 37.808916796975197],
[-122.408510893069277, 37.808821284568992],
[-122.408499626255633, 37.808921728456291],
[-122.408520461722972, 37.808924138464597],
[-122.408564747351377, 37.808828653764436],
[-122.408553480616533, 37.808929097931319],
[-122.40857606412726, 37.808932165816167],
[-122.408622080100045, 37.808836653366868],
[-122.408610795786757, 37.808936410826988],
[-122.408633379309109, 37.808939478975418],
[-122.408677664815599, 37.808843994782293],
[-122.408666398217051, 37.808944438410528],
[-122.408683754881451, 37.808946217690789],
[-122.408728058314978, 37.808851419636184],
[-122.408718504202398, 37.808951149107379],
[-122.40873414881105, 37.808953643085459],
[-122.40878016458673, 37.808858130300308],
[-122.408768880489617, 37.80895788804974],
[-122.408788002858174, 37.808961011909815],
[-122.408832288517658, 37.808865527378856],
[-122.408822734543293, 37.808965256858244],
[-122.40884531843632, 37.808968325235043],
[-122.408891334078092, 37.80887281240679],
[-122.408880067778369, 37.808973256604034],
[-122.40889917250513, 37.808975694008623],
[-122.408943458030421, 37.808880209436197],
[-122.408933921854199, 37.808980625361755],
[-122.408953027290934, 37.808983063295585],
[-122.408997312398199, 37.808887578434081],
[-122.408987758995764, 37.808987308195377],
[-122.409008612134684, 37.808990404005712],
[-122.409052897181908, 37.808894919398057],
[-122.409041631090304, 37.808995363335725],
[-122.40906421464841, 37.808998431401648],
[-122.409110230041378, 37.808902919037678],
[-122.409098946373874, 37.809002676543273],
[-122.409121529583416, 37.809005744329234],
[-122.409165814840676, 37.808910259673837],
[-122.409154548899522, 37.809010703622],
[-122.409175384406026, 37.80901311324002],
[-122.4092196692594, 37.808917628844746],
[-122.409208385736662, 37.80901738636053],
[-122.409229238893218, 37.809020482131849],
[-122.409273523674656, 37.808924997441885],
[-122.4092622402232, 37.809024754962692],
[-122.40927961492774, 37.809027220861601],
[-122.409325630047334, 37.808931707864964],
[-122.409314364326178, 37.80903215210256],
[-122.409336947553612, 37.809035219847274],
[-122.409381232551411, 37.808939735111537],
[-122.409369949242404, 37.809039492642384],
[-122.409390802418955, 37.809042588659686],
[-122.409422921195898, 37.808945240701227],
[-122.409422903348997, 37.809011853140163],
[-122.40946679914822, 37.809035864508125],
[-122.409564019832658, 37.809046651478369],
[-122.409549629214183, 37.809025596054688],
[-122.409548887643922, 37.80899676568643],
[-122.409387695818651, 37.808719879048233],
[-122.409342422574227, 37.808709624416799],
[-122.409302270626966, 37.808696540242821],
[-122.409262612300481, 37.808769974638814],
[-122.409243366033195, 37.808762045524638],
[-122.409286290635848, 37.808681004303558],
[-122.409251523749987, 37.808675386616557],
[-122.409211865384634, 37.808748820995767],
[-122.409192619474325, 37.8087408918677],
[-122.409232277847408, 37.808667457220274],
[-122.409218046276052, 37.808652579691525],
[-122.409199082493714, 37.808655633568947],
[-122.409183155837965, 37.808642156922303],
[-122.409146746495978, 37.80863999940842],
[-122.409132550252011, 37.808626494744182],
[-122.409097906968512, 37.808625682074002],
[-122.409081980690672, 37.808612205682593],
[-122.409045571705349, 37.808610047857293],
[-122.409029645094293, 37.808596571464371],
[-122.40899498416762, 37.808595072051922],
[-122.408979057222851, 37.808581595657749],
[-122.408939170155094, 37.808578807372939],
[-122.408923243223967, 37.808565330971156],
[-122.40887636397639, 37.80855990894463],
[-122.408862167796897, 37.808546404247657],
[-122.40882402846016, 37.808544274635025],
[-122.408771338418944, 37.808649509314336],
[-122.408752144836185, 37.80864363943796],
[-122.408804834900437, 37.808538404767106],
[-122.408755995512777, 37.808524087565431],
[-122.40870503613472, 37.808629294204955],
[-122.408684130157809, 37.808624138753608],
[-122.408736802648747, 37.808518217400646],
[-122.408686214896832, 37.808503241742777],
[-122.408633542337299, 37.808609162798888],
[-122.40861434946801, 37.808603292888833],
[-122.408665291301503, 37.808497399575863],
[-122.408618182709631, 37.808483054307779],
[-122.408565527707552, 37.808589661496853],
[-122.408546334502589, 37.808583791581334],
[-122.408598989528059, 37.808477184400701],
[-122.408550150206281, 37.808462866564483],
[-122.408494192805264, 37.808575707944065],
[-122.408475017602044, 37.808570524448861],
[-122.408530957042373, 37.808456996920889],
[-122.408475143235307, 37.808440732021886],
[-122.408419203721877, 37.80855425952376],
[-122.408400010537662, 37.808548389584381],
[-122.40845594972285, 37.808434861822526],
[-122.408401884334964, 37.808419255320196],
[-122.408345944732787, 37.808532783062383],
[-122.408326768858856, 37.808527599554232],
[-122.408382691187029, 37.808413385377861],
[-122.408326877445205, 37.808397120408593],
[-122.40827095504342, 37.808511334558837],
[-122.408251779872415, 37.808506151027288],
[-122.408325818753553, 37.80835593442692],
[-122.408307261690325, 37.808307477072752],
[-122.408233773949888, 37.808277076846032],
[-122.408190831757594, 37.808290132648246],
[-122.408103813680896, 37.80847420912815],
[-122.408070707145512, 37.808465817066804],
[-122.408167524728952, 37.808258920751598],
[-122.408046540290897, 37.80819907276836],
[-122.408024204007958, 37.808205614634559],
[-122.407919104249203, 37.808427066268948],
[-122.407885997416685, 37.80841867443587],
[-122.407996041444051, 37.808187528721767],
[-122.407913795821727, 37.808153149917878],
[-122.407807565173499, 37.808397968053718],
[-122.407786659324017, 37.808392812443081],
[-122.407868398033912, 37.808205388267609],
[-122.407660185387385, 37.808254079991599],
[-122.407706584592447, 37.808375566178441],
[-122.407613672832028, 37.80839767070411],
[-122.407507720833991, 37.808114394328115],
[-122.407549056121539, 37.808106171825735],
[-122.407536061536263, 37.808072046122568],
[-122.407462591282297, 37.808042331588446],
[-122.40744611868692, 37.808007575403529],
[-122.407487420240358, 37.807930680888951],
[-122.407431324879042, 37.807903432764398],
[-122.407355431147764, 37.80804887173035],
[-122.406644940711814, 37.807817946705647],
[-122.406816836689401, 37.809994826134172],
[-122.406786252768356, 37.810017295716854],
[-122.40617819806161, 37.810068327706666],
[-122.406151660268563, 37.810046094760864],
[-122.406135997898389, 37.810042914277616],
[-122.406123656094778, 37.810034186621294],
[-122.405904441804637, 37.807159674056429],
[-122.405322208784199, 37.806866923600786],
[-122.404400300125417, 37.808853394598287],
[-122.404390181819835, 37.80886385881621],
[-122.404376497046869, 37.808870260285914],
[-122.404359263409262, 37.808873285169796],
[-122.404316325011152, 37.808819040682266],
[-122.403937477028578, 37.80876197892308],
[-122.403923457745378, 37.80875533773979],
[-122.403912828869224, 37.808745895483341],
[-122.403907320429198, 37.80873362312807],
[-122.403906985949291, 37.808720580801918],
[-122.404717282916977, 37.806971462592401],
[-122.403955936424254, 37.806579276399596],
[-122.402761932327437, 37.808014567794245],
[-122.402746534430648, 37.808021683436984],
[-122.402731014070881, 37.808023993997161],
[-122.402715370212889, 37.808021499491424],
[-122.40235585639897, 37.807840510524542],
[-122.402346922703828, 37.807829667068134],
[-122.402341415289797, 37.807817394901065],
[-122.402339367950134, 37.807805066923208],
[-122.402340764477955, 37.807791996673913],
[-122.402345656255733, 37.807780243491045],
[-122.403421726415289, 37.806471156550586],
[-122.402804368682325, 37.806023074735968],
[-122.400943288973451, 37.807638041928655],
[-122.40092780379058, 37.807641725129315],
[-122.400912142497489, 37.807638543945465],
[-122.400398744529411, 37.807261566606726],
[-122.400572958659495, 37.806120993590262],
[-122.401732349384048, 37.805192215433102],
[-122.403194419486127, 37.805118563841738],
[-122.403587277644846, 37.805412029499024],
[-122.404128809815958, 37.80582849738515],
[-122.404696069838451, 37.806264743038192],
[-122.405495723806581, 37.806640585378162],
[-122.405545441190654, 37.806634177056651],
[-122.405362337774832, 37.805695301990511],
[-122.405357241074242, 37.805695943874476],
[-122.405356257037084, 37.805690948342658],
[-122.405173536628851, 37.804763212222298],
[-122.404986245080067, 37.803832670552438],
[-122.404798316633176, 37.802900762043983],
[-122.40352117840483, 37.80305477917063],
[-122.40315960682554, 37.803098380641011],
[-122.402973676735002, 37.802166749844929],
[-122.402973611142329, 37.802166419353441],
[-122.402883459886269, 37.801713453423041],
[-122.402789664410264, 37.801242172237629],
[-122.402604124590809, 37.800307129616797],
[-122.402603736644934, 37.800305175692849],
[-122.402420666593613, 37.799382141273902],
[-122.402228639238132, 37.798429701815799],
[-122.402040983242472, 37.797504944420098],
[-122.401906946643678, 37.796875708196644],
[-122.401853390100442, 37.796626165074152],
[-122.402402444702886, 37.796554566975963],
[-122.40291796673857, 37.796490379340391],
[-122.403496709817034, 37.796417485859841],
[-122.404412160626791, 37.796302098196776],
[-122.405142977212691, 37.796210954635839],
[-122.405862652252878, 37.796122174218517],
[-122.406224736410849, 37.796077505131322],
[-122.406350669109713, 37.796061968858353],
[-122.406652352369846, 37.796024750165536],
[-122.407083680819795, 37.795970583772274],
[-122.407319877605971, 37.795940921047873],
[-122.407432089697608, 37.795926828732469],
[-122.407563768850565, 37.795910291726024],
[-122.40779730388941, 37.795880962818103],
[-122.408253202051654, 37.795823706218044],
[-122.408704654154022, 37.795766841471867],
[-122.408743234497422, 37.795761981540487],
[-122.409075520379659, 37.795720125786943],
[-122.409077868767497, 37.795719830108119],
[-122.409343544204319, 37.795686363949223],
[-122.40954722057397, 37.795660707190791],
[-122.40989875147848, 37.795616424537307],
[-122.411081667103218, 37.795467382264249],
[-122.411541226025591, 37.795408552082151],
[-122.411541229133036, 37.795408565216896],
[-122.411541531721369, 37.795408526524874],
[-122.411893657029495, 37.795363458292385],
[-122.412335878555311, 37.795306857217497],
[-122.413187771447625, 37.795197816725128],
[-122.414825631965456, 37.794988155997579],
[-122.415005455310151, 37.795877318912275],
[-122.415094279286492, 37.796316514471208],
[-122.415172033219093, 37.796700969266084],
[-122.41519297245145, 37.796804503853558],
[-122.415290513107706, 37.797286788953464],
[-122.415384105347158, 37.79774954140936],
[-122.415384693800732, 37.797752451808172],
[-122.415571551794869, 37.798676329254079],
[-122.415572319635913, 37.798680127283284],
[-122.415667503417794, 37.799150732537029],
[-122.41576151132729, 37.799616465113374],
[-122.416491256558686, 37.799525268171301],
[-122.417385454528372, 37.799413513042644],
[-122.417492539304973, 37.799906258247788],
[-122.417586974866069, 37.800340791478632],
[-122.417798642975782, 37.801267347943607],
[-122.41787748762404, 37.801706751150704],
[-122.417966229723234, 37.802201308768375],
[-122.418151092101994, 37.803135399210959],
[-122.418255886912107, 37.803650215613203],
[-122.418215611082957, 37.803687299847837],
[-122.418280954876565, 37.804023161939504],
[-122.418341342522965, 37.804070022432718],
[-122.418530631419571, 37.804999043218864]
]
]
}
},
{
type: 'Feature',
properties: {OBJECTID: 8, ZIP_CODE: 94109, ID: 94109},
geometry: {
type: 'Polygon',
coordinates: [
[
[-122.413915879652706, 37.790463115032836],
[-122.412266187164306, 37.790672783986288],
[-122.412154318600955, 37.79012444884593],
[-122.412075867445836, 37.789739906579548],
[-122.411885657146456, 37.788807543703371],
[-122.413541442066688, 37.788598204045492],
[-122.415185269301574, 37.788387930678724],
[-122.414995423274036, 37.787453843784689],
[-122.414806647966373, 37.786519819325378],
[-122.414617207572036, 37.785582474657787],
[-122.414430198422409, 37.784657140813145],
[-122.414241572919337, 37.783723783021379],
[-122.415882538254209, 37.783515640872785],
[-122.417528773439201, 37.78331088958533],
[-122.419181703937824, 37.783101400150407],
[-122.420816620257895, 37.78289417046458],
[-122.420817002825672, 37.782894121654586],
[-122.422463744273344, 37.782685368786026],
[-122.422597534917514, 37.782659914421728],
[-122.424108200948226, 37.782477051425644],
[-122.427396397680198, 37.782056939506091],
[-122.427490665181679, 37.782522998381459],
[-122.427584325166535, 37.78298604740867],
[-122.427778871361184, 37.783924735360486],
[-122.427988927379005, 37.784953879052303],
[-122.428148186422831, 37.785784488173462],
[-122.428241496400901, 37.78624657727314],
[-122.428241829261111, 37.786248226022003],
[-122.428335613076769, 37.786712655890966],
[-122.428525011003728, 37.78765056176524],
[-122.428712111452299, 37.788577067507021],
[-122.428905308896674, 37.789533740830485],
[-122.429092268257477, 37.790459499306614],
[-122.429269817037863, 37.791338636935983],
[-122.429447192175289, 37.79221689778025],
[-122.429625242377327, 37.793098475947545],
[-122.429803981887915, 37.793977244761322],
[-122.429989276973558, 37.794894937362344],
[-122.430182832162615, 37.795853517593606],
[-122.428537813517494, 37.796062892623418],
[-122.426892728667355, 37.796272251947869],
[-122.425249874473522, 37.79648130315109],
[-122.423601877370103, 37.796690947281171],
[-122.423601876988513, 37.796690945913937],
[-122.42360129621845, 37.796691056748735],
[-122.423601296960271, 37.796691058659476],
[-122.423792964234153, 37.797616581376253],
[-122.423793785438747, 37.7976164776058],
[-122.423982396975646, 37.798552421556877],
[-122.423982145098208, 37.798552453684835],
[-122.42417056430692, 37.799484532744323],
[-122.42417056511286, 37.799484537126212],
[-122.424242907462499, 37.799842398528341],
[-122.424358667137113, 37.800415027771606],
[-122.424517597070277, 37.801201189595353],
[-122.424538324517613, 37.801303719934985],
[-122.424731635083759, 37.802281009278651],
[-122.424731259133807, 37.802280983275736],
[-122.424808684502352, 37.802662664019884],
[-122.424918804152185, 37.803205508171892],
[-122.425109521046082, 37.804145845932808],
[-122.425204919000421, 37.804616199985951],
[-122.425298563577385, 37.80507790289635],
[-122.425486832357592, 37.806006120121552],
[-122.425487611207828, 37.806009959663712],
[-122.425531817297653, 37.806150610629167],
[-122.425627533230582, 37.806456787332273],
[-122.4257796482039, 37.806715259689653],
[-122.426066893674061, 37.80699787612533],
[-122.426256728575282, 37.807185221316665],
[-122.426357658303132, 37.807388412718332],
[-122.426488519796493, 37.807651861239542],
[-122.426560904719622, 37.807943556174827],
[-122.426613230594512, 37.808152010516238],
[-122.426749407153778, 37.80832970781308],
[-122.426815901093192, 37.808623913624309],
[-122.42681099272437, 37.808701593834883],
[-122.426830737473963, 37.808795352699491],
[-122.426826276753118, 37.808823581609779],
[-122.426828951398363, 37.808859934107588],
[-122.426829913470996, 37.808897001584555],
[-122.426829127336148, 37.808933411171161],
[-122.426830071586494, 37.80896979193826],
[-122.426848658020631, 37.809018932542891],
[-122.426823913850725, 37.809066034426849],
[-122.426821397293551, 37.809102471733105],
[-122.426817149990782, 37.809138937589218],
[-122.426811172632014, 37.809175431983689],
[-122.42680517743706, 37.809211239393754],
[-122.426799200066583, 37.80924773378711],
[-122.426791474798563, 37.809283569459971],
[-122.426783766999961, 37.80932009184702],
[-122.426764854928408, 37.809391820287793],
[-122.426753650652387, 37.809427026340984],
[-122.426742463842274, 37.809462919107801],
[-122.42673125988388, 37.809498124878161],
[-122.426718325162497, 37.809533359195932],
[-122.426703641860442, 37.809567935625843],
[-122.426690707106644, 37.80960316966555],
[-122.426674294047132, 37.809637774073536],
[-122.426659593228109, 37.809671663782375],
[-122.426641449382515, 37.809706296733168],
[-122.426624999956104, 37.809739528275571],
[-122.426606838595305, 37.809773474231129],
[-122.426586928644923, 37.809806762295736],
[-122.426568749097328, 37.809840022090548],
[-122.426547090883986, 37.809872652254199],
[-122.426527163066623, 37.80990525387346],
[-122.426505504455619, 37.809937883485567],
[-122.426482098287991, 37.809969855187106],
[-122.426435249574482, 37.810032425717694],
[-122.426410094762232, 37.810063739239673],
[-122.426384921777455, 37.810094366601653],
[-122.426359731637717, 37.810124306962969],
[-122.426305889769012, 37.810184245028879],
[-122.426277202393095, 37.810212869038814],
[-122.426248533505472, 37.810242179739554],
[-122.426219828627396, 37.810270117569488],
[-122.426165541280753, 37.810312894703067],
[-122.426148806543424, 37.810335143220563],
[-122.426077517869416, 37.810389871747489],
[-122.426029956191201, 37.810424984999884],
[-122.426004427087875, 37.810441883304833],
[-122.425978879818175, 37.810458095175186],
[-122.425953351037933, 37.810474993463338],
[-122.425902221511379, 37.810506044020848],
[-122.425874926298846, 37.810521597684627],
[-122.425847613267436, 37.810536464907365],
[-122.425792951557781, 37.810564826464294],
[-122.425738254193391, 37.810591815126337],
[-122.425709157251291, 37.810604651266786],
[-122.425621812948378, 37.810641100340696],
[-122.425563512153047, 37.810662654222938],
[-122.425532631291532, 37.810673458992433],
[-122.425501732623886, 37.810683577593657],
[-122.425472546238581, 37.810692981507543],
[-122.425441630096913, 37.810702413652621],
[-122.425410695451745, 37.810711159366136],
[-122.425348791232992, 37.810727278162595],
[-122.425317821646317, 37.810734650696368],
[-122.42528512127241, 37.810742051749649],
[-122.425254133532235, 37.81074873811216],
[-122.425221397542259, 37.810754766278279],
[-122.425190391643511, 37.810760766194903],
[-122.425157620386827, 37.810765421468112],
[-122.425124866580816, 37.810770763172656],
[-122.425093807273001, 37.810774704034145],
[-122.425028228777975, 37.810782641379291],
[-122.424962578393604, 37.810787833509224],
[-122.424931484149809, 37.810790400897922],
[-122.424898623523902, 37.810791623930832],
[-122.424876305744775, 37.810798855419677],
[-122.424848476260408, 37.810793815800935],
[-122.424819040922628, 37.810793609459935],
[-122.42478787514149, 37.810793431351755],
[-122.424758404216234, 37.810791852400563],
[-122.42472891548077, 37.810789586458021],
[-122.424699408618324, 37.810786634628094],
[-122.424640324731897, 37.810777984365998],
[-122.424610747039267, 37.810772286768845],
[-122.424582881984065, 37.810765873943147],
[-122.42455326835632, 37.810758803192932],
[-122.424525367734788, 37.810751018033073],
[-122.424497431514737, 37.810741859447681],
[-122.42447122609704, 37.810732672889145],
[-122.424443254308628, 37.810722141695749],
[-122.424406843510837, 37.810719989167595],
[-122.424404739729965, 37.810705601989262],
[-122.424392430564922, 37.810698249126709],
[-122.424380086492334, 37.810689522832604],
[-122.424367724289866, 37.810680110382542],
[-122.424357092185232, 37.810670669703008],
[-122.424346425188247, 37.810659856141378],
[-122.424337488288586, 37.810649014350894],
[-122.424328533252009, 37.810637486130467],
[-122.424321309004071, 37.810625929670387],
[-122.424315797750651, 37.810613658536091],
[-122.424310250566421, 37.810600014537307],
[-122.42430472117745, 37.810587056973155],
[-122.4243009222361, 37.810574071450297],
[-122.424298835580885, 37.810560370715905],
[-122.424298497510776, 37.810547328452351],
[-122.424299872431348, 37.810533571515215],
[-122.424301264798501, 37.810520501018615],
[-122.424304387263248, 37.810507402569137],
[-122.424309258634793, 37.810494961760924],
[-122.424315860102183, 37.810482492999512],
[-122.424324191657433, 37.810469996010013],
[-122.424332559488974, 37.810458871878474],
[-122.42434440529064, 37.810448377725301],
[-122.424354539139387, 37.810438598228359],
[-122.424368151310617, 37.810429448977779],
[-122.424380050823189, 37.810421013845534],
[-122.424395446797789, 37.810413895387818],
[-122.424410860570717, 37.810407463637567],
[-122.424426309569299, 37.810402404211651],
[-122.424441794853934, 37.810398717916826],
[-122.42445902802703, 37.810395690099803],
[-122.424474548198873, 37.810393376407241],
[-122.424495313410532, 37.810393037578869],
[-122.424512653696851, 37.810394128357849],
[-122.424528280984248, 37.810395933262043],
[-122.424545674311858, 37.810399083346539],
[-122.424561354987802, 37.810402947551076],
[-122.424577071263883, 37.810408184897881],
[-122.424591092706251, 37.810414823624235],
[-122.424605131932822, 37.810422148234672],
[-122.424619206768625, 37.810430846262342],
[-122.424631551158143, 37.810439571977035],
[-122.424642200368709, 37.810449699078426],
[-122.424652868070766, 37.810460512602432],
[-122.424661822790284, 37.810472040804292],
[-122.424669047076236, 37.810483597243831],
[-122.424676306964855, 37.810496526827265],
[-122.424683904979332, 37.810522498123575],
[-122.424685973208497, 37.810535512153116],
[-122.424686685078399, 37.810562969547746],
[-122.424688754001352, 37.810575983565833],
[-122.424694265313605, 37.810588254682798],
[-122.424703220408176, 37.810599783150167],
[-122.424713852193449, 37.810609223529688],
[-122.424727909273159, 37.81061723483468],
[-122.424743643057568, 37.81062315859959],
[-122.424759306354005, 37.810626336886287],
[-122.424774915898695, 37.810627455322866],
[-122.424844204676688, 37.810629071443891],
[-122.424883986990039, 37.810627735460123],
[-122.424942750746894, 37.810624029768022],
[-122.424970402172974, 37.810622204741975],
[-122.424999748098813, 37.810618978876803],
[-122.425029112521329, 37.810616439702436],
[-122.42505844098109, 37.810612527107622],
[-122.425086039005805, 37.810608643024629],
[-122.425115367473737, 37.810604730964819],
[-122.425142947684478, 37.810600160159147],
[-122.425172240190349, 37.810594874946659],
[-122.42519980259955, 37.810589617967473],
[-122.425229077987609, 37.810583646294816],
[-122.425311658363697, 37.810563756689383],
[-122.425339167350202, 37.810556440647844],
[-122.425394149679065, 37.810540434852271],
[-122.425449096383744, 37.810523056436082],
[-122.425474821139559, 37.810513709039498],
[-122.42550225886724, 37.810503646946287],
[-122.425553673774345, 37.810483579237776],
[-122.425579363239436, 37.810472858943186],
[-122.425656378173159, 37.810438638721514],
[-122.425680301215294, 37.81042657379389],
[-122.425705937577163, 37.810413794436336],
[-122.425729843135883, 37.81040104278366],
[-122.425777618636445, 37.81037416741794],
[-122.425799775930017, 37.810360757570926],
[-122.425823645502135, 37.810346633309891],
[-122.425845767517558, 37.810331850853636],
[-122.425869619617202, 37.810317040417416],
[-122.425891740915375, 37.81030225768918],
[-122.425912114318606, 37.810286817047619],
[-122.425934218490383, 37.810271348139892],
[-122.42595457407505, 37.810255221330763],
[-122.425976660073871, 37.81023906598594],
[-122.426033069704985, 37.810211362243855],
[-122.426044381296308, 37.810180274872565],
[-122.426071409213066, 37.810154424922551],
[-122.426098419287058, 37.810127887982347],
[-122.426123698921984, 37.810101379570156],
[-122.42617422251692, 37.810046989859728],
[-122.426197736051108, 37.810019136822319],
[-122.426222979645814, 37.809991255524551],
[-122.426244745255502, 37.809962744298282],
[-122.426268240925296, 37.809934204811682],
[-122.426289987997293, 37.809905007153375],
[-122.426310004983833, 37.8098758380223],
[-122.426331734895541, 37.809845953635381],
[-122.426350003264446, 37.809816126056347],
[-122.426370002384175, 37.809786270205322],
[-122.42640650446053, 37.80972524214534],
[-122.426423024539801, 37.809694756383479],
[-122.426439527484902, 37.809663584173109],
[-122.426456011918219, 37.809631725811407],
[-122.426470784413283, 37.809600581586317],
[-122.426485538743833, 37.809568751204715],
[-122.426498562648177, 37.809536949086315],
[-122.426511568735094, 37.809504460806153],
[-122.426524592609866, 37.809472658409931],
[-122.426535868255684, 37.809440198117713],
[-122.426547125731901, 37.809407051395155],
[-122.426556671294222, 37.80937461936086],
[-122.42657572607385, 37.809308382431155],
[-122.426583523043476, 37.809275292231341],
[-122.426589589599459, 37.809242230297407],
[-122.426597386209863, 37.809209140101942],
[-122.426601704881108, 37.809175419993217],
[-122.42660775360666, 37.809141671622967],
[-122.426612089737361, 37.809108637953877],
[-122.42661985311382, 37.809007562446936],
[-122.426622425964752, 37.808906571727555],
[-122.426632418849564, 37.808824688117525],
[-122.426616150524296, 37.80879817156422],
[-122.426607002185577, 37.808712480555535],
[-122.426596123115345, 37.808626817267942],
[-122.42658353220007, 37.808541869217166],
[-122.426569192751245, 37.808456262451642],
[-122.426553140769713, 37.808371370658513],
[-122.426535358440475, 37.808286507127633],
[-122.426521448780022, 37.808150762619441],
[-122.42648716178519, 37.808163683754294],
[-122.426478316482672, 37.808089661844356],
[-122.426472145992449, 37.808051992713068],
[-122.426465992974997, 37.808015010021762],
[-122.42645810959354, 37.807978055869093],
[-122.426450244018099, 37.807941787601465],
[-122.426431016184523, 37.807867935277343],
[-122.426421420613309, 37.807831695540209],
[-122.426410094332368, 37.807795484071661],
[-122.426383981060937, 37.807723117657737],
[-122.426370941909852, 37.807687620888885],
[-122.426356154936116, 37.8076514659409],
[-122.42634140359948, 37.807616683860772],
[-122.426324904443447, 37.807581243600652],
[-122.426289370917274, 37.807546114229226],
[-122.426116990256872, 37.807640950874436],
[-122.426004575599805, 37.807511622087709],
[-122.425948221432193, 37.807541385135394],
[-122.426072979790121, 37.807679439549148],
[-122.426043902201883, 37.807692962208542],
[-122.425788908967789, 37.807405954455511],
[-122.425811101339534, 37.807393917738004],
[-122.425841407866244, 37.807427759425885],
[-122.425860156968014, 37.807416465651144],
[-122.425910013941177, 37.807469902573231],
[-122.425894653990497, 37.807478394108394],
[-122.425932202930852, 37.807524478297722],
[-122.425969647726248, 37.80749983141159],
[-122.425933954139211, 37.807458524016887],
[-122.426097611558333, 37.807361083192824],
[-122.42613200511353, 37.807352281054179],
[-122.426091315966914, 37.80731860900228],
[-122.4260559073373, 37.80728828460429],
[-122.425981701022749, 37.807230438026032],
[-122.425942884837923, 37.807202229419872],
[-122.425865288869659, 37.807147185302298],
[-122.425824778720127, 37.807120377771732],
[-122.425784286059837, 37.807094256667916],
[-122.425743811226624, 37.807068821710658],
[-122.425659436564132, 37.807019381954113],
[-122.425575133216185, 37.806972687328404],
[-122.425531269042693, 37.806950055090923],
[-122.425487422692115, 37.806928108997688],
[-122.425396304969212, 37.806885646130702],
[-122.425305258549756, 37.806845928659463],
[-122.425259770989555, 37.806827443179728],
[-122.425212552741186, 37.806808985385324],
[-122.425165353022919, 37.806791214545072],
[-122.425118188573762, 37.806774816287508],
[-122.425069293788937, 37.80675844598079],
[-122.4250204168317, 37.806742762363598],
[-122.424973288049415, 37.806727737193157],
[-122.42492444672159, 37.806713426132198],
[-122.424873892869243, 37.806699830002309],
[-122.424802432493848, 37.806681081528858],
[-122.424772802670631, 37.806673324118421],
[-122.424744921357572, 37.806666225439869],
[-122.424689194317793, 37.806653400109965],
[-122.424659600807814, 37.806647015805055],
[-122.424631755098972, 37.806641289695882],
[-122.42460219684277, 37.806636278252959],
[-122.42457436893713, 37.806631238565636],
[-122.424544828483292, 37.806626913543731],
[-122.424517018379291, 37.806622560278207],
[-122.424487495380134, 37.806618921682983],
[-122.424428486015572, 37.806613017324239],
[-122.424398998964037, 37.806610751846591],
[-122.42437124224621, 37.806608457578399],
[-122.424341772644766, 37.806606878527504],
[-122.424282870046667, 37.806605092433877],
[-122.424224002349433, 37.806604679467583],
[-122.424165170926941, 37.806605639331515],
[-122.424135772832813, 37.80660680569077],
[-122.424077012229233, 37.806610511532789],
[-122.424018287184794, 37.806615589667317],
[-122.42398895989578, 37.806619501737501],
[-122.423959615506732, 37.806622727353634],
[-122.423932018904594, 37.806626611175993],
[-122.423873400581527, 37.806635808400436],
[-122.423845839538984, 37.806641064799031],
[-122.423816565594137, 37.806647036132823],
[-122.423789022338056, 37.806652979228197],
[-122.423759766870432, 37.806659637246682],
[-122.423706445903605, 37.806672867782268],
[-122.423653321266002, 37.806693649347707],
[-122.423589920527235, 37.806718718849552],
[-122.423526538222887, 37.806744474741464],
[-122.423399843925978, 37.80679873217619],
[-122.423338262626473, 37.806827205494514],
[-122.423215171014846, 37.806886897776501],
[-122.423155391052063, 37.806918088524029],
[-122.423095628820221, 37.806949965676615],
[-122.423037614673063, 37.806982501019867],
[-122.422979636035322, 37.807016409205524],
[-122.422923387701616, 37.807050289149693],
[-122.422867174874767, 37.807085541937973],
[-122.422807430162962, 37.807118105379153],
[-122.422669617719095, 37.80721100017012],
[-122.422538512716017, 37.807295544473774],
[-122.422410922154015, 37.807382091240839],
[-122.422406568873129, 37.807385156047935],
[-122.422285114644055, 37.807470669252126],
[-122.422159360151895, 37.8075613064347],
[-122.422037101638551, 37.807653259953362],
[-122.421916608736879, 37.807746558017001],
[-122.421799629592272, 37.807841858870269],
[-122.42168270310637, 37.807939218918449],
[-122.421532057745097, 37.808071464473507],
[-122.421789175548739, 37.808374241220797],
[-122.421758561641454, 37.808395342089796],
[-122.421493253559859, 37.808110553294661],
[-122.421324496714121, 37.808278803348081],
[-122.421367127445279, 37.808320685807196],
[-122.421400626951964, 37.808344175435167],
[-122.421417984134223, 37.808345953110788],
[-122.421538848573221, 37.808467594219884],
[-122.421521846706554, 37.808479545548913],
[-122.421585810928775, 37.808543055557919],
[-122.421558551068415, 37.808559981099798],
[-122.421494604621685, 37.808497157511823],
[-122.421482722503114, 37.808506278522707],
[-122.42136546133365, 37.808390072182092],
[-122.421343808401488, 37.808356088677073],
[-122.421300875659668, 37.808302536803509],
[-122.421061625998746, 37.808556401980894],
[-122.421102646347336, 37.808803641534986],
[-122.421495500883367, 37.809133737012722],
[-122.421447795704026, 37.809163356667042],
[-122.422886026597482, 37.810219448665336],
[-122.422843690020329, 37.8102558485987],
[-122.42136637775458, 37.809161249445332],
[-122.421209585435776, 37.809189899457976],
[-122.421035643651535, 37.808957186122555],
[-122.420944163231766, 37.808967603286121],
[-122.420910323787112, 37.808797159929568],
[-122.420858358549751, 37.808795946109164],
[-122.420717381312784, 37.80890056409217],
[-122.420760227934167, 37.809084595303112],
[-122.420694330112809, 37.809080174685604],
[-122.420677247269424, 37.809022081268409],
[-122.420415813879998, 37.809020844655912],
[-122.420359979289643, 37.809003898946663],
[-122.420384124514499, 37.808933459866985],
[-122.420668674045118, 37.808958355470025],
[-122.420635748727079, 37.808756307812423],
[-122.420540860637956, 37.808768840609403],
[-122.420461300526242, 37.808303163202581],
[-122.419223966222532, 37.808453096037454],
[-122.419086067910683, 37.807803117635643],
[-122.418908043871269, 37.806863030947284],
[-122.418856183917853, 37.806607498073362],
[-122.418781854642702, 37.806241248585302],
[-122.418781807492508, 37.806241018338142],
[-122.418718265666911, 37.805931520041717],
[-122.418530631419571, 37.804999043218864],
[-122.418341342522965, 37.804070022432718],
[-122.418280954876565, 37.804023161939504],
[-122.418215611082957, 37.803687299847837],
[-122.418255886912107, 37.803650215613203],
[-122.418151092101994, 37.803135399210959],
[-122.417966229723234, 37.802201308768375],
[-122.41787748762404, 37.801706751150704],
[-122.417798642975782, 37.801267347943607],
[-122.417586974866069, 37.800340791478632],
[-122.417492539304973, 37.799906258247788],
[-122.417385454528372, 37.799413513042644],
[-122.416491256558686, 37.799525268171301],
[-122.41576151132729, 37.799616465113374],
[-122.415667503417794, 37.799150732537029],
[-122.415572319635913, 37.798680127283284],
[-122.415571551794869, 37.798676329254079],
[-122.415384693800732, 37.797752451808172],
[-122.415384105347158, 37.79774954140936],
[-122.415290513107706, 37.797286788953464],
[-122.41519297245145, 37.796804503853558],
[-122.415172033219093, 37.796700969266084],
[-122.415094279286492, 37.796316514471208],
[-122.415005455310151, 37.795877318912275],
[-122.414825631965456, 37.794988155997579],
[-122.414647632176155, 37.794109807074861],
[-122.414470074462415, 37.79322314646798],
[-122.414381908270244, 37.792784070108439],
[-122.414293264567746, 37.792342610236801],
[-122.414107303557273, 37.79141647884336],
[-122.413915879652706, 37.790463115032836]
]
]
}
},
{
type: 'Feature',
properties: {OBJECTID: 9, ZIP_CODE: 94111, ID: 94111},
geometry: {
type: 'Polygon',
coordinates: [
[
[-122.400058259594957, 37.793693587424592],
[-122.400148778887171, 37.794134234665414],
[-122.400149325778898, 37.794134165695652],
[-122.401314504615144, 37.793987063215781],
[-122.402133431503088, 37.793883778773662],
[-122.40215951272063, 37.793880489466119],
[-122.402957360909014, 37.793779857671261],
[-122.40308689535884, 37.793763518993806],
[-122.404016114128936, 37.793646309359175],
[-122.404370134182003, 37.793598168205968],
[-122.404613421373455, 37.793565084338127],
[-122.404710582177955, 37.794021380197684],
[-122.404796472837063, 37.794453004909116],
[-122.404875610619072, 37.794859533373135],
[-122.404957208224928, 37.795326691921687],
[-122.405142977212691, 37.796210954635839],
[-122.404412160626791, 37.796302098196776],
[-122.403496709817034, 37.796417485859841],
[-122.40291796673857, 37.796490379340391],
[-122.402402444702886, 37.796554566975963],
[-122.401853390100442, 37.796626165074152],
[-122.401906946643678, 37.796875708196644],
[-122.402040983242472, 37.797504944420098],
[-122.402228639238132, 37.798429701815799],
[-122.402420666593613, 37.799382141273902],
[-122.402603736644934, 37.800305175692849],
[-122.402604124590809, 37.800307129616797],
[-122.402789664410264, 37.801242172237629],
[-122.402883459886269, 37.801713453423041],
[-122.402973611142329, 37.802166419353441],
[-122.402973676735002, 37.802166749844929],
[-122.40315960682554, 37.803098380641011],
[-122.40352117840483, 37.80305477917063],
[-122.404798316633176, 37.802900762043983],
[-122.404986245080067, 37.803832670552438],
[-122.405173536628851, 37.804763212222298],
[-122.405356257037084, 37.805690948342658],
[-122.405357241074242, 37.805695943874476],
[-122.405362337774832, 37.805695301990511],
[-122.405545441190654, 37.806634177056651],
[-122.405495723806581, 37.806640585378162],
[-122.404696069838451, 37.806264743038192],
[-122.404128809815958, 37.80582849738515],
[-122.403587277644846, 37.805412029499024],
[-122.403194419486127, 37.805118563841738],
[-122.401732349384048, 37.805192215433102],
[-122.400572958659495, 37.806120993590262],
[-122.400963593501643, 37.803563391134098],
[-122.400842454396695, 37.803429372376385],
[-122.400479886428016, 37.803466118528789],
[-122.398551197769294, 37.804602806142064],
[-122.398535712754665, 37.804606489036345],
[-122.398520052204233, 37.804603307533085],
[-122.398559631153262, 37.804526444219782],
[-122.398227927335071, 37.804281130126874],
[-122.398222420518948, 37.804268857764917],
[-122.398225564864617, 37.80425644615601],
[-122.399971727587683, 37.803225025895152],
[-122.399602741790233, 37.802807948916175],
[-122.397824683987196, 37.803810348092696],
[-122.397809199101829, 37.803814030892141],
[-122.397793538749667, 37.803810849291956],
[-122.397517150597622, 37.803494597437428],
[-122.397511661501127, 37.80348301148031],
[-122.3975148062854, 37.803470600157546],
[-122.399615259663278, 37.802282404799911],
[-122.39972332623249, 37.802176282179168],
[-122.399409670069147, 37.801824238674413],
[-122.399371692841143, 37.801828283680663],
[-122.399347556878283, 37.801832106025373],
[-122.399325151849467, 37.801835900487347],
[-122.399302764032285, 37.801840381390434],
[-122.39928039377223, 37.801845548729034],
[-122.399258040722614, 37.801851402508781],
[-122.399235705920944, 37.801857942712921],
[-122.399215101014406, 37.801864455053376],
[-122.399192800984025, 37.8018723684091],
[-122.399172231180287, 37.801880253347079],
[-122.399151696503523, 37.801889511710215],
[-122.397115576147101, 37.803021039584841],
[-122.397100091038084, 37.803024722022734],
[-122.397084431235825, 37.80302154059693],
[-122.396146888856933, 37.801962584949095],
[-122.396143112804936, 37.801950284664713],
[-122.396146275276891, 37.801938559540567],
[-122.396156183429241, 37.801919858733392],
[-122.398383194135846, 37.80067265166084],
[-122.398279805658603, 37.800555512940733],
[-122.397989357773142, 37.800230561089471],
[-122.395767421385884, 37.801472872307706],
[-122.395751936546873, 37.801476555118818],
[-122.395736277114864, 37.801473372963947],
[-122.395444597217249, 37.801167663046662],
[-122.395439108270097, 37.801156076993678],
[-122.395442253641278, 37.801143665440662],
[-122.397525741108808, 37.799970200398498],
[-122.397542727338319, 37.799957565794791],
[-122.397573204312565, 37.79993098020509],
[-122.397588407347527, 37.799916314120374],
[-122.397601862985724, 37.799900989703779],
[-122.397613588764841, 37.799885693121588],
[-122.397625296656045, 37.799869710378033],
[-122.397635256446222, 37.799853068765884],
[-122.397583045956239, 37.799774248814408],
[-122.397381692278955, 37.799548810060863],
[-122.397362923291766, 37.799559412884541],
[-122.397350478314067, 37.799546565387622],
[-122.39725607725606, 37.79944232919879],
[-122.396973022275191, 37.799609635784066],
[-122.396895724416169, 37.799632854304804],
[-122.396944532454214, 37.799578505110418],
[-122.39725156444139, 37.799401198172731],
[-122.397069823583166, 37.79919810547964],
[-122.39674205306757, 37.798834607866056],
[-122.396702784737215, 37.798855840868825],
[-122.396669034992286, 37.798822047566397],
[-122.396624664146429, 37.798846796498019],
[-122.396609180236553, 37.798850479143326],
[-122.396595251158345, 37.798847269554258],
[-122.396579311359616, 37.798833104740751],
[-122.395709347701867, 37.79933397933474],
[-122.395681634538477, 37.799401037179429],
[-122.395581007954107, 37.799459652414193],
[-122.395491073098484, 37.799462471471649],
[-122.39520444855259, 37.799625711063314],
[-122.394470973718072, 37.800049529845779],
[-122.394485183177821, 37.80006372301127],
[-122.394463863656298, 37.80011007561265],
[-122.394495883468409, 37.800143897322769],
[-122.394436254505337, 37.800181251519263],
[-122.394338714865782, 37.800157409688907],
[-122.39425176311174, 37.800073652886503],
[-122.394244541007424, 37.799994109133792],
[-122.39430588261277, 37.79995604107372],
[-122.39433954456824, 37.799986402561352],
[-122.394405256913004, 37.79998397351315],
[-122.394419466347642, 37.799998166686734],
[-122.395383240540369, 37.799442229567333],
[-122.3954446687179, 37.79940759283992],
[-122.395460481077649, 37.799348967284097],
[-122.395564480002861, 37.799286864055659],
[-122.395650954616428, 37.799284100562168],
[-122.396137291028239, 37.799011206820815],
[-122.39652596834469, 37.798777651667436],
[-122.396513506102295, 37.798764117365188],
[-122.396508017858096, 37.798752531345663],
[-122.396511162609784, 37.798740120038758],
[-122.396521298172757, 37.798730342643047],
[-122.396562296308161, 37.798709081605075],
[-122.396530276519627, 37.798675260441449],
[-122.396574647301449, 37.798650511819105],
[-122.396522999163949, 37.798593657491452],
[-122.396499841034597, 37.79856793447253],
[-122.396467423337157, 37.798586310883579],
[-122.396357190239343, 37.798472027219738],
[-122.396393032843889, 37.798452222590186],
[-122.395860656588496, 37.797870888391557],
[-122.395839947322898, 37.79787328122778],
[-122.395814065475506, 37.797876444215788],
[-122.395788200806479, 37.797880293644518],
[-122.395762353661098, 37.797884829508355],
[-122.395738254199486, 37.7978900242679],
[-122.395712442099452, 37.797895933002444],
[-122.395664348290325, 37.797910440317423],
[-122.395640318568425, 37.797918380825799],
[-122.395616307044421, 37.797927007209815],
[-122.39557006603053, 37.797946292034375],
[-122.395547836878862, 37.797956950195463],
[-122.395525625244971, 37.797968294793179],
[-122.395505143760289, 37.797979611576075],
[-122.393842000273821, 37.798938215357374],
[-122.393826533722603, 37.798942584352829],
[-122.39381087421539, 37.798939401951962],
[-122.393557994085199, 37.798661220282753],
[-122.393552505963697, 37.798649634131031],
[-122.393557381363038, 37.798637194571512],
[-122.395454327884067, 37.797548480176857],
[-122.395493853667872, 37.797469558194479],
[-122.395422650268614, 37.797392416327632],
[-122.395305000587612, 37.797394307309993],
[-122.395131013605095, 37.797494618186263],
[-122.394995545751499, 37.797340909474201],
[-122.395176347980751, 37.797236368651362],
[-122.395203657816268, 37.797153523030403],
[-122.395175134630833, 37.797121018758673],
[-122.395015962104765, 37.797123576784635],
[-122.394842063300572, 37.797227319439131],
[-122.394877471902745, 37.797258339703205],
[-122.393211663425149, 37.798247880172283],
[-122.393197909634068, 37.798251534593128],
[-122.393182250998592, 37.798248352371843],
[-122.392924377254829, 37.797977803222231],
[-122.392918871782612, 37.79796553059834],
[-122.392922034593937, 37.797953805551998],
[-122.392933760337485, 37.797938509440698],
[-122.393022573378389, 37.797891760094423],
[-122.393418332763261, 37.797664281733844],
[-122.39349443929828, 37.797594387482981],
[-122.393614723501102, 37.797492194551531],
[-122.39379620770903, 37.797346441866999],
[-122.393858891962495, 37.797293244534764],
[-122.39453577454303, 37.796890939592352],
[-122.394518070397197, 37.796875429409333],
[-122.394797677744066, 37.796708870398604],
[-122.394681926486655, 37.796581626428896],
[-122.394272580881463, 37.796818941592662],
[-122.39351702175675, 37.797258217667746],
[-122.39355080472113, 37.797293385033349],
[-122.39316857384685, 37.797508285701419],
[-122.393092042374221, 37.797425733952373],
[-122.393468994757654, 37.797207484670842],
[-122.393490421626595, 37.797233236341413],
[-122.39412658804784, 37.796863176781166],
[-122.393932453058198, 37.796648603921177],
[-122.393850369991199, 37.796687691964301],
[-122.393741908884792, 37.796574751186853],
[-122.393880385256736, 37.796507288896663],
[-122.393597295890373, 37.796198002709581],
[-122.393523863725633, 37.796236951615114],
[-122.393397437145097, 37.796098203833878],
[-122.393481197043371, 37.796057028727645],
[-122.393264277786542, 37.795831146645604],
[-122.39319930347132, 37.795862405337601],
[-122.393014017140644, 37.7956552428926],
[-122.39305487457618, 37.795628491529783],
[-122.392997761288825, 37.795560736430133],
[-122.392816418294032, 37.795643993697439],
[-122.391589731865537, 37.796205501614423],
[-122.391196361068637, 37.795779176166889],
[-122.39241116638668, 37.794819563891082],
[-122.39226709396803, 37.794667363398794],
[-122.391941265746169, 37.794853886332461],
[-122.391649609982679, 37.794547480215279],
[-122.391828732520565, 37.794445031825084],
[-122.391802064349278, 37.794417304057546],
[-122.391945361729881, 37.794335345459139],
[-122.391890260341384, 37.794278544568918],
[-122.392507683750154, 37.79377708635252],
[-122.39249932896719, 37.793768814133983],
[-122.392702063215523, 37.793608792659974],
[-122.39270797067924, 37.793614415765255],
[-122.394150899798674, 37.794987788593353],
[-122.394745701490038, 37.794478274267938],
[-122.394745733667804, 37.794478246556643],
[-122.394747579547172, 37.794479718347191],
[-122.394971722038662, 37.794300351169447],
[-122.395317307728533, 37.794023797689903],
[-122.39533276386878, 37.794011429145591],
[-122.395622922555773, 37.793779228585429],
[-122.395983670970253, 37.793501461560965],
[-122.396302004290646, 37.793256350429786],
[-122.396302004629632, 37.793256350149633],
[-122.396376076969489, 37.793198086984006],
[-122.396504486670068, 37.793097082520163],
[-122.39738344591872, 37.792405521295422],
[-122.397840810091907, 37.792047595331439],
[-122.39826444614279, 37.791716060417308],
[-122.398264448861653, 37.791716058450703],
[-122.399148598683425, 37.79101664916432],
[-122.39914859901539, 37.791016648609592],
[-122.399148705293825, 37.791016743863253],
[-122.399148704954868, 37.791016744143391],
[-122.399494165511513, 37.791324916192721],
[-122.399572029409299, 37.791326533708947],
[-122.399763353084495, 37.792257948007119],
[-122.399958735737897, 37.793209101900771],
[-122.400058259594957, 37.793693587424592]
]
]
}
},
{
type: 'Feature',
properties: {OBJECTID: 10, ZIP_CODE: 94104, ID: 94104},
geometry: {
type: 'Polygon',
coordinates: [
[
[-122.400067228055164, 37.790303858609981],
[-122.401375490979433, 37.789264321921429],
[-122.4018939793784, 37.788856309111516],
[-122.402065730098272, 37.788721152097366],
[-122.401960433993054, 37.788922171387867],
[-122.401997470431979, 37.789102650051042],
[-122.402189645264357, 37.790039096806382],
[-122.402532679537515, 37.789995540560724],
[-122.40273920526738, 37.789969317269424],
[-122.403841563913829, 37.789829338872408],
[-122.403934377264903, 37.790286026286218],
[-122.404030724679231, 37.790760095776051],
[-122.404219835191427, 37.791690583910508],
[-122.40441842761642, 37.79263865633952],
[-122.404613389070732, 37.793564931583006],
[-122.404613421373455, 37.793565084338127],
[-122.404370134182003, 37.793598168205968],
[-122.404016114128936, 37.793646309359175],
[-122.40308689535884, 37.793763518993806],
[-122.402957360909014, 37.793779857671261],
[-122.40215951272063, 37.793880489466119],
[-122.402133431503088, 37.793883778773662],
[-122.401314504615144, 37.793987063215781],
[-122.400149325778898, 37.794134165695652],
[-122.400148778887171, 37.794134234665414],
[-122.400058259594957, 37.793693587424592],
[-122.399958735737897, 37.793209101900771],
[-122.399763353084495, 37.792257948007119],
[-122.399572029409299, 37.791326533708947],
[-122.399494165511513, 37.791324916192721],
[-122.399148704954868, 37.791016744143391],
[-122.399148705293825, 37.791016743863253],
[-122.39914859901539, 37.791016648609592],
[-122.399222136170906, 37.790956214990921],
[-122.399480001759599, 37.790744297277485],
[-122.399919790020746, 37.790414442896498],
[-122.400024135710936, 37.790336179680637],
[-122.400067228055164, 37.790303858609981]
]
]
}
},
{
type: 'Feature',
properties: {OBJECTID: 11, ZIP_CODE: 94108, ID: 94108},
geometry: {
type: 'Polygon',
coordinates: [
[
[-122.404219835191427, 37.791690583910508],
[-122.404030724679231, 37.790760095776051],
[-122.403934377264903, 37.790286026286218],
[-122.403841563913829, 37.789829338872408],
[-122.40273920526738, 37.789969317269424],
[-122.402532679537515, 37.789995540560724],
[-122.402189645264357, 37.790039096806382],
[-122.401997470431979, 37.789102650051042],
[-122.401960433993054, 37.788922171387867],
[-122.402065730098272, 37.788721152097366],
[-122.402404665507532, 37.788463925757384],
[-122.402903089488873, 37.788085654318181],
[-122.40290309900054, 37.788085647297414],
[-122.403239953883428, 37.787802352067843],
[-122.403430800369534, 37.787641848645734],
[-122.403925775648347, 37.787250481113581],
[-122.404583316787637, 37.786730565897571],
[-122.404583317133643, 37.786730565891986],
[-122.404583317818549, 37.786730565606241],
[-122.4045836593057, 37.786730668317922],
[-122.404583659644615, 37.786730668037741],
[-122.404849901045083, 37.78680995410096],
[-122.405346079234604, 37.786747618574395],
[-122.40639887788349, 37.786615347203238],
[-122.408036236552462, 37.786409613336666],
[-122.408226725993813, 37.78735926231473],
[-122.408401550373739, 37.788293193957799],
[-122.408595045382015, 37.789225614946417],
[-122.408595692092703, 37.789225606675593],
[-122.410242438640608, 37.789016337723744],
[-122.411885657146456, 37.788807543703371],
[-122.412075867445836, 37.789739906579548],
[-122.412154318600955, 37.79012444884593],
[-122.412266187164306, 37.790672783986288],
[-122.413915879652706, 37.790463115032836],
[-122.414107303557273, 37.79141647884336],
[-122.414293264567746, 37.792342610236801],
[-122.414381908270244, 37.792784070108439],
[-122.414470074462415, 37.79322314646798],
[-122.414647632176155, 37.794109807074861],
[-122.414825631965456, 37.794988155997579],
[-122.413187771447625, 37.795197816725128],
[-122.412335878555311, 37.795306857217497],
[-122.411893657029495, 37.795363458292385],
[-122.411541531721369, 37.795408526524874],
[-122.411081667103218, 37.795467382264249],
[-122.40989875147848, 37.795616424537307],
[-122.40954722057397, 37.795660707190791],
[-122.409343544204319, 37.795686363949223],
[-122.409077868767497, 37.795719830108119],
[-122.409075520379659, 37.795720125786943],
[-122.408743234497422, 37.795761981540487],
[-122.408704654154022, 37.795766841471867],
[-122.408253202051654, 37.795823706218044],
[-122.40779730388941, 37.795880962818103],
[-122.407563768850565, 37.795910291726024],
[-122.407432089697608, 37.795926828732469],
[-122.407319877605971, 37.795940921047873],
[-122.407083680819795, 37.795970583772274],
[-122.406652352369846, 37.796024750165536],
[-122.406350669109713, 37.796061968858353],
[-122.406224736410849, 37.796077505131322],
[-122.405862652252878, 37.796122174218517],
[-122.405142977212691, 37.796210954635839],
[-122.404957208224928, 37.795326691921687],
[-122.404875610619072, 37.794859533373135],
[-122.404796472837063, 37.794453004909116],
[-122.404710582177955, 37.794021380197684],
[-122.404613421373455, 37.793565084338127],
[-122.404613389070732, 37.793564931583006],
[-122.40441842761642, 37.79263865633952],
[-122.404219835191427, 37.791690583910508]
]
]
}
},
{
type: 'Feature',
properties: {OBJECTID: 12, ZIP_CODE: 94103, ID: 94103},
geometry: {
type: 'Polygon',
coordinates: [
[
[-122.403877699904385, 37.770062866265505],
[-122.403615112128733, 37.769893190404822],
[-122.403406518421917, 37.769807099957397],
[-122.403037758616776, 37.769828657390953],
[-122.402926809989424, 37.76864812762463],
[-122.401962350744, 37.768706209224241],
[-122.401842503677628, 37.76743077711658],
[-122.400877239583821, 37.76748837440357],
[-122.400680751363893, 37.767503407870436],
[-122.4004285874814, 37.76730030349627],
[-122.399677637243116, 37.766695444602661],
[-122.39980174760619, 37.766587745781216],
[-122.399760960198876, 37.766250252443854],
[-122.40075504647362, 37.766190486570189],
[-122.401720515816834, 37.766132520250999],
[-122.401604204317508, 37.764894634517518],
[-122.401598999326723, 37.764839236400867],
[-122.402563396844656, 37.764781034314389],
[-122.403527034519726, 37.764722870371436],
[-122.404496977488066, 37.764664317561468],
[-122.404841911264157, 37.764643492872132],
[-122.405089602982216, 37.764628538373131],
[-122.405089603673972, 37.764628538361961],
[-122.405463420216606, 37.764605967981389],
[-122.406005237363416, 37.764573252226405],
[-122.406429152848446, 37.764547653527842],
[-122.406429154577822, 37.764547653499882],
[-122.406859230067056, 37.764521681123377],
[-122.407419737953433, 37.764487829924626],
[-122.407534229395537, 37.765783299286987],
[-122.408544242939584, 37.765722599679115],
[-122.410486689274492, 37.765605838622655],
[-122.411455262151748, 37.765547605227276],
[-122.412416426589019, 37.765489809283601],
[-122.413105243007919, 37.765447608576679],
[-122.415308388038014, 37.765314639624691],
[-122.416387522888556, 37.765249494040667],
[-122.41748659577631, 37.765183134636899],
[-122.418579138459435, 37.765117159398407],
[-122.418698425401715, 37.765109955145007],
[-122.419668972681833, 37.765051337054757],
[-122.420482492120144, 37.765002197009743],
[-122.420580607922048, 37.764996270018614],
[-122.420901270224292, 37.764976898858535],
[-122.421239593012103, 37.764956459387825],
[-122.421381475659516, 37.764947887797014],
[-122.421886445840627, 37.764917378530825],
[-122.42285341443899, 37.764858950163855],
[-122.423112421134832, 37.764843298770074],
[-122.424102683503691, 37.764783452170008],
[-122.424574375550648, 37.764754942537614],
[-122.426381062356072, 37.764645726997848],
[-122.426381062758907, 37.764645729188807],
[-122.426381708477521, 37.764645690891633],
[-122.426490697526233, 37.765773605772118],
[-122.426518991136163, 37.766066400051031],
[-122.426538465047457, 37.766267922745747],
[-122.426572006355102, 37.766615035704866],
[-122.426615944414863, 37.767069730096857],
[-122.426693183296933, 37.76786901846797],
[-122.426693183304053, 37.767869018742559],
[-122.426902347012131, 37.769049368265463],
[-122.426309438735913, 37.769602597220121],
[-122.424852598682307, 37.770747745074537],
[-122.423971653706317, 37.771401668385572],
[-122.423707555870649, 37.771638138620823],
[-122.42361952356508, 37.771716961429995],
[-122.423479344850293, 37.771827141530693],
[-122.423258913662679, 37.772000399157754],
[-122.422619690282815, 37.772502817311128],
[-122.422169936976104, 37.77285593639396],
[-122.421941247178026, 37.773036050819961],
[-122.421284370393934, 37.77356039048216],
[-122.421008229272687, 37.773780811646674],
[-122.420910608715644, 37.773852419132908],
[-122.420699239041511, 37.774007568561714],
[-122.420698854806645, 37.774007872313192],
[-122.42069877383058, 37.774007805509001],
[-122.420254278900828, 37.774358674888319],
[-122.420254205644639, 37.774358732668077],
[-122.419544527888206, 37.774918988504218],
[-122.419256088091217, 37.775146694295351],
[-122.419256086565611, 37.775146688826375],
[-122.419255604623004, 37.775147068879761],
[-122.419255606501622, 37.775147074617692],
[-122.419255600381447, 37.775147078837719],
[-122.418683590110874, 37.775586568849455],
[-122.417757669457401, 37.776334062520824],
[-122.417501462863584, 37.776540893581355],
[-122.416757677810395, 37.777126789723972],
[-122.416291701725271, 37.777493842582118],
[-122.416291701393504, 37.777493843136881],
[-122.416024573316548, 37.777713893977598],
[-122.415925978170975, 37.777795112873314],
[-122.414741221622947, 37.778719429321896],
[-122.412512255967954, 37.78047851222005],
[-122.412243715889375, 37.780689421480552],
[-122.411972359306191, 37.780902540886757],
[-122.411972358960256, 37.78090254089237],
[-122.411625130786987, 37.781189627190479],
[-122.410716598656492, 37.781899054565059],
[-122.410292026384454, 37.782230575136197],
[-122.40895215871069, 37.783287852576514],
[-122.408597310055299, 37.783569788681966],
[-122.408066548174432, 37.783991486066526],
[-122.408066547510714, 37.783991487176031],
[-122.407625723544982, 37.784337071806426],
[-122.406821367207598, 37.78496763543707],
[-122.405831011063668, 37.78574398921409],
[-122.405371564397683, 37.786107287119592],
[-122.404583317818549, 37.786730565606241],
[-122.404583317133643, 37.786730565891986],
[-122.404583316787637, 37.786730565897571],
[-122.403925775648347, 37.787250481113581],
[-122.403430800369534, 37.787641848645734],
[-122.403342641535644, 37.787274627660381],
[-122.403028734856406, 37.78702485040828],
[-122.403028193190352, 37.787024418822838],
[-122.402575227394536, 37.786678208153539],
[-122.402025419766176, 37.786248152290575],
[-122.401489835489045, 37.785829214187501],
[-122.401480059865179, 37.785821567351917],
[-122.400998469557948, 37.785444857061968],
[-122.400994549885382, 37.785441790992316],
[-122.400468483886854, 37.785030285141588],
[-122.399369533643153, 37.785899247741973],
[-122.397811613142864, 37.784666586003652],
[-122.398930331092998, 37.783784933304034],
[-122.399891477967842, 37.783025880124256],
[-122.400019020063766, 37.782925153640136],
[-122.400374366843309, 37.782644515545172],
[-122.401159718585049, 37.782024266952142],
[-122.403387209275081, 37.78026497235011],
[-122.404431250807633, 37.779440334605447],
[-122.405615266425855, 37.778505104539292],
[-122.405068508898097, 37.778068981419388],
[-122.404605505853894, 37.777699659794813],
[-122.404070256642925, 37.777272702482797],
[-122.403673439982725, 37.776956165214415],
[-122.403505778866929, 37.776822422431877],
[-122.40337073826143, 37.776714700215486],
[-122.402524096584528, 37.776039321403807],
[-122.400981567656032, 37.774808775969753],
[-122.400592319049849, 37.774498244536282],
[-122.400212340771517, 37.774195105423317],
[-122.400212340411557, 37.77419510487973],
[-122.399433130909728, 37.773573455617395],
[-122.401656680421155, 37.7718171255028],
[-122.403877699904385, 37.770062866265505]
]
]
}
},
{
type: 'Feature',
properties: {OBJECTID: 13, ZIP_CODE: 94115, ID: 94115},
geometry: {
type: 'Polygon',
coordinates: [
[
[-122.447679208068394, 37.79170289872647],
[-122.44720637942703, 37.791763091830468],
[-122.446299547924625, 37.791878529215651],
[-122.446299573716246, 37.791878694429421],
[-122.446446033268856, 37.792810866507708],
[-122.446446456540414, 37.792813716046261],
[-122.446587034424141, 37.793765298555968],
[-122.445035345747925, 37.79396273368863],
[-122.443384198876302, 37.794172877898092],
[-122.441712771485612, 37.794385578392699],
[-122.440870170501768, 37.794492795601883],
[-122.440868123190498, 37.794493055920753],
[-122.440045216960385, 37.794597761146619],
[-122.438402484723895, 37.794806973138577],
[-122.436760975027326, 37.795016021968365],
[-122.435113289920963, 37.795225833115033],
[-122.433469062960725, 37.795435179810816],
[-122.431827832563371, 37.79564412085616],
[-122.430182832162615, 37.795853517593606],
[-122.429989276973558, 37.794894937362344],
[-122.429803981887915, 37.793977244761322],
[-122.429625242377327, 37.793098475947545],
[-122.429447192175289, 37.79221689778025],
[-122.429269817037863, 37.791338636935983],
[-122.429092268257477, 37.790459499306614],
[-122.428905308896674, 37.789533740830485],
[-122.428712111452299, 37.788577067507021],
[-122.428525011003728, 37.78765056176524],
[-122.428335613076769, 37.786712655890966],
[-122.428241829261111, 37.786248226022003],
[-122.428241496400901, 37.78624657727314],
[-122.428148186422831, 37.785784488173462],
[-122.427988927379005, 37.784953879052303],
[-122.427778871361184, 37.783924735360486],
[-122.427584325166535, 37.78298604740867],
[-122.427490665181679, 37.782522998381459],
[-122.427396397680198, 37.782056939506091],
[-122.42720275579525, 37.781117127328834],
[-122.427016756808811, 37.780193030481158],
[-122.42868554474839, 37.779980201690215],
[-122.430233236584385, 37.779782794230314],
[-122.431951802315041, 37.779564148987781],
[-122.433595938040227, 37.779354585436536],
[-122.435241012398947, 37.779144878458894],
[-122.436884629197735, 37.778937753600381],
[-122.437707163233824, 37.778832380147421],
[-122.43855227772093, 37.778724107938281],
[-122.440213334218711, 37.778511463388014],
[-122.441865640580161, 37.778299553615973],
[-122.441865640558632, 37.778299552792262],
[-122.441865967212379, 37.778299511152262],
[-122.441865967226732, 37.778299511701405],
[-122.443506919728407, 37.778089213415292],
[-122.445155752336433, 37.777886506805444],
[-122.446846469920573, 37.777669108909684],
[-122.447039806751391, 37.778622307248391],
[-122.447351927163439, 37.780152061280916],
[-122.447517982733274, 37.781069510753063],
[-122.447576361567485, 37.781175778551805],
[-122.447655108274333, 37.781537309189886],
[-122.447637300982407, 37.781719177617617],
[-122.447450898997985, 37.782195217632704],
[-122.447301513844337, 37.78239164221629],
[-122.447283893261542, 37.782434393634787],
[-122.447225622636566, 37.782575775503396],
[-122.447173033991248, 37.782710075581413],
[-122.447149436147441, 37.783030677550911],
[-122.447549635601661, 37.784906798974511],
[-122.447578549915917, 37.784998355250835],
[-122.447620107068687, 37.785083635258417],
[-122.447621599012791, 37.785194684567394],
[-122.447605133356163, 37.785275579171099],
[-122.447533801639068, 37.785411415165207],
[-122.446849274413296, 37.786186897081585],
[-122.446738337622591, 37.786243163870765],
[-122.446610465639836, 37.786302298311156],
[-122.446792779960703, 37.787261853518181],
[-122.4469741664482, 37.788186460801001],
[-122.448656220796209, 37.787977164570449],
[-122.448835781299294, 37.788856511426609],
[-122.449011564525605, 37.789726786022129],
[-122.449189583391288, 37.790608108274284],
[-122.449367313308201, 37.791487980191171],
[-122.447679208068394, 37.79170289872647]
]
]
}
},
{
type: 'Feature',
properties: {OBJECTID: 14, name: '16th St. Mission (16TH)'},
geometry: {type: 'Point', coordinates: [-122.419694, 37.765062]}
},
{
type: 'Feature',
properties: {OBJECTID: 15, name: '19th St. Oakland (19TH)'},
geometry: {type: 'Point', coordinates: [-122.269029, 37.80787]}
},
{
type: 'Feature',
properties: {OBJECTID: 16, name: '24th St. Mission (24TH)'},
geometry: {type: 'Point', coordinates: [-122.418466, 37.752254]}
},
{
type: 'Feature',
properties: {OBJECTID: 17, STREETNAME: null, CNN: null, CNNTEXT: null, LAYER: null},
geometry: {
type: 'LineString',
coordinates: [
[-122.404496510855935, 37.747208431159258, 0.0],
[-122.404724947212969, 37.746505061621882, 0.0],
[-122.404910121756458, 37.745826557926733, 0.0],
[-122.40505115991364, 37.745369647146362, 0.0],
[-122.405179629589213, 37.744981134594937, 0.0],
[-122.405475696208015, 37.744427002056398, 0.0],
[-122.405747110770719, 37.74402859882732, 0.0],
[-122.406047832261379, 37.743656241938524, 0.0],
[-122.406881612819447, 37.742665294624537, 0.0],
[-122.407209492100122, 37.742235665881928, 0.0],
[-122.407448074495264, 37.741860522092949, 0.0],
[-122.407625696930154, 37.741528038899268, 0.0],
[-122.407757063324084, 37.741253133458535, 0.0],
[-122.407846654066077, 37.741024367212859, 0.0],
[-122.407964646258392, 37.74066255255704, 0.0],
[-122.408049229599797, 37.74033911017515, 0.0],
[-122.40811407182305, 37.739818087474802, 0.0],
[-122.408155426277474, 37.739489700638032, 0.0],
[-122.4081815622297, 37.739061925772134, 0.0]
]
}
},
{
type: 'Feature',
properties: {OBJECTID: 18, STREETNAME: null, CNN: null, CNNTEXT: null, LAYER: null},
geometry: {
type: 'LineString',
coordinates: [
[-122.423396761198774, 37.771885644205057, 0.0],
[-122.423341877997842, 37.7716970422617, 0.0],
[-122.42310057516444, 37.771322004989457, 0.0],
[-122.423023389959624, 37.771214151829795, 0.0],
[-122.422909336817526, 37.771075536726087, 0.0],
[-122.422813562263059, 37.770970841731483, 0.0],
[-122.422687528244538, 37.770851679988603, 0.0],
[-122.422548319806467, 37.770735086967235, 0.0],
[-122.422398678994213, 37.770624666937692, 0.0],
[-122.422251635554701, 37.770526810613305, 0.0],
[-122.422118196802614, 37.770448774473365, 0.0],
[-122.421934187850198, 37.770355122684251, 0.0],
[-122.421813265154583, 37.770301864818435, 0.0],
[-122.421699352349904, 37.770256296204039, 0.0],
[-122.421444606183769, 37.77017071999213, 0.0],
[-122.42115970557785, 37.770096121272886, 0.0],
[-122.420898240339739, 37.770049954636129, 0.0],
[-122.420722192307608, 37.770030010784517, 0.0],
[-122.420585860012409, 37.770019508727906, 0.0],
[-122.419997377433887, 37.769997815936115, 0.0],
[-122.419496824292551, 37.769981089772898, 0.0],
[-122.419358230344216, 37.7699709673944, 0.0],
[-122.419180619296924, 37.769953778292248, 0.0],
[-122.418926623491956, 37.769918930266449, 0.0],
[-122.416139450807378, 37.769545473811675, 0.0]
]
}
},
{
type: 'Feature',
properties: {OBJECTID: 19, STREETNAME: null, CNN: null, CNNTEXT: null, LAYER: null},
geometry: {
type: 'LineString',
coordinates: [
[-122.416338879874303, 37.769687518927974, 0.0],
[-122.418400932566996, 37.769948381534682, 0.0],
[-122.419176763922451, 37.770054187185572, 0.0],
[-122.419354003754208, 37.770073213616591, 0.0],
[-122.419542138973512, 37.770086427945351, 0.0],
[-122.419723964918447, 37.770092686385524, 0.0],
[-122.420100214695708, 37.770105478471756, 0.0],
[-122.420476463491056, 37.770118270276519, 0.0],
[-122.420616194034608, 37.770125614199095, 0.0],
[-122.420816021735661, 37.770145216687936, 0.0],
[-122.421007563773117, 37.770174292292772, 0.0],
[-122.421149554735379, 37.770202567397305, 0.0],
[-122.421323625825579, 37.770245387827444, 0.0],
[-122.42150000102616, 37.770298447039025, 0.0],
[-122.421757333137421, 37.770394874007152, 0.0],
[-122.421886515500674, 37.770452654763503, 0.0],
[-122.422041292168728, 37.770530023310897, 0.0],
[-122.422168383585031, 37.770601574230888, 0.0],
[-122.42227536100421, 37.770668224151905, 0.0],
[-122.422351617622013, 37.770720521989226, 0.0],
[-122.422517355438828, 37.770847486375189, 0.0],
[-122.422654966009191, 37.770969406462996, 0.0],
[-122.422814001010366, 37.771134535526315, 0.0],
[-122.422907046260278, 37.77124703002864, 0.0],
[-122.422985096055257, 37.771353508317482, 0.0],
[-122.423251598467544, 37.771769674548985, 0.0],
[-122.423396761198774, 37.771885644205057, 0.0]
]
}
},
{
type: 'Feature',
properties: {OBJECTID: 20, name: 'FRMT-DALY (ROUTE 5/6)', color: '#4db848'},
geometry: {
type: 'MultiLineString',
coordinates: [
[
[-122.117691, 37.690853],
[-122.115804, 37.689526],
[-122.114714, 37.688759],
[-122.113653, 37.688024],
[-122.111942, 37.686838],
[-122.108067, 37.684181],
[-122.105053, 37.682106],
[-122.102954, 37.68066],
[-122.102038, 37.680022],
[-122.101587, 37.679705],
[-122.101264, 37.679484],
[-122.100991, 37.679307],
[-122.099792, 37.678482],
[-122.099169, 37.678052],
[-122.098553, 37.677627],
[-122.098007, 37.677245],
[-122.095037, 37.675203],
[-122.094074, 37.674541],
[-122.090903, 37.672359],
[-122.089886, 37.671685],
[-122.089195, 37.671243],
[-122.088304, 37.670637],
[-122.087763, 37.670258],
[-122.08744, 37.670036],
[-122.086993, 37.669721],
[-122.086371, 37.669288],
[-122.085998, 37.669034],
[-122.084869, 37.668261],
[-122.084598, 37.668069],
[-122.08442, 37.667945],
[-122.084211, 37.667804],
[-122.084084, 37.667711],
[-122.083897, 37.667578],
[-122.08372, 37.667449],
[-122.083589, 37.66735],
[-122.083479, 37.667265],
[-122.083322, 37.66714],
[-122.083076, 37.666953],
[-122.082935, 37.66683],
[-122.082632, 37.666538],
[-122.082446, 37.666354],
[-122.082369, 37.666272],
[-122.082333, 37.666234],
[-122.082284, 37.666184],
[-122.082226, 37.666121],
[-122.082156, 37.666044],
[-122.082064, 37.665942],
[-122.081967, 37.665832],
[-122.081859, 37.665707],
[-122.081619, 37.665418],
[-122.081437, 37.66521],
[-122.08108, 37.664741],
[-122.080772, 37.66435],
[-122.080436, 37.663925],
[-122.080142, 37.663548],
[-122.079515, 37.66275],
[-122.079077, 37.662191],
[-122.078544, 37.661513],
[-122.078221, 37.661104],
[-122.077928, 37.660729],
[-122.076837, 37.659338],
[-122.076609, 37.659057],
[-122.076483, 37.658895],
[-122.076067, 37.658358],
[-122.075285, 37.657361],
[-122.074609, 37.656503],
[-122.074027, 37.655761],
[-122.07354, 37.65514],
[-122.07297, 37.654414],
[-122.071948, 37.653108],
[-122.071259, 37.652248],
[-122.070921, 37.651817],
[-122.070654, 37.651473],
[-122.070295, 37.651016],
[-122.069886, 37.650495],
[-122.069584, 37.650128],
[-122.069135, 37.649539],
[-122.068707, 37.648992],
[-122.067593, 37.647577],
[-122.066986, 37.646801],
[-122.066533, 37.646228],
[-122.065976, 37.645512],
[-122.065554, 37.644979],
[-122.065403, 37.644785],
[-122.064328, 37.643416],
[-122.064026, 37.643029],
[-122.06333, 37.642146],
[-122.062654, 37.641281],
[-122.062072, 37.640542],
[-122.061487, 37.639797],
[-122.061192, 37.639424],
[-122.06063, 37.638707],
[-122.060059, 37.637982],
[-122.05983, 37.637697],
[-122.059604, 37.637414],
[-122.059404, 37.637168],
[-122.059164, 37.636868],
[-122.058808, 37.636417],
[-122.058253, 37.635703],
[-122.057911, 37.635273],
[-122.05747, 37.63471],
[-122.05725, 37.634427],
[-122.057054, 37.634176],
[-122.056852, 37.633926],
[-122.056006, 37.632842],
[-122.055549, 37.63226],
[-122.054814, 37.631328],
[-122.054167, 37.630498],
[-122.053868, 37.63011],
[-122.053568, 37.629681],
[-122.053468, 37.629507],
[-122.053338, 37.629302],
[-122.053222, 37.629103],
[-122.053084, 37.628859],
[-122.05294, 37.628593],
[-122.052839, 37.628415],
[-122.0527, 37.62811],
[-122.052452, 37.627612],
[-122.051964, 37.626617],
[-122.051772, 37.626229],
[-122.051609, 37.625908],
[-122.050977, 37.624599],
[-122.050737, 37.624113],
[-122.050523, 37.623678],
[-122.050316, 37.623254],
[-122.049984, 37.622579],
[-122.04972, 37.622073],
[-122.049565, 37.621804],
[-122.049416, 37.621558],
[-122.049302, 37.621378],
[-122.04918, 37.621195],
[-122.049031, 37.620985],
[-122.048878, 37.620777],
[-122.048723, 37.620579],
[-122.048556, 37.620373],
[-122.04842, 37.620214],
[-122.048146, 37.619908],
[-122.047999, 37.619757],
[-122.04792, 37.619676],
[-122.047835, 37.619592],
[-122.047736, 37.619493],
[-122.047497, 37.619263],
[-122.047325, 37.619105],
[-122.047063, 37.618871],
[-122.046236, 37.618155],
[-122.045398, 37.617408],
[-122.044619, 37.616726],
[-122.043788, 37.615997],
[-122.037595, 37.610563],
[-122.037278, 37.610274],
[-122.036229, 37.60925],
[-122.036117, 37.609133],
[-122.034705, 37.607718],
[-122.033443, 37.606397],
[-122.03295, 37.605879],
[-122.030835, 37.603662],
[-122.029644, 37.602411],
[-122.029135, 37.601873],
[-122.028693, 37.601412],
[-122.02835, 37.601054],
[-122.028222, 37.600917],
[-122.028091, 37.600781],
[-122.027998, 37.600684],
[-122.02774, 37.600412],
[-122.027534, 37.600196],
[-122.02729, 37.599942],
[-122.027101, 37.599745],
[-122.026868, 37.599512],
[-122.026728, 37.599375],
[-122.026611, 37.599264],
[-122.026452, 37.599123],
[-122.026324, 37.599004],
[-122.026214, 37.598906],
[-122.025593, 37.598354],
[-122.025281, 37.598081],
[-122.025, 37.597834],
[-122.024688, 37.597564],
[-122.024296, 37.59722],
[-122.023757, 37.596736],
[-122.023642, 37.596631],
[-122.023542, 37.596538],
[-122.023369, 37.596378],
[-122.023206, 37.596218],
[-122.023154, 37.596168],
[-122.023115, 37.59613],
[-122.023079, 37.596097],
[-122.023029, 37.596045],
[-122.022965, 37.595978],
[-122.02275, 37.595756],
[-122.022531, 37.595514],
[-122.022291, 37.595242],
[-122.022234, 37.595174],
[-122.022161, 37.595086],
[-122.022103, 37.595019],
[-122.022034, 37.594939],
[-122.021966, 37.594859],
[-122.021915, 37.594795],
[-122.021817, 37.594675],
[-122.021658, 37.594495],
[-122.021426, 37.594212],
[-122.021219, 37.593972],
[-122.021065, 37.593801],
[-122.021007, 37.593736],
[-122.020967, 37.593694],
[-122.020929, 37.593655],
[-122.020872, 37.593597],
[-122.020802, 37.593526],
[-122.020647, 37.593377],
[-122.020549, 37.593284],
[-122.020461, 37.593199],
[-122.020412, 37.593156],
[-122.020354, 37.593104],
[-122.020183, 37.592954],
[-122.020048, 37.592838],
[-122.019885, 37.592705],
[-122.019793, 37.592635],
[-122.01972, 37.592576],
[-122.01965, 37.592525],
[-122.019557, 37.592457],
[-122.019385, 37.592326],
[-122.019085, 37.592102],
[-122.018765, 37.591865],
[-122.018204, 37.591448],
[-122.017895, 37.591219],
[-122.0171, 37.590622],
[-122.016692, 37.59032],
[-122.016371, 37.590089],
[-122.015817, 37.589669],
[-122.015497, 37.589431],
[-122.01515, 37.589169],
[-122.014159, 37.588415],
[-122.013847, 37.588182],
[-122.011853, 37.586658],
[-122.011481, 37.586373],
[-122.011229, 37.586182],
[-122.01049, 37.585619],
[-122.010333, 37.585498],
[-122.010143, 37.585354],
[-122.009574, 37.584919],
[-122.00888, 37.584388],
[-122.008313, 37.583958],
[-122.007269, 37.583164],
[-122.006446, 37.58254],
[-122.005567, 37.58186],
[-122.004923, 37.581365],
[-122.004537, 37.581069],
[-122.003136, 37.580005],
[-122.002242, 37.579319],
[-122.001715, 37.578913],
[-122.001253, 37.578556],
[-122.000564, 37.578025],
[-121.999847, 37.577472],
[-121.997932, 37.576006],
[-121.995922, 37.574459],
[-121.995619, 37.574225],
[-121.994714, 37.573527],
[-121.99397, 37.572962],
[-121.993694, 37.572743],
[-121.993273, 37.57242],
[-121.991502, 37.571059],
[-121.990996, 37.57067],
[-121.990659, 37.570401],
[-121.990182, 37.569997],
[-121.989955, 37.569795],
[-121.989463, 37.569339],
[-121.98896, 37.568829],
[-121.988807, 37.568679],
[-121.988626, 37.568481],
[-121.988448, 37.568282],
[-121.988089, 37.567844],
[-121.987733, 37.567417],
[-121.986703, 37.566157],
[-121.986537, 37.56595],
[-121.986376, 37.565751],
[-121.986181, 37.565514],
[-121.985957, 37.56525],
[-121.985776, 37.565041],
[-121.985623, 37.564863],
[-121.985499, 37.56472],
[-121.985318, 37.56452],
[-121.985027, 37.564218],
[-121.984899, 37.564089],
[-121.984774, 37.563963],
[-121.984676, 37.563865],
[-121.984603, 37.563796],
[-121.984412, 37.563618],
[-121.984246, 37.563464],
[-121.984127, 37.563356],
[-121.983855, 37.563112],
[-121.983641, 37.562932],
[-121.983256, 37.562582],
[-121.982572, 37.561982],
[-121.982033, 37.561511],
[-121.981559, 37.561092],
[-121.981106, 37.560701],
[-121.980652, 37.560324],
[-121.980387, 37.560105],
[-121.980102, 37.559882],
[-121.979814, 37.559666],
[-121.979434, 37.559423],
[-121.978995, 37.559116],
[-121.978639, 37.558864],
[-121.978169, 37.558551],
[-121.977623, 37.55817],
[-121.977417, 37.558024],
[-121.977121, 37.557831],
[-121.976865, 37.557655],
[-121.976568, 37.557436],
[-121.976395, 37.557353]
],
[
[-122.270713, 37.799861],
[-122.270179, 37.799654],
[-122.269529, 37.799396],
[-122.268525, 37.798992],
[-122.267377, 37.798517],
[-122.267183, 37.798395],
[-122.26691, 37.79824],
[-122.266683, 37.798083],
[-122.266323, 37.797875],
[-122.265589, 37.797472],
[-122.265182, 37.797248],
[-122.264574, 37.796939],
[-122.264202, 37.79674],
[-122.26366, 37.796465],
[-122.262696, 37.795886],
[-122.261985, 37.79539],
[-122.261091, 37.794706],
[-122.25951, 37.793439],
[-122.25895, 37.793028],
[-122.258557, 37.792739],
[-122.258382, 37.79261],
[-122.258303, 37.792553],
[-122.258165, 37.792459],
[-122.258031, 37.79237],
[-122.257893, 37.792285],
[-122.257676, 37.792154],
[-122.257415, 37.791995],
[-122.257306, 37.791933],
[-122.257196, 37.791872],
[-122.256969, 37.791744],
[-122.256716, 37.791614],
[-122.256498, 37.791511],
[-122.256259, 37.7914],
[-122.25612, 37.791336],
[-122.256014, 37.791289],
[-122.255908, 37.791246],
[-122.255851, 37.791221],
[-122.255652, 37.791139],
[-122.255356, 37.791024],
[-122.255004, 37.790899],
[-122.254959, 37.790879],
[-122.254782, 37.79082],
[-122.254661, 37.790779],
[-122.254394, 37.790691],
[-122.254234, 37.790639],
[-122.25379, 37.790503],
[-122.253541, 37.790425],
[-122.25316, 37.79031],
[-122.252814, 37.790202],
[-122.252551, 37.790121],
[-122.252439, 37.790085],
[-122.252299, 37.790038],
[-122.252153, 37.789989],
[-122.251745, 37.789843],
[-122.251551, 37.789773],
[-122.250857, 37.789496],
[-122.24971, 37.788996],
[-122.248543, 37.788495],
[-122.246809, 37.787751],
[-122.245552, 37.787202],
[-122.244862, 37.786885],
[-122.244353, 37.786636],
[-122.243912, 37.786423],
[-122.243421, 37.786186],
[-122.243086, 37.786023],
[-122.24279, 37.785882],
[-122.242285, 37.785636],
[-122.241987, 37.785491],
[-122.241666, 37.785326],
[-122.241364, 37.785177],
[-122.241185, 37.785089],
[-122.241043, 37.785018],
[-122.240807, 37.7849],
[-122.240536, 37.78476],
[-122.240049, 37.784497],
[-122.239549, 37.784216],
[-122.23922, 37.784016],
[-122.238971, 37.783868],
[-122.238817, 37.783777],
[-122.238699, 37.783707],
[-122.238569, 37.783631],
[-122.238397, 37.783525],
[-122.238274, 37.783455],
[-122.238181, 37.7834],
[-122.238025, 37.783314],
[-122.237927, 37.783256],
[-122.237796, 37.783181],
[-122.237656, 37.783095],
[-122.237312, 37.782888],
[-122.237159, 37.782797],
[-122.236743, 37.782548],
[-122.236563, 37.78244],
[-122.236442, 37.782368],
[-122.236194, 37.782221],
[-122.236047, 37.782134],
[-122.235734, 37.781944],
[-122.235587, 37.781855],
[-122.235446, 37.781769],
[-122.235044, 37.781514],
[-122.234858, 37.781391],
[-122.234693, 37.781277],
[-122.234605, 37.781216],
[-122.234475, 37.781124],
[-122.234323, 37.781014],
[-122.234195, 37.780916],
[-122.233983, 37.78075],
[-122.2332, 37.780127],
[-122.232935, 37.779904],
[-122.232743, 37.77975],
[-122.232408, 37.779492],
[-122.232055, 37.779233],
[-122.231803, 37.779057],
[-122.231595, 37.778921],
[-122.231321, 37.778746],
[-122.231123, 37.778624],
[-122.230862, 37.778473],
[-122.230571, 37.778311],
[-122.230383, 37.778209],
[-122.23023, 37.778127],
[-122.230001, 37.778007],
[-122.229772, 37.777891],
[-122.229105, 37.777549],
[-122.228728, 37.777359],
[-122.228307, 37.77714],
[-122.22813, 37.777051],
[-122.227894, 37.776929],
[-122.227597, 37.77678],
[-122.22656, 37.776269],
[-122.226374, 37.776174],
[-122.226171, 37.776069],
[-122.226094, 37.776027],
[-122.225862, 37.775897],
[-122.225558, 37.775724],
[-122.225047, 37.775422],
[-122.224572, 37.775141],
[-122.22382, 37.774706],
[-122.223652, 37.77461],
[-122.223298, 37.774402],
[-122.222984, 37.774223],
[-122.222818, 37.774124],
[-122.222585, 37.773986],
[-122.222329, 37.773839],
[-122.222026, 37.773662],
[-122.22163, 37.773441],
[-122.221151, 37.773194],
[-122.220924, 37.773077],
[-122.220649, 37.772945],
[-122.220236, 37.772752],
[-122.219737, 37.772515],
[-122.219285, 37.7723],
[-122.218757, 37.772057],
[-122.218323, 37.771832],
[-122.218171, 37.771751],
[-122.218089, 37.771708],
[-122.217913, 37.771608],
[-122.217764, 37.771525],
[-122.217523, 37.771389],
[-122.217314, 37.77126],
[-122.217092, 37.771119],
[-122.216791, 37.770914],
[-122.216585, 37.770767],
[-122.216384, 37.770616],
[-122.216272, 37.770528],
[-122.216187, 37.77046],
[-122.2161, 37.770392],
[-122.215956, 37.770275],
[-122.215834, 37.770169],
[-122.215617, 37.769975],
[-122.215391, 37.769768],
[-122.215127, 37.76951],
[-122.214725, 37.769102],
[-122.213975, 37.768328],
[-122.213715, 37.768059],
[-122.213622, 37.767966],
[-122.213373, 37.767709],
[-122.213171, 37.767508],
[-122.213032, 37.767372],
[-122.212766, 37.767121],
[-122.21262, 37.766983],
[-122.212323, 37.766721],
[-122.211957, 37.766401],
[-122.211802, 37.766276],
[-122.211492, 37.766011],
[-122.211363, 37.765908],
[-122.211146, 37.765721],
[-122.210737, 37.765378],
[-122.210451, 37.765136],
[-122.210161, 37.764895],
[-122.209748, 37.76455],
[-122.209532, 37.764369],
[-122.209231, 37.764115],
[-122.209064, 37.76398],
[-122.208445, 37.763457],
[-122.206766, 37.762054],
[-122.205483, 37.760979],
[-122.205025, 37.760595],
[-122.203892, 37.759651],
[-122.20063, 37.756912],
[-122.199879, 37.756274],
[-122.198766, 37.755271],
[-122.198327, 37.754895],
[-122.196884, 37.753678],
[-122.196409, 37.753284],
[-122.195922, 37.752873],
[-122.19573, 37.752712],
[-122.195487, 37.75251],
[-122.19528, 37.752335],
[-122.194969, 37.752074],
[-122.194684, 37.751843],
[-122.194409, 37.751629],
[-122.193529, 37.750938],
[-122.192961, 37.750466],
[-122.191093, 37.748907],
[-122.190632, 37.748524],
[-122.188553, 37.746778],
[-122.186353, 37.744931],
[-122.185911, 37.744555],
[-122.184359, 37.743261],
[-122.180251, 37.73981],
[-122.179614, 37.739272],
[-122.17726, 37.737349],
[-122.174961, 37.735423],
[-122.174445, 37.734989],
[-122.167116, 37.728838],
[-122.165421, 37.727412],
[-122.164801, 37.726886],
[-122.164287, 37.72643],
[-122.164047, 37.726194],
[-122.16369, 37.725831],
[-122.163281, 37.725371],
[-122.16291, 37.724904],
[-122.162513, 37.724379],
[-122.162009, 37.723643],
[-122.161361, 37.722695],
[-122.159669, 37.720244],
[-122.15952, 37.72003],
[-122.159398, 37.719865],
[-122.159334, 37.71978],
[-122.159273, 37.719699],
[-122.15918, 37.719588],
[-122.159048, 37.719437],
[-122.15897, 37.719351],
[-122.158889, 37.719271],
[-122.158804, 37.719185],
[-122.158779, 37.71916],
[-122.158714, 37.719101],
[-122.158639, 37.719034],
[-122.158541, 37.718949],
[-122.158298, 37.718757],
[-122.158132, 37.718635],
[-122.157878, 37.718452],
[-122.157566, 37.718237],
[-122.156866, 37.717754],
[-122.155854, 37.717057],
[-122.154863, 37.716379],
[-122.154301, 37.715991],
[-122.154006, 37.715787],
[-122.15375, 37.715612],
[-122.153029, 37.715119],
[-122.148444, 37.711966],
[-122.147591, 37.711379],
[-122.146414, 37.710571],
[-122.144545, 37.709282],
[-122.142296, 37.707738],
[-122.138726, 37.70528],
[-122.137211, 37.704236],
[-122.133704, 37.701825],
[-122.130722, 37.699774],
[-122.130305, 37.699488],
[-122.130015, 37.699288],
[-122.12982, 37.699153],
[-122.128081, 37.697997],
[-122.124181, 37.695383],
[-122.124181, 37.695383],
[-122.121564, 37.693512],
[-122.119058, 37.691789],
[-122.117691, 37.690853]
],
[
[-122.270713, 37.799861],
[-122.270928, 37.799942],
[-122.271097, 37.799987],
[-122.271322, 37.800023],
[-122.272291, 37.799938],
[-122.27243, 37.799896],
[-122.272781, 37.799796],
[-122.2732, 37.79959],
[-122.273728, 37.799315],
[-122.274691, 37.79884],
[-122.274868, 37.798753],
[-122.276054, 37.798516],
[-122.276236, 37.798476],
[-122.276856, 37.798527]
],
[
[-122.469106, 37.706105],
[-122.468903, 37.706333],
[-122.468809, 37.706437],
[-122.468678, 37.706588],
[-122.468434, 37.706903],
[-122.468029, 37.707393],
[-122.467923, 37.707522],
[-122.467832, 37.707627],
[-122.466801, 37.708779],
[-122.466732, 37.708861],
[-122.46667, 37.708939],
[-122.4666, 37.709019],
[-122.466526, 37.709095],
[-122.466449, 37.709166],
[-122.466376, 37.709237],
[-122.466284, 37.709309],
[-122.466215, 37.709364],
[-122.466126, 37.709428],
[-122.466028, 37.709493],
[-122.465941, 37.709544],
[-122.465846, 37.709608],
[-122.465752, 37.709656],
[-122.465664, 37.709709],
[-122.465569, 37.709755],
[-122.465466, 37.709801],
[-122.465351, 37.709849],
[-122.465245, 37.70989],
[-122.465148, 37.709922],
[-122.465035, 37.709958],
[-122.464925, 37.709987],
[-122.46481, 37.710013],
[-122.464685, 37.710036],
[-122.464576, 37.71006],
[-122.464464, 37.710078],
[-122.464349, 37.710097],
[-122.464248, 37.710106],
[-122.464125, 37.710117],
[-122.464, 37.710122],
[-122.463871, 37.710128],
[-122.463753, 37.710132],
[-122.463654, 37.710127],
[-122.462673, 37.710117],
[-122.461932, 37.710109],
[-122.461456, 37.710106],
[-122.461205, 37.710107],
[-122.460612, 37.710103],
[-122.460513, 37.710103],
[-122.460089, 37.7101],
[-122.459798, 37.710097],
[-122.459371, 37.710095],
[-122.458818, 37.710096],
[-122.458429, 37.710097],
[-122.458239, 37.710103],
[-122.458046, 37.710114],
[-122.457854, 37.710123],
[-122.457689, 37.710132],
[-122.457494, 37.710148],
[-122.457301, 37.710168],
[-122.45712, 37.710193],
[-122.456943, 37.71022],
[-122.456714, 37.710261],
[-122.45647, 37.710314],
[-122.456253, 37.710367],
[-122.456029, 37.710421],
[-122.455812, 37.710483],
[-122.455588, 37.710559],
[-122.455342, 37.710654],
[-122.455158, 37.710734],
[-122.454985, 37.71082],
[-122.454815, 37.710906],
[-122.454757, 37.710939],
[-122.454638, 37.711002],
[-122.454466, 37.711098],
[-122.454306, 37.711201],
[-122.454132, 37.711315],
[-122.453978, 37.711421],
[-122.453808, 37.711542],
[-122.453514, 37.711768],
[-122.453207, 37.712002],
[-122.452952, 37.712213],
[-122.452635, 37.712477],
[-122.45215, 37.712868],
[-122.451705, 37.713224],
[-122.451441, 37.713439],
[-122.451107, 37.713707],
[-122.450884, 37.713896],
[-122.450715, 37.714043],
[-122.450556, 37.714184],
[-122.450426, 37.714317],
[-122.450264, 37.714469],
[-122.450109, 37.714616],
[-122.449961, 37.714764],
[-122.449842, 37.714875],
[-122.449687, 37.715039],
[-122.449586, 37.715155],
[-122.449493, 37.715256],
[-122.449409, 37.715351],
[-122.449317, 37.71545],
[-122.449226, 37.715551],
[-122.449141, 37.715654],
[-122.449058, 37.71576],
[-122.448989, 37.715852],
[-122.448913, 37.715962],
[-122.448844, 37.716072],
[-122.448783, 37.716173],
[-122.448722, 37.716283],
[-122.448661, 37.716398],
[-122.448609, 37.716502],
[-122.448567, 37.716602],
[-122.448514, 37.716725],
[-122.448431, 37.716914],
[-122.448349, 37.717127],
[-122.448303, 37.717282],
[-122.448233, 37.71749],
[-122.448165, 37.717655],
[-122.448122, 37.717956],
[-122.448092, 37.718172],
[-122.448092, 37.718314],
[-122.448061, 37.718552],
[-122.448055, 37.718621],
[-122.448051, 37.718656],
[-122.448034, 37.718801],
[-122.448005, 37.719277],
[-122.447846, 37.720179],
[-122.447631, 37.721123],
[-122.447624, 37.721147],
[-122.447593, 37.721264],
[-122.447372, 37.722221],
[-122.447196, 37.723],
[-122.446967, 37.723855],
[-122.446671, 37.724539],
[-122.446363, 37.725104],
[-122.446308, 37.725188],
[-122.446245, 37.72529],
[-122.446186, 37.725395],
[-122.44613, 37.725479],
[-122.446059, 37.725571],
[-122.445995, 37.725663],
[-122.44593, 37.725755],
[-122.445865, 37.725839],
[-122.445526, 37.726234],
[-122.445164, 37.726612],
[-122.445034, 37.726729],
[-122.444943, 37.726806],
[-122.444845, 37.726909],
[-122.444723, 37.727013],
[-122.44461, 37.727109],
[-122.444507, 37.727194],
[-122.444392, 37.727285],
[-122.444267, 37.727381],
[-122.443613, 37.727828],
[-122.443394, 37.727959],
[-122.44319, 37.728081],
[-122.442962, 37.728209],
[-122.442869, 37.728256],
[-122.442575, 37.728409],
[-122.442264, 37.72856],
[-122.441807, 37.728764],
[-122.441408, 37.728925],
[-122.440789, 37.729147],
[-122.43985, 37.729516],
[-122.439205, 37.72978],
[-122.43892, 37.72988],
[-122.438031, 37.730328],
[-122.437495, 37.730633],
[-122.437173, 37.730829],
[-122.436901, 37.731003],
[-122.43666, 37.731183],
[-122.436385, 37.731366],
[-122.436179, 37.731508],
[-122.43605, 37.731595],
[-122.435966, 37.731656],
[-122.435706, 37.731839],
[-122.435447, 37.732004],
[-122.435241, 37.732136],
[-122.435117, 37.732222],
[-122.435026, 37.732295],
[-122.434642, 37.732542],
[-122.434329, 37.732752],
[-122.433801, 37.733121],
[-122.433405, 37.733368],
[-122.432847, 37.733721],
[-122.432582, 37.733918],
[-122.431811, 37.734415],
[-122.431274, 37.734758],
[-122.430172, 37.735479],
[-122.428873, 37.736323],
[-122.427615, 37.737145],
[-122.426334, 37.737984],
[-122.425826, 37.738339],
[-122.425538, 37.738547],
[-122.425326, 37.738713],
[-122.424999, 37.73895],
[-122.424828, 37.739072],
[-122.424649, 37.739215],
[-122.424537, 37.739296],
[-122.424351, 37.739428],
[-122.42411, 37.739622],
[-122.424011, 37.739738],
[-122.423827, 37.739869],
[-122.423179, 37.740563],
[-122.422476, 37.741588],
[-122.422061, 37.742264],
[-122.420958, 37.743961],
[-122.419834, 37.745675],
[-122.419392, 37.746361],
[-122.418916, 37.747089],
[-122.418687, 37.747518],
[-122.41859, 37.747722],
[-122.418544, 37.747813],
[-122.41849, 37.747912],
[-122.418397, 37.748166],
[-122.41836, 37.748248],
[-122.418323, 37.748339],
[-122.41829, 37.748442],
[-122.418259, 37.748552],
[-122.418218, 37.748731],
[-122.418186, 37.748868],
[-122.41816, 37.749093],
[-122.418301, 37.75055],
[-122.41844, 37.752086],
[-122.418615, 37.753786],
[-122.418742, 37.755411],
[-122.4189, 37.756821],
[-122.418962, 37.757461],
[-122.419053, 37.758554],
[-122.419231, 37.76021],
[-122.419372, 37.761849],
[-122.419543, 37.763429],
[-122.41967, 37.764723],
[-122.419692, 37.765024],
[-122.419854, 37.766637],
[-122.419892, 37.767184],
[-122.419996, 37.768204],
[-122.420043, 37.768923],
[-122.420062, 37.769113],
[-122.420119, 37.769442],
[-122.420128, 37.769528],
[-122.42014, 37.769621],
[-122.420147, 37.76977],
[-122.420152, 37.769886],
[-122.420176, 37.770065],
[-122.420215, 37.770362],
[-122.420327, 37.771558],
[-122.420316, 37.771965],
[-122.420322, 37.772277],
[-122.420317, 37.772531],
[-122.420281, 37.772812],
[-122.420153, 37.773345],
[-122.420104, 37.773593],
[-122.420038, 37.773762],
[-122.419906, 37.774022],
[-122.419471, 37.774777],
[-122.419429, 37.774913],
[-122.419406, 37.774983],
[-122.419377, 37.775045],
[-122.419321, 37.775113],
[-122.419239, 37.775191],
[-122.418701, 37.775596],
[-122.417492, 37.776574],
[-122.41652, 37.777348],
[-122.416228, 37.77756],
[-122.414798, 37.7787],
[-122.412528, 37.780489],
[-122.41145, 37.781351],
[-122.410319, 37.782234],
[-122.408084, 37.784002],
[-122.405876, 37.785769],
[-122.404718, 37.786653],
[-122.404003, 37.787215],
[-122.403499, 37.787631],
[-122.402875, 37.788109],
[-122.402102, 37.788723],
[-122.401386, 37.789267],
[-122.399138, 37.791042],
[-122.398258, 37.791728],
[-122.397415, 37.792407],
[-122.396506, 37.793169],
[-122.395321, 37.794057],
[-122.394828, 37.794362],
[-122.394659, 37.794469],
[-122.394508, 37.79455],
[-122.394366, 37.794631],
[-122.394072, 37.794782],
[-122.393814, 37.794904],
[-122.393498, 37.79506],
[-122.393151, 37.795219],
[-122.392537, 37.795517],
[-122.391751, 37.795841],
[-122.391448, 37.795976],
[-122.391302, 37.796041],
[-122.390733, 37.796294],
[-122.38985, 37.796687],
[-122.389027, 37.797053],
[-122.388439, 37.797315],
[-122.387975, 37.797522],
[-122.387476, 37.797743],
[-122.386946, 37.797979],
[-122.386305, 37.798265],
[-122.385701, 37.798534],
[-122.385193, 37.79876],
[-122.384824, 37.798924],
[-122.38453, 37.799055],
[-122.384152, 37.799223],
[-122.383849, 37.799358],
[-122.383682, 37.799432],
[-122.383442, 37.799539],
[-122.383164, 37.799663],
[-122.382839, 37.799808],
[-122.382558, 37.799933],
[-122.382295, 37.80005],
[-122.381886, 37.800232],
[-122.381553, 37.80038],
[-122.381386, 37.800454],
[-122.381017, 37.800618],
[-122.380655, 37.800779],
[-122.380293, 37.800941],
[-122.379997, 37.801072],
[-122.379566, 37.801264],
[-122.379333, 37.801367],
[-122.379061, 37.801484],
[-122.378788, 37.801599],
[-122.378485, 37.801723],
[-122.378206, 37.801835],
[-122.377961, 37.801929],
[-122.377783, 37.801997],
[-122.377556, 37.802081],
[-122.377278, 37.802182],
[-122.377102, 37.802244],
[-122.376862, 37.802327],
[-122.376663, 37.802394],
[-122.37642, 37.802474],
[-122.376049, 37.802592],
[-122.375907, 37.802636],
[-122.375677, 37.802705],
[-122.375582, 37.802734],
[-122.374975, 37.802906],
[-122.374499, 37.803034],
[-122.374181, 37.803113],
[-122.373835, 37.803197],
[-122.373325, 37.803313],
[-122.37284, 37.803416],
[-122.372496, 37.803485],
[-122.37218, 37.803544],
[-122.372018, 37.803573],
[-122.371873, 37.803599],
[-122.371594, 37.803647],
[-122.37109, 37.803733],
[-122.370628, 37.803811],
[-122.370395, 37.80385],
[-122.370216, 37.803881],
[-122.370018, 37.803914],
[-122.369691, 37.803969],
[-122.369393, 37.80402],
[-122.369234, 37.804047],
[-122.368983, 37.804089],
[-122.36873, 37.804132],
[-122.368345, 37.804197],
[-122.367904, 37.804272],
[-122.367638, 37.804317],
[-122.367375, 37.804361],
[-122.367188, 37.804393],
[-122.366998, 37.804425],
[-122.366678, 37.804479],
[-122.366367, 37.804532],
[-122.366027, 37.804589],
[-122.365735, 37.804639],
[-122.365328, 37.804708],
[-122.365107, 37.804745],
[-122.364819, 37.804794],
[-122.364621, 37.804827],
[-122.364322, 37.804878],
[-122.364022, 37.804929],
[-122.363705, 37.804982],
[-122.363326, 37.805046],
[-122.363004, 37.805101],
[-122.362666, 37.805158],
[-122.362384, 37.805206],
[-122.362149, 37.805246],
[-122.361906, 37.805287],
[-122.361806, 37.805303],
[-122.361615, 37.805336],
[-122.361334, 37.805383],
[-122.361157, 37.805413],
[-122.360916, 37.805454],
[-122.360766, 37.805479],
[-122.360571, 37.805512],
[-122.360333, 37.805553],
[-122.360139, 37.805586],
[-122.359966, 37.805615],
[-122.359805, 37.805642],
[-122.359603, 37.805676],
[-122.359438, 37.805704],
[-122.359239, 37.805738],
[-122.359127, 37.805757],
[-122.358849, 37.805804],
[-122.358639, 37.805839],
[-122.358458, 37.80587],
[-122.35819, 37.805915],
[-122.358054, 37.805938],
[-122.357891, 37.805966],
[-122.357755, 37.805989],
[-122.357578, 37.806019],
[-122.357468, 37.806037],
[-122.357171, 37.806087],
[-122.356963, 37.806122],
[-122.356845, 37.806143],
[-122.35676, 37.806157],
[-122.356589, 37.806186],
[-122.356403, 37.806217],
[-122.356282, 37.806238],
[-122.356198, 37.806252],
[-122.356066, 37.806274],
[-122.355882, 37.806305],
[-122.355686, 37.806339],
[-122.355403, 37.806386],
[-122.355272, 37.806408],
[-122.355008, 37.806453],
[-122.354917, 37.806468],
[-122.35485, 37.80648],
[-122.35476, 37.806495],
[-122.354695, 37.806506],
[-122.354525, 37.806535],
[-122.354409, 37.806554],
[-122.354325, 37.806569],
[-122.354227, 37.806585],
[-122.354086, 37.806609],
[-122.354017, 37.806621],
[-122.353947, 37.806633],
[-122.353904, 37.80664],
[-122.353765, 37.806663],
[-122.353575, 37.806695],
[-122.353343, 37.806735],
[-122.353173, 37.806763],
[-122.35303, 37.806788],
[-122.352832, 37.806821],
[-122.352675, 37.806848],
[-122.352471, 37.806882],
[-122.35208, 37.806948],
[-122.351678, 37.807016],
[-122.351343, 37.807073],
[-122.351125, 37.80711],
[-122.350989, 37.807133],
[-122.350903, 37.807147],
[-122.350826, 37.80716],
[-122.350549, 37.807207],
[-122.350215, 37.807264],
[-122.349855, 37.807325],
[-122.349491, 37.807386],
[-122.349227, 37.807431],
[-122.348673, 37.807524],
[-122.34762, 37.807702],
[-122.346954, 37.807817],
[-122.346269, 37.807931],
[-122.345982, 37.807981],
[-122.345735, 37.808021],
[-122.34529, 37.808096],
[-122.344754, 37.808186],
[-122.342008, 37.808651],
[-122.341598, 37.80872],
[-122.341341, 37.808763],
[-122.340242, 37.808948],
[-122.339687, 37.809041],
[-122.339143, 37.809133],
[-122.338773, 37.809194],
[-122.338187, 37.809285],
[-122.337648, 37.809363],
[-122.337162, 37.809429],
[-122.336553, 37.809505],
[-122.336131, 37.809552],
[-122.3358, 37.809588],
[-122.335224, 37.809645],
[-122.334668, 37.809694],
[-122.334142, 37.809735],
[-122.333583, 37.809772],
[-122.33315, 37.809797],
[-122.332755, 37.809816],
[-122.332116, 37.809842],
[-122.33108, 37.809866],
[-122.330735, 37.80987],
[-122.330014, 37.80987],
[-122.329757, 37.809867],
[-122.329449, 37.809862],
[-122.32917, 37.809857],
[-122.328638, 37.809842],
[-122.328189, 37.809825],
[-122.328029, 37.809818],
[-122.327321, 37.809778],
[-122.326497, 37.809718],
[-122.326137, 37.809687],
[-122.325817, 37.809649],
[-122.323554, 37.809392],
[-122.322814, 37.809368],
[-122.322059, 37.809327],
[-122.320701, 37.80925],
[-122.320136, 37.80922],
[-122.31951, 37.809162],
[-122.318885, 37.809106],
[-122.316062, 37.808815],
[-122.315696, 37.808781],
[-122.315482, 37.808758],
[-122.315185, 37.808731],
[-122.314429, 37.808664],
[-122.312583, 37.808473],
[-122.312057, 37.808422],
[-122.308982, 37.808129],
[-122.308486, 37.808084],
[-122.308295, 37.808064],
[-122.306411, 37.807806],
[-122.305541, 37.807685],
[-122.305182, 37.807598],
[-122.30506, 37.807577],
[-122.304526, 37.807461],
[-122.30445, 37.807442],
[-122.304175, 37.807385],
[-122.303977, 37.807343],
[-122.303794, 37.807301],
[-122.302436, 37.806996],
[-122.302398, 37.806989],
[-122.298135, 37.806031],
[-122.297836, 37.805959],
[-122.297584, 37.805879],
[-122.297324, 37.805794],
[-122.297073, 37.805706],
[-122.296836, 37.805615],
[-122.296599, 37.805523],
[-122.296356, 37.805421],
[-122.296134, 37.805318],
[-122.296096, 37.805302],
[-122.295089, 37.804897],
[-122.293883, 37.80441],
[-122.29341, 37.804204],
[-122.292579, 37.803875],
[-122.292563, 37.803872],
[-122.29206, 37.803669],
[-122.291923, 37.803616],
[-122.291747, 37.803548],
[-122.291663, 37.803513],
[-122.291564, 37.803468],
[-122.291335, 37.803381],
[-122.29132, 37.803376],
[-122.291312, 37.803371],
[-122.291297, 37.803365],
[-122.291137, 37.803291],
[-122.290946, 37.803223],
[-122.284796, 37.801721],
[-122.284606, 37.801668],
[-122.284431, 37.801611],
[-122.284095, 37.801496],
[-122.283744, 37.801381],
[-122.283645, 37.801347],
[-122.283523, 37.801296],
[-122.283386, 37.801237],
[-122.283157, 37.801141],
[-122.282943, 37.801045],
[-122.282546, 37.800853],
[-122.282294, 37.800744],
[-122.282272, 37.800732],
[-122.28218, 37.800693],
[-122.281188, 37.800214],
[-122.280051, 37.799664],
[-122.280044, 37.79966],
[-122.279952, 37.799607],
[-122.279907, 37.799584],
[-122.279716, 37.799493],
[-122.279471, 37.799368],
[-122.279183, 37.799217],
[-122.278686, 37.798956],
[-122.278478, 37.798859],
[-122.278369, 37.798811],
[-122.278197, 37.798746],
[-122.278051, 37.798694],
[-122.277819, 37.798637],
[-122.277697, 37.798614],
[-122.277507, 37.798583],
[-122.277358, 37.798568],
[-122.276984, 37.798532],
[-122.276923, 37.798528],
[-122.276856, 37.798527]
]
]
}
},
{
type: 'Feature',
properties: {OBJECTID: 21, name: 'PITT-SFIA (ROUTE 1/2)', color: '#ffe800'},
geometry: {
type: 'MultiLineString',
coordinates: [
[
[-121.942073, 38.018937],
[-121.942449, 38.01892],
[-121.942633, 38.018917],
[-121.94282, 38.018919],
[-121.943121, 38.018915],
[-121.943447, 38.018913],
[-121.943743, 38.018913],
[-121.944108, 38.018909],
[-121.94449, 38.01891],
[-121.944892, 38.018911],
[-121.945267, 38.018911],
[-121.9456, 38.018911],
[-121.945852, 38.018909],
[-121.946445, 38.018912],
[-121.946981, 38.018924],
[-121.947611, 38.018963],
[-121.948062, 38.019005],
[-121.948319, 38.019033],
[-121.948534, 38.019066],
[-121.948917, 38.019132],
[-121.949248, 38.0192],
[-121.949597, 38.019284],
[-121.94979, 38.019335],
[-121.950002, 38.019394],
[-121.950206, 38.019454],
[-121.950605, 38.019575],
[-121.950798, 38.019635],
[-121.951102, 38.019731],
[-121.951338, 38.019803],
[-121.95161, 38.019887],
[-121.951874, 38.019969],
[-121.952, 38.020008],
[-121.952239, 38.020082],
[-121.952554, 38.020179],
[-121.952843, 38.020269],
[-121.953136, 38.020357],
[-121.953308, 38.020406],
[-121.953643, 38.020503],
[-121.953936, 38.020584],
[-121.954182, 38.02065],
[-121.954427, 38.020712],
[-121.954624, 38.020762],
[-121.954938, 38.020838],
[-121.955164, 38.020892],
[-121.9554, 38.020944],
[-121.955637, 38.020996],
[-121.955805, 38.021031],
[-121.955926, 38.021057],
[-121.956017, 38.021075],
[-121.956428, 38.021157],
[-121.956689, 38.021207],
[-121.957004, 38.021266],
[-121.95732, 38.021325],
[-121.957584, 38.021376],
[-121.957925, 38.021441],
[-121.958182, 38.021489],
[-121.958478, 38.021547],
[-121.958713, 38.02159],
[-121.958968, 38.021638],
[-121.959195, 38.02168],
[-121.959414, 38.021721],
[-121.959704, 38.021777],
[-121.959955, 38.021825],
[-121.960349, 38.0219],
[-121.960645, 38.021956],
[-121.961001, 38.022024],
[-121.96136, 38.022091],
[-121.961901, 38.022194],
[-121.962517, 38.022311],
[-121.962991, 38.022401],
[-121.963184, 38.022438],
[-121.96357, 38.022509],
[-121.963898, 38.022572],
[-121.964273, 38.022644],
[-121.964605, 38.022706],
[-121.965156, 38.02281],
[-121.965598, 38.022894],
[-121.966146, 38.022998],
[-121.966646, 38.023093],
[-121.967215, 38.0232],
[-121.967743, 38.0233],
[-121.96817, 38.023381],
[-121.968312, 38.023408],
[-121.96833, 38.023412],
[-121.968348, 38.023416],
[-121.96836, 38.023418],
[-121.968371, 38.02342],
[-121.968384, 38.023422],
[-121.968431, 38.023431],
[-121.968606, 38.023462],
[-121.968714, 38.023483],
[-121.968898, 38.023518],
[-121.969114, 38.023556],
[-121.969264, 38.023582],
[-121.969396, 38.023604],
[-121.969728, 38.023657],
[-121.970104, 38.023708],
[-121.970512, 38.023755],
[-121.970877, 38.02379],
[-121.970942, 38.023793],
[-121.971315, 38.023818],
[-121.971738, 38.023836],
[-121.972116, 38.023844],
[-121.972593, 38.023843],
[-121.972882, 38.023833],
[-121.973374, 38.023809],
[-121.973674, 38.023789],
[-121.974088, 38.02375],
[-121.974252, 38.023734],
[-121.974485, 38.023705],
[-121.974717, 38.023673],
[-121.975026, 38.023627],
[-121.975275, 38.023585],
[-121.975607, 38.023523],
[-121.976055, 38.023429],
[-121.976189, 38.023397],
[-121.976447, 38.023336],
[-121.976794, 38.023244],
[-121.977226, 38.02312],
[-121.977574, 38.02301],
[-121.978322, 38.022747],
[-121.978744, 38.022577],
[-121.979167, 38.022398],
[-121.979561, 38.022228],
[-121.979989, 38.022042],
[-121.980224, 38.021939],
[-121.980495, 38.021823],
[-121.980797, 38.021691],
[-121.981043, 38.021584],
[-121.981329, 38.02146],
[-121.981452, 38.021406],
[-121.981598, 38.021343],
[-121.98182, 38.021247],
[-121.982059, 38.021142],
[-121.982358, 38.021012],
[-121.982668, 38.020878],
[-121.982765, 38.020837],
[-121.982911, 38.020771],
[-121.983045, 38.020712],
[-121.983301, 38.020603],
[-121.983564, 38.02049],
[-121.98378, 38.020399],
[-121.983998, 38.020308],
[-121.984221, 38.020212],
[-121.984539, 38.020075],
[-121.984759, 38.019977],
[-121.985049, 38.019844],
[-121.985239, 38.019761],
[-121.985631, 38.019591],
[-121.98587, 38.019486],
[-121.986149, 38.019364],
[-121.986548, 38.019193],
[-121.986814, 38.019074],
[-121.986944, 38.019018],
[-121.987103, 38.018949],
[-121.987383, 38.018825],
[-121.987605, 38.018731],
[-121.987787, 38.018649],
[-121.988059, 38.018527],
[-121.98833, 38.018402],
[-121.988546, 38.018296],
[-121.988731, 38.018205],
[-121.988833, 38.018152],
[-121.988994, 38.01807],
[-121.989134, 38.017995],
[-121.989373, 38.017865],
[-121.989611, 38.017729],
[-121.989789, 38.017623],
[-121.990001, 38.017498],
[-121.990232, 38.017355],
[-121.9904, 38.017249],
[-121.990604, 38.017119],
[-121.990891, 38.016935],
[-121.991101, 38.0168],
[-121.991406, 38.016606],
[-121.991625, 38.016471],
[-121.991832, 38.016339],
[-121.992061, 38.016198],
[-121.99226, 38.016074],
[-121.99242, 38.01597],
[-121.992677, 38.01581],
[-121.992931, 38.015657],
[-121.99325, 38.015474],
[-121.993406, 38.015387],
[-121.993527, 38.015321],
[-121.993695, 38.015231],
[-121.993836, 38.015157],
[-121.994145, 38.014999],
[-121.994326, 38.01491],
[-121.994522, 38.014818],
[-121.994656, 38.014758],
[-121.995046, 38.014586],
[-121.995326, 38.014469],
[-121.995546, 38.01438],
[-121.99591, 38.014241],
[-121.996157, 38.01415],
[-121.996489, 38.014036],
[-121.996811, 38.01393],
[-121.99707, 38.013846],
[-121.997424, 38.013739],
[-121.997933, 38.013589],
[-121.998366, 38.013486],
[-121.998717, 38.013412],
[-121.999094, 38.013332],
[-121.99933, 38.013286],
[-121.999656, 38.013227],
[-121.999918, 38.013184],
[-122.000255, 38.013132],
[-122.000681, 38.013064],
[-122.001179, 38.012989],
[-122.001466, 38.012943],
[-122.001936, 38.012871],
[-122.002351, 38.012808],
[-122.002858, 38.01273],
[-122.003721, 38.012599],
[-122.004356, 38.012501],
[-122.004993, 38.012403],
[-122.005781, 38.012282],
[-122.006144, 38.012227],
[-122.006602, 38.012159],
[-122.007324, 38.012048],
[-122.008053, 38.011937],
[-122.008585, 38.011856],
[-122.009173, 38.011766],
[-122.009755, 38.011677],
[-122.010711, 38.011532],
[-122.01142, 38.011425],
[-122.012111, 38.011321],
[-122.012819, 38.011211],
[-122.013204, 38.011152],
[-122.013766, 38.011067],
[-122.014316, 38.010984],
[-122.014971, 38.010884],
[-122.015295, 38.010835],
[-122.015508, 38.010804],
[-122.015974, 38.010733],
[-122.016267, 38.010687],
[-122.016695, 38.01062],
[-122.016966, 38.010569],
[-122.01727, 38.010498],
[-122.017495, 38.010426],
[-122.017728, 38.010344],
[-122.018126, 38.010192],
[-122.018407, 38.010064],
[-122.018543, 38.009996],
[-122.018649, 38.009941],
[-122.018963, 38.009755],
[-122.019068, 38.009691],
[-122.019212, 38.009595],
[-122.019342, 38.0095],
[-122.01949, 38.009386],
[-122.019647, 38.009251],
[-122.019919, 38.008995],
[-122.02003, 38.008878],
[-122.020287, 38.008581],
[-122.020469, 38.008361],
[-122.020641, 38.008152],
[-122.020727, 38.008044],
[-122.020874, 38.007862],
[-122.021006, 38.007698],
[-122.021128, 38.007545],
[-122.021212, 38.007436],
[-122.021328, 38.007292],
[-122.021457, 38.007135],
[-122.021712, 38.006806],
[-122.021812, 38.006683],
[-122.022092, 38.006338],
[-122.022378, 38.005996],
[-122.022525, 38.005806],
[-122.022894, 38.005373],
[-122.023019, 38.005212],
[-122.0231, 38.005107],
[-122.02322, 38.004959],
[-122.023369, 38.004781],
[-122.023504, 38.004629],
[-122.02377, 38.004309],
[-122.023902, 38.004159],
[-122.024144, 38.003848],
[-122.024449, 38.003457],
[-122.024759, 38.003083],
[-122.025006, 38.002785],
[-122.025391, 38.002335],
[-122.025883, 38.001722],
[-122.026355, 38.001156],
[-122.026752, 38.000666],
[-122.02711, 38.000188],
[-122.027332, 37.999882],
[-122.027812, 37.999224],
[-122.028239, 37.998637],
[-122.028478, 37.99831],
[-122.028674, 37.998043],
[-122.028856, 37.997791],
[-122.029139, 37.997397],
[-122.02948, 37.996925],
[-122.029684, 37.996642],
[-122.029926, 37.996302],
[-122.030118, 37.996029],
[-122.030299, 37.995784],
[-122.030406, 37.995633],
[-122.030454, 37.995568],
[-122.030556, 37.995433],
[-122.030663, 37.995291],
[-122.030729, 37.995194],
[-122.030811, 37.995078],
[-122.031045, 37.994757],
[-122.031277, 37.994439],
[-122.031429, 37.994227],
[-122.031513, 37.994114],
[-122.031621, 37.993966],
[-122.031827, 37.993685],
[-122.031997, 37.99345],
[-122.032141, 37.99325],
[-122.032285, 37.993048],
[-122.032442, 37.992816],
[-122.032583, 37.992598],
[-122.032652, 37.992485],
[-122.032726, 37.992358],
[-122.032846, 37.992139],
[-122.032926, 37.991986],
[-122.033011, 37.991807],
[-122.033088, 37.991637],
[-122.033156, 37.99147],
[-122.033223, 37.991295],
[-122.033284, 37.991123],
[-122.033344, 37.990938],
[-122.033396, 37.990756],
[-122.033422, 37.990656],
[-122.033454, 37.990521],
[-122.033503, 37.990288],
[-122.033543, 37.990063],
[-122.033572, 37.989836],
[-122.033576, 37.989801],
[-122.033594, 37.989496],
[-122.033606, 37.9893],
[-122.033608, 37.989183],
[-122.03361, 37.989022],
[-122.033606, 37.988848],
[-122.033596, 37.988684],
[-122.033583, 37.988529],
[-122.033567, 37.988374],
[-122.033544, 37.988195],
[-122.033524, 37.988076],
[-122.033494, 37.987894],
[-122.033465, 37.987749],
[-122.033406, 37.987515],
[-122.033336, 37.987262],
[-122.033277, 37.987087],
[-122.033176, 37.986795],
[-122.033066, 37.986501],
[-122.032884, 37.986057],
[-122.032782, 37.985814],
[-122.032673, 37.985558],
[-122.032566, 37.985305],
[-122.032466, 37.985074],
[-122.032339, 37.984774],
[-122.032246, 37.984552],
[-122.032128, 37.984277],
[-122.032074, 37.984151],
[-122.031941, 37.983837],
[-122.031813, 37.983541],
[-122.0317, 37.983267],
[-122.031642, 37.983134],
[-122.03159, 37.983009],
[-122.031521, 37.982852],
[-122.031437, 37.982651],
[-122.031284, 37.982289],
[-122.031154, 37.981975],
[-122.03108, 37.981803],
[-122.031004, 37.981624],
[-122.03087, 37.981305],
[-122.030754, 37.981029],
[-122.03063, 37.980742],
[-122.030506, 37.980451],
[-122.030448, 37.980322],
[-122.030372, 37.980158],
[-122.030297, 37.979999],
[-122.030255, 37.979918],
[-122.030232, 37.97987],
[-122.030155, 37.97973],
[-122.030078, 37.979592],
[-122.029968, 37.979416],
[-122.029916, 37.979332],
[-122.029858, 37.979243],
[-122.029822, 37.979191],
[-122.029779, 37.979128],
[-122.029734, 37.979063],
[-122.029696, 37.979011],
[-122.029613, 37.978894],
[-122.029577, 37.978846],
[-122.029555, 37.978813],
[-122.029516, 37.978762],
[-122.029494, 37.978732],
[-122.029475, 37.978706],
[-122.02945, 37.978672],
[-122.02943, 37.978644],
[-122.029413, 37.978621],
[-122.029398, 37.978603],
[-122.029381, 37.978579],
[-122.029296, 37.978464],
[-122.029225, 37.97837],
[-122.029165, 37.978289],
[-122.029068, 37.978157],
[-122.029045, 37.978128],
[-122.029019, 37.97809],
[-122.029009, 37.978077],
[-122.028998, 37.978065],
[-122.028982, 37.978042],
[-122.028967, 37.978024],
[-122.028956, 37.978007],
[-122.028936, 37.977978],
[-122.028902, 37.97793],
[-122.028862, 37.977876],
[-122.028819, 37.977812],
[-122.02878, 37.977756],
[-122.028722, 37.977667],
[-122.028649, 37.977548],
[-122.02862, 37.977497],
[-122.028565, 37.977386],
[-122.028527, 37.977311],
[-122.028499, 37.977249],
[-122.028458, 37.977152],
[-122.028427, 37.977059],
[-122.028385, 37.976924],
[-122.028361, 37.976832],
[-122.028332, 37.976699],
[-122.028315, 37.976598],
[-122.028302, 37.976504],
[-122.028289, 37.976372],
[-122.028281, 37.976257],
[-122.028273, 37.976102],
[-122.028277, 37.97599],
[-122.028282, 37.975917],
[-122.028297, 37.975822],
[-122.028317, 37.975692],
[-122.028363, 37.975495],
[-122.028398, 37.97538],
[-122.028425, 37.975301],
[-122.028437, 37.975263],
[-122.028455, 37.975212],
[-122.028476, 37.975155],
[-122.028485, 37.97513],
[-122.028501, 37.975094],
[-122.028507, 37.975079],
[-122.028514, 37.975066],
[-122.028526, 37.975037],
[-122.028535, 37.975017],
[-122.028543, 37.974995],
[-122.02855, 37.974971],
[-122.028561, 37.974941],
[-122.02859, 37.974878],
[-122.028669, 37.974696],
[-122.028749, 37.974538],
[-122.028823, 37.974372],
[-122.028913, 37.974168],
[-122.028976, 37.974023],
[-122.02905, 37.973841],
[-122.029177, 37.973532],
[-122.029447, 37.972906],
[-122.029506, 37.972792],
[-122.029548, 37.972709],
[-122.029641, 37.972496],
[-122.029753, 37.97223],
[-122.029834, 37.97204],
[-122.029901, 37.97189],
[-122.030006, 37.971655],
[-122.030049, 37.971567],
[-122.030071, 37.971525],
[-122.030117, 37.971418],
[-122.030184, 37.971265],
[-122.030245, 37.971121],
[-122.030273, 37.97105],
[-122.030301, 37.970982],
[-122.03034, 37.970893],
[-122.030397, 37.970764],
[-122.030466, 37.970607],
[-122.0305, 37.97052],
[-122.030517, 37.970481],
[-122.030544, 37.970415],
[-122.030564, 37.970373],
[-122.030596, 37.970301],
[-122.030645, 37.970173],
[-122.030681, 37.970087],
[-122.030705, 37.970022],
[-122.030757, 37.969912],
[-122.030799, 37.96981],
[-122.030852, 37.96967],
[-122.030892, 37.969562],
[-122.030944, 37.969422],
[-122.030996, 37.969283],
[-122.031036, 37.969181],
[-122.031057, 37.969118],
[-122.031085, 37.969033],
[-122.031093, 37.969004],
[-122.031105, 37.968969],
[-122.031114, 37.968943],
[-122.031119, 37.968926],
[-122.031126, 37.968905],
[-122.031132, 37.968882],
[-122.031142, 37.968849],
[-122.031156, 37.968801],
[-122.03117, 37.968755],
[-122.031174, 37.968743],
[-122.031183, 37.968707],
[-122.031191, 37.968675],
[-122.031212, 37.968598],
[-122.03122, 37.968569],
[-122.031227, 37.96854],
[-122.031233, 37.968514],
[-122.03124, 37.96849],
[-122.031245, 37.968472],
[-122.031251, 37.968445],
[-122.031255, 37.968426],
[-122.03126, 37.968402],
[-122.031266, 37.968378],
[-122.031271, 37.968353],
[-122.031276, 37.968327],
[-122.031282, 37.968292],
[-122.031289, 37.968263],
[-122.031293, 37.968242],
[-122.031297, 37.96822],
[-122.031301, 37.968197],
[-122.031305, 37.968176],
[-122.03131, 37.968152],
[-122.031314, 37.968129],
[-122.031317, 37.96811],
[-122.031321, 37.968089],
[-122.031324, 37.968076],
[-122.031327, 37.968062],
[-122.031329, 37.96805],
[-122.031332, 37.968032],
[-122.031335, 37.96801],
[-122.031338, 37.967993],
[-122.031343, 37.967961],
[-122.031347, 37.96793],
[-122.031349, 37.967915],
[-122.031352, 37.967891],
[-122.031354, 37.967873],
[-122.031357, 37.967853],
[-122.031359, 37.967838],
[-122.03136, 37.967826],
[-122.031363, 37.967805],
[-122.031366, 37.967786],
[-122.031368, 37.967767],
[-122.031369, 37.967751],
[-122.031373, 37.967724],
[-122.031375, 37.967707],
[-122.031377, 37.96769],
[-122.031379, 37.967666],
[-122.031382, 37.967642],
[-122.031384, 37.967621],
[-122.031386, 37.967602],
[-122.031388, 37.967588],
[-122.03139, 37.967566],
[-122.031391, 37.967545],
[-122.031393, 37.967525],
[-122.031395, 37.967502],
[-122.031397, 37.96748],
[-122.031399, 37.967463],
[-122.031401, 37.967436],
[-122.031404, 37.967403],
[-122.031406, 37.967362],
[-122.031408, 37.967328],
[-122.03141, 37.967292],
[-122.031412, 37.967258],
[-122.031414, 37.967214],
[-122.031415, 37.967187],
[-122.031416, 37.967168],
[-122.031417, 37.967141],
[-122.031418, 37.967096],
[-122.031421, 37.967005],
[-122.031421, 37.966932],
[-122.031422, 37.96688],
[-122.031422, 37.966844],
[-122.031422, 37.966818],
[-122.031421, 37.966793],
[-122.03142, 37.966776],
[-122.031419, 37.966742],
[-122.031418, 37.966715],
[-122.031418, 37.966673],
[-122.031416, 37.966641],
[-122.031414, 37.966595],
[-122.031411, 37.966552],
[-122.031407, 37.966459],
[-122.031404, 37.966417],
[-122.031401, 37.966357],
[-122.031396, 37.966288],
[-122.03139, 37.966219],
[-122.031383, 37.966143],
[-122.031373, 37.966073],
[-122.031366, 37.96601],
[-122.031357, 37.965943],
[-122.031351, 37.965904],
[-122.031346, 37.965868],
[-122.03134, 37.965837],
[-122.031336, 37.965808],
[-122.031326, 37.965747],
[-122.031304, 37.965629],
[-122.031285, 37.965546],
[-122.03128, 37.965518],
[-122.03127, 37.965474],
[-122.03125, 37.965388],
[-122.031209, 37.965223],
[-122.031178, 37.965118],
[-122.031139, 37.964994],
[-122.0311, 37.964873],
[-122.031052, 37.964731],
[-122.030978, 37.964522],
[-122.030912, 37.964355],
[-122.030833, 37.964146],
[-122.030788, 37.964035],
[-122.030745, 37.963927],
[-122.030729, 37.963886],
[-122.030703, 37.96382],
[-122.030657, 37.96371],
[-122.030575, 37.963524],
[-122.030531, 37.96341],
[-122.030474, 37.963254],
[-122.030417, 37.963108],
[-122.030371, 37.96299],
[-122.030313, 37.962844],
[-122.030234, 37.962649],
[-122.030175, 37.962502],
[-122.030122, 37.962367],
[-122.030044, 37.962167],
[-122.029973, 37.961995],
[-122.029899, 37.961811],
[-122.029821, 37.961613],
[-122.029687, 37.961274],
[-122.029537, 37.960899],
[-122.029496, 37.960799],
[-122.029292, 37.96029],
[-122.029097, 37.959802],
[-122.028931, 37.959381],
[-122.028776, 37.959001],
[-122.028643, 37.958666],
[-122.028194, 37.957541],
[-122.027773, 37.956486],
[-122.027168, 37.95498],
[-122.026893, 37.954328],
[-122.026552, 37.953546],
[-122.026283, 37.952933],
[-122.026082, 37.952465],
[-122.025991, 37.952245],
[-122.025824, 37.951824],
[-122.025655, 37.951438],
[-122.025597, 37.951264],
[-122.025457, 37.950904],
[-122.02532, 37.950553],
[-122.025247, 37.950361],
[-122.025161, 37.950118],
[-122.025134, 37.950042],
[-122.025078, 37.949857],
[-122.025008, 37.94961],
[-122.024986, 37.949495],
[-122.024956, 37.949362],
[-122.024921, 37.94917],
[-122.024889, 37.948918],
[-122.024875, 37.948681],
[-122.024868, 37.948419],
[-122.024876, 37.948247],
[-122.024882, 37.948137],
[-122.024891, 37.948034],
[-122.024915, 37.947829],
[-122.024956, 37.947611],
[-122.024996, 37.947429],
[-122.025018, 37.947326],
[-122.025064, 37.947173],
[-122.025117, 37.947005],
[-122.025205, 37.946765],
[-122.02538, 37.946375],
[-122.025441, 37.946257],
[-122.025523, 37.94611],
[-122.025604, 37.945977],
[-122.025727, 37.945789],
[-122.025847, 37.945617],
[-122.026003, 37.945413],
[-122.026147, 37.945243],
[-122.026314, 37.945063],
[-122.026501, 37.944873],
[-122.026633, 37.944749],
[-122.02667, 37.944717],
[-122.026777, 37.944622],
[-122.027002, 37.94444],
[-122.027186, 37.9443],
[-122.027358, 37.944178],
[-122.027635, 37.943997],
[-122.027835, 37.943876],
[-122.028005, 37.943777],
[-122.028411, 37.943553],
[-122.028725, 37.943386],
[-122.029026, 37.94323],
[-122.02917, 37.943155],
[-122.029623, 37.942923],
[-122.029932, 37.942764],
[-122.030779, 37.942327],
[-122.031436, 37.941989],
[-122.032056, 37.941668],
[-122.0329, 37.941234],
[-122.033731, 37.940806],
[-122.034252, 37.940538],
[-122.034962, 37.940173],
[-122.035604, 37.939842],
[-122.03631, 37.939478],
[-122.037001, 37.939123],
[-122.037792, 37.938716],
[-122.038461, 37.93837],
[-122.039014, 37.938086],
[-122.039425, 37.937874],
[-122.04021, 37.93747],
[-122.040958, 37.937085],
[-122.041682, 37.936713],
[-122.042314, 37.936386],
[-122.043008, 37.936028],
[-122.043736, 37.935653],
[-122.04448, 37.935271],
[-122.045119, 37.934941],
[-122.045894, 37.934541],
[-122.046614, 37.93417],
[-122.046874, 37.934035],
[-122.04711, 37.933915],
[-122.047342, 37.933796],
[-122.047998, 37.933456],
[-122.048771, 37.933055],
[-122.049464, 37.932703],
[-122.050202, 37.93232],
[-122.050837, 37.931991],
[-122.05118, 37.931818],
[-122.051502, 37.931646],
[-122.051814, 37.931467],
[-122.052129, 37.931285],
[-122.05244, 37.931096],
[-122.052729, 37.930911],
[-122.053008, 37.930724],
[-122.053296, 37.93052],
[-122.05357, 37.93032],
[-122.053868, 37.930092],
[-122.054121, 37.929895],
[-122.054361, 37.929705],
[-122.054593, 37.929521],
[-122.055089, 37.929129],
[-122.055619, 37.928707],
[-122.056244, 37.928208],
[-122.05647, 37.928033],
[-122.056722, 37.927837],
[-122.057279, 37.927393],
[-122.057696, 37.927061],
[-122.057855, 37.926933],
[-122.05804, 37.92678],
[-122.058216, 37.926635],
[-122.058403, 37.926469],
[-122.058554, 37.926333],
[-122.058817, 37.926078],
[-122.059009, 37.925877],
[-122.059179, 37.925686],
[-122.059314, 37.925523],
[-122.059395, 37.925421],
[-122.059477, 37.925312],
[-122.059556, 37.925203],
[-122.05962, 37.925112],
[-122.059743, 37.924921],
[-122.059868, 37.924717],
[-122.059981, 37.92451],
[-122.060046, 37.924384],
[-122.060111, 37.924247],
[-122.060178, 37.924106],
[-122.060236, 37.923973],
[-122.060295, 37.923831],
[-122.060358, 37.923674],
[-122.060454, 37.923416],
[-122.060536, 37.92319],
[-122.060644, 37.922884],
[-122.06078, 37.922499],
[-122.060897, 37.92216],
[-122.060987, 37.921901],
[-122.061017, 37.921815],
[-122.061041, 37.921745],
[-122.061071, 37.921666],
[-122.061195, 37.921303],
[-122.061333, 37.920914],
[-122.061504, 37.920448],
[-122.061695, 37.919982],
[-122.061817, 37.919706],
[-122.061928, 37.919469],
[-122.062064, 37.919196],
[-122.062192, 37.918943],
[-122.062299, 37.918736],
[-122.062327, 37.918687],
[-122.062471, 37.918407],
[-122.062555, 37.918243],
[-122.062633, 37.918086],
[-122.062708, 37.917938],
[-122.062784, 37.91778],
[-122.062855, 37.917628],
[-122.062926, 37.917467],
[-122.062988, 37.917323],
[-122.063052, 37.917164],
[-122.063109, 37.917009],
[-122.063168, 37.916848],
[-122.063221, 37.916687],
[-122.063271, 37.916535],
[-122.06335, 37.916259],
[-122.06344, 37.915883],
[-122.063484, 37.915677],
[-122.063517, 37.915499],
[-122.063579, 37.91509],
[-122.063642, 37.914584],
[-122.063711, 37.913988],
[-122.063759, 37.913583],
[-122.06382, 37.91308],
[-122.063873, 37.91274],
[-122.063904, 37.912556],
[-122.063959, 37.91229],
[-122.064019, 37.912056],
[-122.064078, 37.911834],
[-122.064133, 37.911658],
[-122.064186, 37.911493],
[-122.064231, 37.911363],
[-122.064281, 37.911226],
[-122.064362, 37.911021],
[-122.064456, 37.910802],
[-122.064548, 37.910601],
[-122.064633, 37.910421],
[-122.064704, 37.910279],
[-122.064781, 37.910128],
[-122.064867, 37.90997],
[-122.064951, 37.909823],
[-122.065061, 37.909621],
[-122.065168, 37.909435],
[-122.065297, 37.909212],
[-122.065406, 37.909031],
[-122.065497, 37.908876],
[-122.065705, 37.908513],
[-122.065934, 37.908128],
[-122.066039, 37.907949],
[-122.066252, 37.907593],
[-122.066313, 37.90749],
[-122.066378, 37.90738],
[-122.066518, 37.907146],
[-122.066837, 37.906625],
[-122.067124, 37.906142],
[-122.067453, 37.905586],
[-122.06768, 37.905209],
[-122.06785, 37.904925],
[-122.067963, 37.904732],
[-122.068106, 37.90449],
[-122.068172, 37.904377],
[-122.06837, 37.90404],
[-122.068521, 37.903785],
[-122.068696, 37.903488],
[-122.068846, 37.903233],
[-122.069023, 37.902935],
[-122.069233, 37.902581],
[-122.069374, 37.902342],
[-122.069546, 37.90206],
[-122.069745, 37.901742],
[-122.069955, 37.901435],
[-122.070226, 37.901058],
[-122.070387, 37.900856],
[-122.070531, 37.900686],
[-122.070698, 37.900507],
[-122.070853, 37.900347],
[-122.07097, 37.90023],
[-122.071092, 37.900117],
[-122.071225, 37.899993],
[-122.07137, 37.899868],
[-122.071467, 37.899781],
[-122.071596, 37.899679],
[-122.071826, 37.899498],
[-122.072064, 37.899326],
[-122.072297, 37.899169],
[-122.072422, 37.899091],
[-122.072551, 37.899008],
[-122.072811, 37.898856],
[-122.072935, 37.898786],
[-122.07307, 37.898712],
[-122.073338, 37.898578],
[-122.073473, 37.898513],
[-122.073625, 37.898447],
[-122.073896, 37.898319],
[-122.074181, 37.898201],
[-122.074426, 37.898107],
[-122.07464, 37.898032],
[-122.074892, 37.897949],
[-122.075117, 37.89788],
[-122.075421, 37.897795],
[-122.075666, 37.897735],
[-122.075937, 37.897674],
[-122.076224, 37.897615],
[-122.076442, 37.897576],
[-122.076568, 37.897555],
[-122.076814, 37.897519],
[-122.077104, 37.897482],
[-122.077399, 37.897452],
[-122.077705, 37.897429],
[-122.077981, 37.897416],
[-122.078272, 37.897409],
[-122.078572, 37.897406],
[-122.078865, 37.897412],
[-122.079159, 37.89743],
[-122.079336, 37.897433],
[-122.07943, 37.89744],
[-122.079926, 37.897488],
[-122.080699, 37.897578],
[-122.081421, 37.897673],
[-122.083043, 37.897865],
[-122.083481, 37.897906],
[-122.083709, 37.897931],
[-122.083917, 37.897949],
[-122.08412, 37.897966],
[-122.084325, 37.897983],
[-122.084931, 37.898011],
[-122.085042, 37.898017],
[-122.085254, 37.898012],
[-122.08556, 37.898012],
[-122.08585, 37.89801],
[-122.086564, 37.897997],
[-122.087033, 37.897984],
[-122.08768, 37.897964],
[-122.08832, 37.897946],
[-122.088961, 37.897927],
[-122.089679, 37.897907],
[-122.090239, 37.89789],
[-122.09084, 37.897871],
[-122.091431, 37.897855],
[-122.091908, 37.897842],
[-122.092559, 37.897824],
[-122.093164, 37.897805],
[-122.093314, 37.8978],
[-122.093488, 37.897795],
[-122.093626, 37.897791],
[-122.094135, 37.897777],
[-122.094551, 37.897764],
[-122.095063, 37.89775],
[-122.095476, 37.897737],
[-122.095941, 37.897724],
[-122.09632, 37.897713],
[-122.096785, 37.897698],
[-122.097061, 37.897686],
[-122.097323, 37.897674],
[-122.09755, 37.897661],
[-122.097964, 37.897631],
[-122.098179, 37.897614],
[-122.098377, 37.897595],
[-122.098681, 37.897566],
[-122.099021, 37.897527],
[-122.099365, 37.897483],
[-122.099709, 37.897435],
[-122.10006, 37.897382],
[-122.10031, 37.897343],
[-122.100744, 37.897273],
[-122.101295, 37.897183],
[-122.101782, 37.897103],
[-122.102573, 37.896973],
[-122.103007, 37.896902],
[-122.103468, 37.896827],
[-122.104145, 37.896717],
[-122.104747, 37.896618],
[-122.105289, 37.89653],
[-122.105754, 37.896454],
[-122.106463, 37.896337],
[-122.106742, 37.896291],
[-122.107287, 37.896201],
[-122.107736, 37.896128],
[-122.108122, 37.896064],
[-122.108822, 37.89595],
[-122.109287, 37.895875],
[-122.110045, 37.89575],
[-122.110363, 37.895698],
[-122.110735, 37.895635],
[-122.111323, 37.895541],
[-122.111839, 37.895457],
[-122.112545, 37.895345],
[-122.112906, 37.89529],
[-122.113536, 37.895201],
[-122.113836, 37.895153],
[-122.115183, 37.894937],
[-122.116589, 37.894701],
[-122.117119, 37.894617],
[-122.117675, 37.894523],
[-122.118452, 37.894397],
[-122.119625, 37.894206],
[-122.120367, 37.89409],
[-122.120872, 37.894005],
[-122.121193, 37.893954],
[-122.121403, 37.893915],
[-122.121903, 37.89383],
[-122.122213, 37.893769],
[-122.122628, 37.893677],
[-122.122909, 37.893606],
[-122.123403, 37.893484],
[-122.124118, 37.893311],
[-122.12495, 37.893104],
[-122.125285, 37.893019],
[-122.125808, 37.892903],
[-122.126042, 37.892839],
[-122.126427, 37.892744],
[-122.127333, 37.892528],
[-122.127831, 37.892398],
[-122.128357, 37.892274],
[-122.128562, 37.892222],
[-122.128766, 37.892165],
[-122.129335, 37.892021],
[-122.129545, 37.891966],
[-122.129806, 37.891897],
[-122.130207, 37.891793],
[-122.130382, 37.89175],
[-122.131627, 37.891443],
[-122.132914, 37.891131],
[-122.133472, 37.890998],
[-122.133882, 37.890906],
[-122.134253, 37.890829],
[-122.134444, 37.890794],
[-122.13467, 37.890756],
[-122.134915, 37.890719],
[-122.135158, 37.890689],
[-122.135349, 37.89067],
[-122.135582, 37.89065],
[-122.135962, 37.890629],
[-122.136245, 37.890623],
[-122.136644, 37.890627],
[-122.137026, 37.890646],
[-122.137212, 37.890659],
[-122.137401, 37.890675],
[-122.13773, 37.890712],
[-122.137928, 37.890737],
[-122.138236, 37.890783],
[-122.138664, 37.890853],
[-122.139894, 37.891076],
[-122.140433, 37.891173],
[-122.141124, 37.891287],
[-122.141428, 37.89133],
[-122.141695, 37.891364],
[-122.142026, 37.8914],
[-122.142256, 37.89142],
[-122.142363, 37.891428],
[-122.142603, 37.891441],
[-122.142884, 37.891453],
[-122.143173, 37.891458],
[-122.143432, 37.891456],
[-122.143614, 37.891455],
[-122.143783, 37.891449],
[-122.144097, 37.891434],
[-122.14452, 37.891406],
[-122.145264, 37.891339],
[-122.145699, 37.8913],
[-122.146021, 37.89127],
[-122.146321, 37.891245],
[-122.146627, 37.891222],
[-122.146881, 37.891205],
[-122.147078, 37.891194],
[-122.147274, 37.891186],
[-122.147564, 37.891178],
[-122.147984, 37.891177],
[-122.148174, 37.89118],
[-122.148425, 37.89119],
[-122.148708, 37.891205],
[-122.149008, 37.891228],
[-122.149326, 37.89126],
[-122.149509, 37.891281],
[-122.149724, 37.891307],
[-122.149939, 37.891335],
[-122.150395, 37.8914],
[-122.150773, 37.891456],
[-122.152034, 37.891647],
[-122.153092, 37.891808],
[-122.153961, 37.89194],
[-122.15428, 37.891987],
[-122.154442, 37.892011],
[-122.154684, 37.892048],
[-122.156106, 37.892264],
[-122.156886, 37.892382],
[-122.157639, 37.892495],
[-122.158295, 37.892597],
[-122.158883, 37.892685],
[-122.159525, 37.892771],
[-122.160152, 37.892842],
[-122.160362, 37.892863],
[-122.160584, 37.892883],
[-122.160983, 37.892914],
[-122.161209, 37.892928],
[-122.161427, 37.892941],
[-122.161788, 37.892956],
[-122.16202, 37.892966],
[-122.162237, 37.892971],
[-122.162843, 37.892977],
[-122.163443, 37.892969],
[-122.163803, 37.892959],
[-122.163997, 37.89295],
[-122.164168, 37.892941],
[-122.164748, 37.892906],
[-122.164954, 37.892889],
[-122.165192, 37.892869],
[-122.165395, 37.892848],
[-122.165963, 37.892787],
[-122.166357, 37.892737],
[-122.16679, 37.892673],
[-122.167103, 37.892625],
[-122.167703, 37.892517],
[-122.168181, 37.892423],
[-122.168619, 37.892326],
[-122.169012, 37.892231],
[-122.169292, 37.892162],
[-122.169577, 37.892085],
[-122.170122, 37.891931],
[-122.170348, 37.891863],
[-122.170679, 37.89176],
[-122.170928, 37.891676],
[-122.171169, 37.891598],
[-122.171346, 37.891532],
[-122.171523, 37.891469],
[-122.17171, 37.8914],
[-122.17207, 37.891259],
[-122.17235, 37.891142],
[-122.172659, 37.891005],
[-122.172857, 37.890914],
[-122.172967, 37.890863],
[-122.173243, 37.890727],
[-122.173438, 37.890625],
[-122.173613, 37.890532],
[-122.173756, 37.890453],
[-122.173961, 37.890337],
[-122.174309, 37.890128],
[-122.17455, 37.889975],
[-122.174793, 37.889815],
[-122.175003, 37.889669],
[-122.17512, 37.889586],
[-122.175233, 37.889504],
[-122.175375, 37.889397],
[-122.175491, 37.889308],
[-122.175728, 37.889122],
[-122.175947, 37.888936],
[-122.176169, 37.88874],
[-122.176403, 37.888529],
[-122.176594, 37.888345],
[-122.176726, 37.888213],
[-122.177005, 37.88792],
[-122.177185, 37.887721],
[-122.177404, 37.887464],
[-122.17751, 37.887334],
[-122.177607, 37.887212],
[-122.177831, 37.886916],
[-122.177958, 37.886737],
[-122.178057, 37.886592],
[-122.178133, 37.886478],
[-122.178166, 37.886428],
[-122.178221, 37.886328],
[-122.178249, 37.886286],
[-122.178282, 37.886231],
[-122.178491, 37.885903],
[-122.178658, 37.885629],
[-122.178805, 37.885391],
[-122.178936, 37.885179],
[-122.179086, 37.884933],
[-122.179286, 37.884618],
[-122.179609, 37.884089],
[-122.179896, 37.88362],
[-122.180111, 37.883276],
[-122.180331, 37.882937],
[-122.18064, 37.882486],
[-122.180931, 37.882091],
[-122.18106, 37.881908],
[-122.181226, 37.881703],
[-122.181584, 37.881226],
[-122.181925, 37.880777],
[-122.182287, 37.880304],
[-122.18262, 37.879865],
[-122.183026, 37.879327],
[-122.18341, 37.878845],
[-122.183629, 37.878562],
[-122.183821, 37.878329],
[-122.184077, 37.878018],
[-122.184302, 37.877691],
[-122.184466, 37.877463],
[-122.184618, 37.877259],
[-122.184736, 37.877106],
[-122.184881, 37.876927],
[-122.185022, 37.876763],
[-122.185167, 37.876611],
[-122.185308, 37.876457],
[-122.18547, 37.876306],
[-122.185633, 37.876164],
[-122.185768, 37.87604],
[-122.185975, 37.875879],
[-122.186184, 37.875725],
[-122.186388, 37.875574],
[-122.186626, 37.875423],
[-122.187309, 37.874958],
[-122.187429, 37.874876],
[-122.187586, 37.874776],
[-122.187872, 37.874583],
[-122.18847, 37.874243],
[-122.189997, 37.873426],
[-122.193628, 37.871592],
[-122.194625, 37.871135],
[-122.196606, 37.870307],
[-122.200967, 37.868313],
[-122.202143, 37.867772],
[-122.202946, 37.867403],
[-122.203586, 37.867107],
[-122.204374, 37.866714],
[-122.205596, 37.866208],
[-122.206474, 37.865838],
[-122.207471, 37.86537],
[-122.208153, 37.86506],
[-122.208629, 37.864843],
[-122.209415, 37.864488],
[-122.209843, 37.864253],
[-122.21151, 37.863523],
[-122.213367, 37.862676],
[-122.214723, 37.861989],
[-122.216104, 37.861378],
[-122.217319, 37.860864],
[-122.217962, 37.860569],
[-122.218938, 37.860135],
[-122.219915, 37.859701],
[-122.221355, 37.859134],
[-122.238479, 37.85134],
[-122.239586, 37.850655],
[-122.240056, 37.850393],
[-122.24046, 37.850169],
[-122.240901, 37.849925],
[-122.241351, 37.849656],
[-122.241571, 37.849537],
[-122.241747, 37.849444],
[-122.241906, 37.849356],
[-122.242039, 37.84928],
[-122.242168, 37.849198],
[-122.24231, 37.849119],
[-122.242393, 37.849075],
[-122.24309, 37.848686],
[-122.244161, 37.848091],
[-122.244611, 37.847838],
[-122.245911, 37.847108],
[-122.246404, 37.846842],
[-122.24683, 37.846623],
[-122.247307, 37.846394],
[-122.247714, 37.846214],
[-122.248267, 37.845983],
[-122.248551, 37.845869],
[-122.250023, 37.845295],
[-122.251032, 37.844906],
[-122.25165, 37.844656],
[-122.251927, 37.84455],
[-122.252371, 37.84438],
[-122.252694, 37.844257],
[-122.253644, 37.843886],
[-122.254002, 37.843748],
[-122.254171, 37.843683],
[-122.254359, 37.843613],
[-122.254953, 37.843397],
[-122.255366, 37.843258],
[-122.25581, 37.843113],
[-122.256061, 37.843031],
[-122.256377, 37.842936],
[-122.256568, 37.842878],
[-122.256817, 37.842799],
[-122.257179, 37.842685],
[-122.257785, 37.842494],
[-122.258124, 37.842388],
[-122.258415, 37.8423],
[-122.261228, 37.841409],
[-122.261533, 37.841308],
[-122.26165, 37.841266],
[-122.261805, 37.841212],
[-122.262011, 37.841133],
[-122.262221, 37.841049],
[-122.262335, 37.841001],
[-122.262437, 37.840953],
[-122.262577, 37.84089],
[-122.262721, 37.840818],
[-122.262872, 37.840737],
[-122.263007, 37.840665],
[-122.263158, 37.840567],
[-122.263312, 37.840471],
[-122.263383, 37.840424],
[-122.263466, 37.840369],
[-122.26358, 37.840286],
[-122.263696, 37.8402],
[-122.263846, 37.840079],
[-122.263985, 37.839962],
[-122.264121, 37.83984],
[-122.264219, 37.839736],
[-122.264333, 37.839628],
[-122.264435, 37.839517],
[-122.264553, 37.839378],
[-122.264616, 37.839303],
[-122.2647, 37.839194],
[-122.264797, 37.839055],
[-122.264888, 37.838934],
[-122.264962, 37.838812],
[-122.265035, 37.838697],
[-122.265115, 37.838542],
[-122.265151, 37.838467],
[-122.265228, 37.83831],
[-122.265286, 37.838169],
[-122.265343, 37.838018],
[-122.265376, 37.837926],
[-122.265434, 37.837748],
[-122.265506, 37.837498],
[-122.265559, 37.837282],
[-122.265609, 37.837041],
[-122.265703, 37.836541],
[-122.265822, 37.835868],
[-122.265861, 37.835581],
[-122.265932, 37.835121],
[-122.265967, 37.834891],
[-122.26608, 37.834117],
[-122.266182, 37.833521],
[-122.266209, 37.833347],
[-122.266223, 37.833272]
],
[
[-122.266223, 37.833272],
[-122.266242, 37.833187],
[-122.266289, 37.832956],
[-122.266551, 37.831691],
[-122.266637, 37.831245],
[-122.26672, 37.830865],
[-122.266969, 37.829645],
[-122.266993, 37.829541],
[-122.26701, 37.829461],
[-122.2674, 37.827569],
[-122.267504, 37.827066],
[-122.267547, 37.826888],
[-122.267602, 37.826666],
[-122.26769, 37.826358],
[-122.267849, 37.825838],
[-122.268149, 37.824951],
[-122.268228, 37.824702],
[-122.268284, 37.824541],
[-122.268331, 37.824388],
[-122.26836, 37.824292],
[-122.268384, 37.824222],
[-122.26841, 37.824145],
[-122.26843, 37.824084],
[-122.268459, 37.823999],
[-122.268482, 37.823931],
[-122.2685, 37.823877],
[-122.268547, 37.823729],
[-122.26858, 37.823624],
[-122.268612, 37.82349],
[-122.268674, 37.823233],
[-122.268719, 37.823044],
[-122.268774, 37.822819],
[-122.268855, 37.822479],
[-122.268918, 37.822252],
[-122.269016, 37.821886],
[-122.269583, 37.819828],
[-122.269692, 37.819431],
[-122.269854, 37.818831],
[-122.27016, 37.817787],
[-122.270474, 37.816811],
[-122.270625, 37.816364],
[-122.270726, 37.816043],
[-122.270784, 37.815843],
[-122.270811, 37.815732],
[-122.270865, 37.815487],
[-122.270876, 37.815432],
[-122.270896, 37.815301],
[-122.27093, 37.81504],
[-122.270936, 37.814932],
[-122.270938, 37.814854],
[-122.270938, 37.814854],
[-122.270858, 37.814403],
[-122.270767, 37.814035],
[-122.270547, 37.813539],
[-122.270027, 37.812683],
[-122.268951, 37.811691],
[-122.267838, 37.810589],
[-122.267688, 37.810365],
[-122.267591, 37.810093],
[-122.268034, 37.809454],
[-122.268034, 37.809454],
[-122.268106, 37.809342],
[-122.268211, 37.809176],
[-122.268251, 37.809113],
[-122.26828, 37.809066],
[-122.268426, 37.808835],
[-122.269092, 37.80776],
[-122.269489, 37.807113],
[-122.269779, 37.80664],
[-122.270603, 37.805288],
[-122.271205, 37.8043],
[-122.271335, 37.804087],
[-122.271633, 37.803634],
[-122.27206, 37.802936],
[-122.272386, 37.802362]
],
[
[-122.276856, 37.798527],
[-122.276827, 37.798521],
[-122.276602, 37.798505],
[-122.276496, 37.798504],
[-122.276426, 37.798505],
[-122.27637, 37.798508],
[-122.276299, 37.798511],
[-122.276219, 37.798509],
[-122.276139, 37.798509],
[-122.27606, 37.798511],
[-122.27598, 37.798516],
[-122.2759, 37.798523],
[-122.275821, 37.798533],
[-122.275742, 37.798546],
[-122.275664, 37.798561],
[-122.275586, 37.798578],
[-122.275509, 37.798598],
[-122.275432, 37.79862],
[-122.275356, 37.798644],
[-122.275281, 37.798671],
[-122.275207, 37.798701],
[-122.275133, 37.798732],
[-122.275061, 37.798766],
[-122.27499, 37.798803],
[-122.27492, 37.798841],
[-122.274851, 37.798882],
[-122.274783, 37.798924],
[-122.274717, 37.798969],
[-122.274653, 37.799016],
[-122.27459, 37.799065],
[-122.274528, 37.799116],
[-122.274468, 37.799169],
[-122.27441, 37.799223],
[-122.274354, 37.79928],
[-122.274299, 37.799338],
[-122.274246, 37.799398],
[-122.274239, 37.799405],
[-122.274232, 37.799413],
[-122.274225, 37.799421],
[-122.274218, 37.799429],
[-122.274211, 37.799437],
[-122.274204, 37.799445],
[-122.274198, 37.799452],
[-122.274191, 37.79946],
[-122.274184, 37.799468],
[-122.274177, 37.799476],
[-122.274171, 37.799484],
[-122.274164, 37.799492],
[-122.274157, 37.7995],
[-122.274151, 37.799508],
[-122.274144, 37.799516],
[-122.274138, 37.799524],
[-122.274131, 37.799532],
[-122.274125, 37.799541],
[-122.274118, 37.799549],
[-122.274112, 37.799557],
[-122.274105, 37.799565],
[-122.274099, 37.799573],
[-122.274093, 37.799582],
[-122.274086, 37.79959],
[-122.27408, 37.799598],
[-122.274074, 37.799606],
[-122.274068, 37.799615],
[-122.274062, 37.799623],
[-122.274055, 37.799632],
[-122.273734, 37.800156],
[-122.273306, 37.800852],
[-122.27275, 37.80177],
[-122.27246, 37.802239],
[-122.272386, 37.802362]
],
[
[-122.469106, 37.706105],
[-122.468903, 37.706333],
[-122.468809, 37.706437],
[-122.468678, 37.706588],
[-122.468434, 37.706903],
[-122.468029, 37.707393],
[-122.467923, 37.707522],
[-122.467832, 37.707627],
[-122.466801, 37.708779],
[-122.466732, 37.708861],
[-122.46667, 37.708939],
[-122.4666, 37.709019],
[-122.466526, 37.709095],
[-122.466449, 37.709166],
[-122.466376, 37.709237],
[-122.466284, 37.709309],
[-122.466215, 37.709364],
[-122.466126, 37.709428],
[-122.466028, 37.709493],
[-122.465941, 37.709544],
[-122.465846, 37.709608],
[-122.465752, 37.709656],
[-122.465664, 37.709709],
[-122.465569, 37.709755],
[-122.465466, 37.709801],
[-122.465351, 37.709849],
[-122.465245, 37.70989],
[-122.465148, 37.709922],
[-122.465035, 37.709958],
[-122.464925, 37.709987],
[-122.46481, 37.710013],
[-122.464685, 37.710036],
[-122.464576, 37.71006],
[-122.464464, 37.710078],
[-122.464349, 37.710097],
[-122.464248, 37.710106],
[-122.464125, 37.710117],
[-122.464, 37.710122],
[-122.463871, 37.710128],
[-122.463753, 37.710132],
[-122.463654, 37.710127],
[-122.462673, 37.710117],
[-122.461932, 37.710109],
[-122.461456, 37.710106],
[-122.461205, 37.710107],
[-122.460612, 37.710103],
[-122.460513, 37.710103],
[-122.460089, 37.7101],
[-122.459798, 37.710097],
[-122.459371, 37.710095],
[-122.458818, 37.710096],
[-122.458429, 37.710097],
[-122.458239, 37.710103],
[-122.458046, 37.710114],
[-122.457854, 37.710123],
[-122.457689, 37.710132],
[-122.457494, 37.710148],
[-122.457301, 37.710168],
[-122.45712, 37.710193],
[-122.456943, 37.71022],
[-122.456714, 37.710261],
[-122.45647, 37.710314],
[-122.456253, 37.710367],
[-122.456029, 37.710421],
[-122.455812, 37.710483],
[-122.455588, 37.710559],
[-122.455342, 37.710654],
[-122.455158, 37.710734],
[-122.454985, 37.71082],
[-122.454815, 37.710906],
[-122.454757, 37.710939],
[-122.454638, 37.711002],
[-122.454466, 37.711098],
[-122.454306, 37.711201],
[-122.454132, 37.711315],
[-122.453978, 37.711421],
[-122.453808, 37.711542],
[-122.453514, 37.711768],
[-122.453207, 37.712002],
[-122.452952, 37.712213],
[-122.452635, 37.712477],
[-122.45215, 37.712868],
[-122.451705, 37.713224],
[-122.451441, 37.713439],
[-122.451107, 37.713707],
[-122.450884, 37.713896],
[-122.450715, 37.714043],
[-122.450556, 37.714184],
[-122.450426, 37.714317],
[-122.450264, 37.714469],
[-122.450109, 37.714616],
[-122.449961, 37.714764],
[-122.449842, 37.714875],
[-122.449687, 37.715039],
[-122.449586, 37.715155],
[-122.449493, 37.715256],
[-122.449409, 37.715351],
[-122.449317, 37.71545],
[-122.449226, 37.715551],
[-122.449141, 37.715654],
[-122.449058, 37.71576],
[-122.448989, 37.715852],
[-122.448913, 37.715962],
[-122.448844, 37.716072],
[-122.448783, 37.716173],
[-122.448722, 37.716283],
[-122.448661, 37.716398],
[-122.448609, 37.716502],
[-122.448567, 37.716602],
[-122.448514, 37.716725],
[-122.448431, 37.716914],
[-122.448349, 37.717127],
[-122.448303, 37.717282],
[-122.448233, 37.71749],
[-122.448165, 37.717655],
[-122.448122, 37.717956],
[-122.448092, 37.718172],
[-122.448092, 37.718314],
[-122.448061, 37.718552],
[-122.448055, 37.718621],
[-122.448051, 37.718656],
[-122.448034, 37.718801],
[-122.448005, 37.719277],
[-122.447846, 37.720179],
[-122.447631, 37.721123],
[-122.447624, 37.721147],
[-122.447593, 37.721264],
[-122.447372, 37.722221],
[-122.447196, 37.723],
[-122.446967, 37.723855],
[-122.446671, 37.724539],
[-122.446363, 37.725104],
[-122.446308, 37.725188],
[-122.446245, 37.72529],
[-122.446186, 37.725395],
[-122.44613, 37.725479],
[-122.446059, 37.725571],
[-122.445995, 37.725663],
[-122.44593, 37.725755],
[-122.445865, 37.725839],
[-122.445526, 37.726234],
[-122.445164, 37.726612],
[-122.445034, 37.726729],
[-122.444943, 37.726806],
[-122.444845, 37.726909],
[-122.444723, 37.727013],
[-122.44461, 37.727109],
[-122.444507, 37.727194],
[-122.444392, 37.727285],
[-122.444267, 37.727381],
[-122.443613, 37.727828],
[-122.443394, 37.727959],
[-122.44319, 37.728081],
[-122.442962, 37.728209],
[-122.442869, 37.728256],
[-122.442575, 37.728409],
[-122.442264, 37.72856],
[-122.441807, 37.728764],
[-122.441408, 37.728925],
[-122.440789, 37.729147],
[-122.43985, 37.729516],
[-122.439205, 37.72978],
[-122.43892, 37.72988],
[-122.438031, 37.730328],
[-122.437495, 37.730633],
[-122.437173, 37.730829],
[-122.436901, 37.731003],
[-122.43666, 37.731183],
[-122.436385, 37.731366],
[-122.436179, 37.731508],
[-122.43605, 37.731595],
[-122.435966, 37.731656],
[-122.435706, 37.731839],
[-122.435447, 37.732004],
[-122.435241, 37.732136],
[-122.435117, 37.732222],
[-122.435026, 37.732295],
[-122.434642, 37.732542],
[-122.434329, 37.732752],
[-122.433801, 37.733121],
[-122.433405, 37.733368],
[-122.432847, 37.733721],
[-122.432582, 37.733918],
[-122.431811, 37.734415],
[-122.431274, 37.734758],
[-122.430172, 37.735479],
[-122.428873, 37.736323],
[-122.427615, 37.737145],
[-122.426334, 37.737984],
[-122.425826, 37.738339],
[-122.425538, 37.738547],
[-122.425326, 37.738713],
[-122.424999, 37.73895],
[-122.424828, 37.739072],
[-122.424649, 37.739215],
[-122.424537, 37.739296],
[-122.424351, 37.739428],
[-122.42411, 37.739622],
[-122.424011, 37.739738],
[-122.423827, 37.739869],
[-122.423179, 37.740563],
[-122.422476, 37.741588],
[-122.422061, 37.742264],
[-122.420958, 37.743961],
[-122.419834, 37.745675],
[-122.419392, 37.746361],
[-122.418916, 37.747089],
[-122.418687, 37.747518],
[-122.41859, 37.747722],
[-122.418544, 37.747813],
[-122.41849, 37.747912],
[-122.418397, 37.748166],
[-122.41836, 37.748248],
[-122.418323, 37.748339],
[-122.41829, 37.748442],
[-122.418259, 37.748552],
[-122.418218, 37.748731],
[-122.418186, 37.748868],
[-122.41816, 37.749093],
[-122.418301, 37.75055],
[-122.41844, 37.752086],
[-122.418615, 37.753786],
[-122.418742, 37.755411],
[-122.4189, 37.756821],
[-122.418962, 37.757461],
[-122.419053, 37.758554],
[-122.419231, 37.76021],
[-122.419372, 37.761849],
[-122.419543, 37.763429],
[-122.41967, 37.764723],
[-122.419692, 37.765024],
[-122.419854, 37.766637],
[-122.419892, 37.767184],
[-122.419996, 37.768204],
[-122.420043, 37.768923],
[-122.420062, 37.769113],
[-122.420119, 37.769442],
[-122.420128, 37.769528],
[-122.42014, 37.769621],
[-122.420147, 37.76977],
[-122.420152, 37.769886],
[-122.420176, 37.770065],
[-122.420215, 37.770362],
[-122.420327, 37.771558],
[-122.420316, 37.771965],
[-122.420322, 37.772277],
[-122.420317, 37.772531],
[-122.420281, 37.772812],
[-122.420153, 37.773345],
[-122.420104, 37.773593],
[-122.420038, 37.773762],
[-122.419906, 37.774022],
[-122.419471, 37.774777],
[-122.419429, 37.774913],
[-122.419406, 37.774983],
[-122.419377, 37.775045],
[-122.419321, 37.775113],
[-122.419239, 37.775191],
[-122.418701, 37.775596],
[-122.417492, 37.776574],
[-122.41652, 37.777348],
[-122.416228, 37.77756],
[-122.414798, 37.7787],
[-122.412528, 37.780489],
[-122.41145, 37.781351],
[-122.410319, 37.782234],
[-122.408084, 37.784002],
[-122.405876, 37.785769],
[-122.404718, 37.786653],
[-122.404003, 37.787215],
[-122.403499, 37.787631],
[-122.402875, 37.788109],
[-122.402102, 37.788723],
[-122.401386, 37.789267],
[-122.399138, 37.791042],
[-122.398258, 37.791728],
[-122.397415, 37.792407],
[-122.396506, 37.793169],
[-122.395321, 37.794057],
[-122.394828, 37.794362],
[-122.394659, 37.794469],
[-122.394508, 37.79455],
[-122.394366, 37.794631],
[-122.394072, 37.794782],
[-122.393814, 37.794904],
[-122.393498, 37.79506],
[-122.393151, 37.795219],
[-122.392537, 37.795517],
[-122.391751, 37.795841],
[-122.391448, 37.795976],
[-122.391302, 37.796041],
[-122.390733, 37.796294],
[-122.38985, 37.796687],
[-122.389027, 37.797053],
[-122.388439, 37.797315],
[-122.387975, 37.797522],
[-122.387476, 37.797743],
[-122.386946, 37.797979],
[-122.386305, 37.798265],
[-122.385701, 37.798534],
[-122.385193, 37.79876],
[-122.384824, 37.798924],
[-122.38453, 37.799055],
[-122.384152, 37.799223],
[-122.383849, 37.799358],
[-122.383682, 37.799432],
[-122.383442, 37.799539],
[-122.383164, 37.799663],
[-122.382839, 37.799808],
[-122.382558, 37.799933],
[-122.382295, 37.80005],
[-122.381886, 37.800232],
[-122.381553, 37.80038],
[-122.381386, 37.800454],
[-122.381017, 37.800618],
[-122.380655, 37.800779],
[-122.380293, 37.800941],
[-122.379997, 37.801072],
[-122.379566, 37.801264],
[-122.379333, 37.801367],
[-122.379061, 37.801484],
[-122.378788, 37.801599],
[-122.378485, 37.801723],
[-122.378206, 37.801835],
[-122.377961, 37.801929],
[-122.377783, 37.801997],
[-122.377556, 37.802081],
[-122.377278, 37.802182],
[-122.377102, 37.802244],
[-122.376862, 37.802327],
[-122.376663, 37.802394],
[-122.37642, 37.802474],
[-122.376049, 37.802592],
[-122.375907, 37.802636],
[-122.375677, 37.802705],
[-122.375582, 37.802734],
[-122.374975, 37.802906],
[-122.374499, 37.803034],
[-122.374181, 37.803113],
[-122.373835, 37.803197],
[-122.373325, 37.803313],
[-122.37284, 37.803416],
[-122.372496, 37.803485],
[-122.37218, 37.803544],
[-122.372018, 37.803573],
[-122.371873, 37.803599],
[-122.371594, 37.803647],
[-122.37109, 37.803733],
[-122.370628, 37.803811],
[-122.370395, 37.80385],
[-122.370216, 37.803881],
[-122.370018, 37.803914],
[-122.369691, 37.803969],
[-122.369393, 37.80402],
[-122.369234, 37.804047],
[-122.368983, 37.804089],
[-122.36873, 37.804132],
[-122.368345, 37.804197],
[-122.367904, 37.804272],
[-122.367638, 37.804317],
[-122.367375, 37.804361],
[-122.367188, 37.804393],
[-122.366998, 37.804425],
[-122.366678, 37.804479],
[-122.366367, 37.804532],
[-122.366027, 37.804589],
[-122.365735, 37.804639],
[-122.365328, 37.804708],
[-122.365107, 37.804745],
[-122.364819, 37.804794],
[-122.364621, 37.804827],
[-122.364322, 37.804878],
[-122.364022, 37.804929],
[-122.363705, 37.804982],
[-122.363326, 37.805046],
[-122.363004, 37.805101],
[-122.362666, 37.805158],
[-122.362384, 37.805206],
[-122.362149, 37.805246],
[-122.361906, 37.805287],
[-122.361806, 37.805303],
[-122.361615, 37.805336],
[-122.361334, 37.805383],
[-122.361157, 37.805413],
[-122.360916, 37.805454],
[-122.360766, 37.805479],
[-122.360571, 37.805512],
[-122.360333, 37.805553],
[-122.360139, 37.805586],
[-122.359966, 37.805615],
[-122.359805, 37.805642],
[-122.359603, 37.805676],
[-122.359438, 37.805704],
[-122.359239, 37.805738],
[-122.359127, 37.805757],
[-122.358849, 37.805804],
[-122.358639, 37.805839],
[-122.358458, 37.80587],
[-122.35819, 37.805915],
[-122.358054, 37.805938],
[-122.357891, 37.805966],
[-122.357755, 37.805989],
[-122.357578, 37.806019],
[-122.357468, 37.806037],
[-122.357171, 37.806087],
[-122.356963, 37.806122],
[-122.356845, 37.806143],
[-122.35676, 37.806157],
[-122.356589, 37.806186],
[-122.356403, 37.806217],
[-122.356282, 37.806238],
[-122.356198, 37.806252],
[-122.356066, 37.806274],
[-122.355882, 37.806305],
[-122.355686, 37.806339],
[-122.355403, 37.806386],
[-122.355272, 37.806408],
[-122.355008, 37.806453],
[-122.354917, 37.806468],
[-122.35485, 37.80648],
[-122.35476, 37.806495],
[-122.354695, 37.806506],
[-122.354525, 37.806535],
[-122.354409, 37.806554],
[-122.354325, 37.806569],
[-122.354227, 37.806585],
[-122.354086, 37.806609],
[-122.354017, 37.806621],
[-122.353947, 37.806633],
[-122.353904, 37.80664],
[-122.353765, 37.806663],
[-122.353575, 37.806695],
[-122.353343, 37.806735],
[-122.353173, 37.806763],
[-122.35303, 37.806788],
[-122.352832, 37.806821],
[-122.352675, 37.806848],
[-122.352471, 37.806882],
[-122.35208, 37.806948],
[-122.351678, 37.807016],
[-122.351343, 37.807073],
[-122.351125, 37.80711],
[-122.350989, 37.807133],
[-122.350903, 37.807147],
[-122.350826, 37.80716],
[-122.350549, 37.807207],
[-122.350215, 37.807264],
[-122.349855, 37.807325],
[-122.349491, 37.807386],
[-122.349227, 37.807431],
[-122.348673, 37.807524],
[-122.34762, 37.807702],
[-122.346954, 37.807817],
[-122.346269, 37.807931],
[-122.345982, 37.807981],
[-122.345735, 37.808021],
[-122.34529, 37.808096],
[-122.344754, 37.808186],
[-122.342008, 37.808651],
[-122.341598, 37.80872],
[-122.341341, 37.808763],
[-122.340242, 37.808948],
[-122.339687, 37.809041],
[-122.339143, 37.809133],
[-122.338773, 37.809194],
[-122.338187, 37.809285],
[-122.337648, 37.809363],
[-122.337162, 37.809429],
[-122.336553, 37.809505],
[-122.336131, 37.809552],
[-122.3358, 37.809588],
[-122.335224, 37.809645],
[-122.334668, 37.809694],
[-122.334142, 37.809735],
[-122.333583, 37.809772],
[-122.33315, 37.809797],
[-122.332755, 37.809816],
[-122.332116, 37.809842],
[-122.33108, 37.809866],
[-122.330735, 37.80987],
[-122.330014, 37.80987],
[-122.329757, 37.809867],
[-122.329449, 37.809862],
[-122.32917, 37.809857],
[-122.328638, 37.809842],
[-122.328189, 37.809825],
[-122.328029, 37.809818],
[-122.327321, 37.809778],
[-122.326497, 37.809718],
[-122.326137, 37.809687],
[-122.325817, 37.809649],
[-122.323554, 37.809392],
[-122.322814, 37.809368],
[-122.322059, 37.809327],
[-122.320701, 37.80925],
[-122.320136, 37.80922],
[-122.31951, 37.809162],
[-122.318885, 37.809106],
[-122.316062, 37.808815],
[-122.315696, 37.808781],
[-122.315482, 37.808758],
[-122.315185, 37.808731],
[-122.314429, 37.808664],
[-122.312583, 37.808473],
[-122.312057, 37.808422],
[-122.308982, 37.808129],
[-122.308486, 37.808084],
[-122.308295, 37.808064],
[-122.306411, 37.807806],
[-122.305541, 37.807685],
[-122.305182, 37.807598],
[-122.30506, 37.807577],
[-122.304526, 37.807461],
[-122.30445, 37.807442],
[-122.304175, 37.807385],
[-122.303977, 37.807343],
[-122.303794, 37.807301],
[-122.302436, 37.806996],
[-122.302398, 37.806989],
[-122.298135, 37.806031],
[-122.297836, 37.805959],
[-122.297584, 37.805879],
[-122.297324, 37.805794],
[-122.297073, 37.805706],
[-122.296836, 37.805615],
[-122.296599, 37.805523],
[-122.296356, 37.805421],
[-122.296134, 37.805318],
[-122.296096, 37.805302],
[-122.295089, 37.804897],
[-122.293883, 37.80441],
[-122.29341, 37.804204],
[-122.292579, 37.803875],
[-122.292563, 37.803872],
[-122.29206, 37.803669],
[-122.291923, 37.803616],
[-122.291747, 37.803548],
[-122.291663, 37.803513],
[-122.291564, 37.803468],
[-122.291335, 37.803381],
[-122.29132, 37.803376],
[-122.291312, 37.803371],
[-122.291297, 37.803365],
[-122.291137, 37.803291],
[-122.290946, 37.803223],
[-122.284796, 37.801721],
[-122.284606, 37.801668],
[-122.284431, 37.801611],
[-122.284095, 37.801496],
[-122.283744, 37.801381],
[-122.283645, 37.801347],
[-122.283523, 37.801296],
[-122.283386, 37.801237],
[-122.283157, 37.801141],
[-122.282943, 37.801045],
[-122.282546, 37.800853],
[-122.282294, 37.800744],
[-122.282272, 37.800732],
[-122.28218, 37.800693],
[-122.281188, 37.800214],
[-122.280051, 37.799664],
[-122.280044, 37.79966],
[-122.279952, 37.799607],
[-122.279907, 37.799584],
[-122.279716, 37.799493],
[-122.279471, 37.799368],
[-122.279183, 37.799217],
[-122.278686, 37.798956],
[-122.278478, 37.798859],
[-122.278369, 37.798811],
[-122.278197, 37.798746],
[-122.278051, 37.798694],
[-122.277819, 37.798637],
[-122.277697, 37.798614],
[-122.277507, 37.798583],
[-122.277358, 37.798568],
[-122.276984, 37.798532],
[-122.276923, 37.798528],
[-122.276856, 37.798527]
],
[
[-122.466727, 37.684953],
[-122.467276, 37.685356],
[-122.467791, 37.685769],
[-122.468086, 37.686119],
[-122.468184, 37.686287],
[-122.468285, 37.686457],
[-122.468473, 37.68675],
[-122.468667, 37.687103],
[-122.468809, 37.687399],
[-122.468959, 37.687724],
[-122.469114, 37.688025],
[-122.469228, 37.688263],
[-122.469306, 37.688412],
[-122.469413, 37.688604],
[-122.469451, 37.68868],
[-122.469482, 37.688755],
[-122.46955, 37.688926],
[-122.469611, 37.689098],
[-122.469665, 37.689285],
[-122.46971, 37.689477],
[-122.469749, 37.68968],
[-122.469779, 37.689901],
[-122.469795, 37.690102],
[-122.46981, 37.690338],
[-122.469808, 37.690623],
[-122.469825, 37.690832],
[-122.469818, 37.691068],
[-122.46982, 37.691295],
[-122.469832, 37.69178],
[-122.469833, 37.691812],
[-122.46984, 37.691968],
[-122.469855, 37.692544],
[-122.469851, 37.693124],
[-122.469835, 37.693391],
[-122.469838, 37.69367],
[-122.46984, 37.693948],
[-122.469848, 37.694165],
[-122.469856, 37.694261],
[-122.469871, 37.694482],
[-122.469894, 37.694687],
[-122.469944, 37.694924],
[-122.469987, 37.695075],
[-122.470029, 37.695191],
[-122.470073, 37.695321],
[-122.470334, 37.696002],
[-122.470462, 37.696332],
[-122.470493, 37.696415],
[-122.470511, 37.696473],
[-122.470563, 37.696611],
[-122.470682, 37.696913],
[-122.470741, 37.697087],
[-122.470871, 37.697466],
[-122.470884, 37.697511],
[-122.470916, 37.697629],
[-122.470942, 37.697747],
[-122.470957, 37.697838],
[-122.470971, 37.697921],
[-122.47098, 37.698007],
[-122.470996, 37.698132],
[-122.471008, 37.698336],
[-122.47101, 37.698393],
[-122.471006, 37.69852],
[-122.471002, 37.698636],
[-122.470998, 37.699043],
[-122.471013, 37.699549],
[-122.471023, 37.700169],
[-122.471041, 37.700673],
[-122.471052, 37.7012],
[-122.47106, 37.701706],
[-122.471064, 37.701856],
[-122.471063, 37.701909],
[-122.471067, 37.702173],
[-122.471074, 37.702402],
[-122.47108, 37.702639],
[-122.471085, 37.70278],
[-122.471081, 37.703002],
[-122.471075, 37.703124],
[-122.471063, 37.703206],
[-122.471046, 37.703305],
[-122.471016, 37.703421],
[-122.470989, 37.703498],
[-122.470959, 37.703591],
[-122.470914, 37.703706],
[-122.470846, 37.703849],
[-122.470808, 37.703916],
[-122.470779, 37.703972],
[-122.470713, 37.704079],
[-122.470583, 37.704263],
[-122.470461, 37.704413],
[-122.4703, 37.704608],
[-122.470082, 37.704878],
[-122.469934, 37.705059],
[-122.469864, 37.705149],
[-122.46976, 37.705276],
[-122.469524, 37.705566],
[-122.469423, 37.705687],
[-122.469351, 37.705767],
[-122.469106, 37.706105]
],
[
[-122.386655, 37.599782],
[-122.386721, 37.599826],
[-122.386987, 37.600082],
[-122.387483, 37.600584],
[-122.387696, 37.600796],
[-122.388117, 37.601234],
[-122.388787, 37.601899],
[-122.389715, 37.602821],
[-122.390234, 37.603307],
[-122.390656, 37.603728],
[-122.391122, 37.604193],
[-122.391435, 37.6045],
[-122.392204, 37.605233],
[-122.392459, 37.605484],
[-122.392981, 37.606019],
[-122.393405, 37.606423],
[-122.393745, 37.606752],
[-122.394104, 37.607121],
[-122.394396, 37.607411],
[-122.395019, 37.607982],
[-122.395445, 37.608416],
[-122.395726, 37.608689],
[-122.396003, 37.608957],
[-122.396505, 37.609462],
[-122.396853, 37.609811],
[-122.397283, 37.610218],
[-122.397707, 37.610639],
[-122.397815, 37.610748],
[-122.398332, 37.611257],
[-122.398737, 37.611677],
[-122.398866, 37.611829],
[-122.399232, 37.612239],
[-122.399469, 37.612547],
[-122.399673, 37.612791],
[-122.399816, 37.612964],
[-122.400005, 37.613219],
[-122.40019, 37.613484],
[-122.400655, 37.614099],
[-122.400809, 37.614317],
[-122.401288, 37.614932],
[-122.401645, 37.61541],
[-122.402026, 37.615909],
[-122.402329, 37.61632],
[-122.402734, 37.616842],
[-122.403059, 37.617274],
[-122.403159, 37.617412],
[-122.403482, 37.617826],
[-122.404185, 37.618738],
[-122.404687, 37.619429],
[-122.404838, 37.619635],
[-122.404945, 37.619781],
[-122.405191, 37.620098],
[-122.405634, 37.620702],
[-122.405913, 37.621072],
[-122.406123, 37.621365],
[-122.406399, 37.621748],
[-122.40655, 37.621948],
[-122.406647, 37.622075],
[-122.406818, 37.622328],
[-122.407048, 37.622664],
[-122.407201, 37.622907],
[-122.407346, 37.623149],
[-122.40764, 37.623538],
[-122.407808, 37.623749],
[-122.408078, 37.624106],
[-122.408262, 37.624418],
[-122.40848, 37.624752],
[-122.40868, 37.625073],
[-122.408929, 37.625483],
[-122.409273, 37.626104],
[-122.40947, 37.626419],
[-122.409804, 37.627],
[-122.410307, 37.627847],
[-122.410538, 37.628272],
[-122.411056, 37.629165],
[-122.41148, 37.62992],
[-122.411672, 37.630225],
[-122.411909, 37.630664],
[-122.412351, 37.631448],
[-122.412497, 37.631688],
[-122.41268, 37.631993],
[-122.412775, 37.632167],
[-122.412868, 37.632301],
[-122.413103, 37.632709],
[-122.41348, 37.633364],
[-122.41365, 37.633687],
[-122.413836, 37.633927],
[-122.414039, 37.634292],
[-122.414355, 37.634856],
[-122.414708, 37.635469],
[-122.415165, 37.636273],
[-122.41549, 37.636822],
[-122.415885, 37.637521],
[-122.416411, 37.638367],
[-122.416686, 37.638913],
[-122.416983, 37.639438],
[-122.417237, 37.639874],
[-122.417473, 37.64031],
[-122.417764, 37.640799],
[-122.418178, 37.641489],
[-122.418474, 37.641967],
[-122.418611, 37.642212],
[-122.419044, 37.642799],
[-122.419639, 37.643561],
[-122.420638, 37.644768],
[-122.421338, 37.645655],
[-122.421632, 37.645985],
[-122.421809, 37.646193],
[-122.422173, 37.646622],
[-122.42266, 37.64716],
[-122.422992, 37.647552],
[-122.423255, 37.647852],
[-122.424112, 37.648831],
[-122.424499, 37.649253],
[-122.424816, 37.649632],
[-122.425071, 37.649901],
[-122.425651, 37.650544],
[-122.426269, 37.651204],
[-122.426586, 37.651474],
[-122.42674, 37.651596],
[-122.427119, 37.651804],
[-122.427977, 37.652324],
[-122.42868, 37.652758],
[-122.42953, 37.653266],
[-122.430249, 37.653645],
[-122.431587, 37.654355],
[-122.43297, 37.655126],
[-122.433503, 37.655414],
[-122.434075, 37.655707],
[-122.434354, 37.65586],
[-122.435243, 37.656491],
[-122.436224, 37.657237],
[-122.436487, 37.657488],
[-122.436819, 37.657818],
[-122.43712, 37.658112],
[-122.437662, 37.658669],
[-122.438148, 37.659299],
[-122.438396, 37.659623],
[-122.438844, 37.660186],
[-122.439284, 37.660718],
[-122.440065, 37.661422],
[-122.440281, 37.661599],
[-122.440451, 37.661752],
[-122.440707, 37.661942],
[-122.441224, 37.662279],
[-122.441766, 37.662676],
[-122.442384, 37.663116],
[-122.442964, 37.663502],
[-122.443829, 37.66401],
[-122.444363, 37.664328],
[-122.444698, 37.66455],
[-122.44533, 37.664973],
[-122.446086, 37.665483],
[-122.446569, 37.66579],
[-122.446723, 37.665896],
[-122.447202, 37.666243],
[-122.447444, 37.666429],
[-122.447734, 37.666663],
[-122.448252, 37.667151],
[-122.448492, 37.667392],
[-122.448971, 37.667918],
[-122.449348, 37.668414],
[-122.449595, 37.668741],
[-122.450034, 37.669376],
[-122.450358, 37.669848],
[-122.450805, 37.670495],
[-122.451185, 37.67117],
[-122.45139, 37.6715],
[-122.451614, 37.671864],
[-122.45178, 37.672032],
[-122.452161, 37.672407],
[-122.452625, 37.67286],
[-122.453015, 37.673251],
[-122.453539, 37.673757],
[-122.453718, 37.673939],
[-122.454356, 37.674569],
[-122.454764, 37.674973],
[-122.455485, 37.675425],
[-122.456053, 37.675782],
[-122.456609, 37.676257],
[-122.456889, 37.676488],
[-122.457171, 37.676727],
[-122.457542, 37.677108],
[-122.457737, 37.677313],
[-122.457903, 37.677484],
[-122.458269, 37.67786],
[-122.458418, 37.678013],
[-122.458949, 37.678518],
[-122.459194, 37.678758],
[-122.459724, 37.679272],
[-122.460147, 37.679686],
[-122.460462, 37.679992],
[-122.460925, 37.680441],
[-122.461428, 37.680942],
[-122.462044, 37.681564],
[-122.462282, 37.681772],
[-122.462617, 37.682144],
[-122.463067, 37.682468],
[-122.463327, 37.68265],
[-122.463441, 37.682734],
[-122.463563, 37.682817],
[-122.463861, 37.683022],
[-122.464151, 37.683224],
[-122.465059, 37.683883],
[-122.465089, 37.683902],
[-122.465768, 37.684349],
[-122.466727, 37.684953]
],
[
[-122.392604, 37.616029],
[-122.39316, 37.615899],
[-122.394211, 37.615653],
[-122.394879, 37.615632],
[-122.395393, 37.615625],
[-122.395757, 37.615619],
[-122.396337, 37.615623],
[-122.396751, 37.615627],
[-122.397311, 37.615639],
[-122.397686, 37.615645],
[-122.398004, 37.61564],
[-122.398469, 37.615641],
[-122.398924, 37.61566],
[-122.399647, 37.615699],
[-122.40019, 37.615773],
[-122.400629, 37.615881],
[-122.400993, 37.616]
],
[
[-122.394208, 37.615656],
[-122.394307, 37.615647],
[-122.39487, 37.615607],
[-122.3957, 37.615596],
[-122.396902, 37.615596],
[-122.397654, 37.615572],
[-122.39827, 37.615514],
[-122.398487, 37.615453],
[-122.398597, 37.615423],
[-122.398814, 37.615336],
[-122.398959, 37.615264],
[-122.39913, 37.615157],
[-122.399239, 37.615086],
[-122.399404, 37.61495],
[-122.399567, 37.614761],
[-122.399671, 37.614614],
[-122.399722, 37.614507],
[-122.399838, 37.614246],
[-122.39987, 37.614087],
[-122.399876, 37.613952],
[-122.399879, 37.613814],
[-122.399851, 37.613635],
[-122.399811, 37.613464],
[-122.399774, 37.613352],
[-122.399698, 37.613176],
[-122.399612, 37.613027],
[-122.399534, 37.612906],
[-122.399232, 37.612239]
]
]
}
}
]
};
================================================
FILE: examples/demo-app/src/data/sample-trip-data.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
// Sample Taxi Trip Data
export const testCsvData = `gps_data.utc_timestamp,gps_data.lat,gps_data.lng,gps_data.types,epoch,has_result,id,time,begintrip_ts_utc,begintrip_ts_local,date, _tooltip,website
2016-09-17 00:09:55,29.9900937,31.2590542,driver_analytics,1472688000000,False,1,2016-09-23T00:00:00.000Z,2016-10-01 09:41:39+00:00,2016-10-01 09:41:39+00:00,2016-09-23,https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/icon-demo-map.jpg,http://kepler.gl
2016-09-17 00:10:56,29.9927699,31.2461142,driver_analytics,1472688000000,False,2,2016-09-23T00:00:00.000Z,2016-10-01 09:46:37+00:00,2016-10-01 16:46:37+00:00,2016-09-23,https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/icon-demo-map.jpg,http://kepler.gl
2016-09-17 00:11:56,29.9907261,31.2312742,driver_analytics,1472688000000,False,3,2016-09-23T00:00:00.000Z,,,2016-09-23,https://user-images.githubusercontent.com/3605556/66859873-f2aed400-ef40-11e9-8a41-d07de7560376.png,http://kepler.gl
2016-09-17 00:12:58,29.9870074,31.2175827,driver_analytics,1472688000000,False,4,2016-09-23T00:00:00.000Z,,,2016-09-23,https://user-images.githubusercontent.com/3605556/66859873-f2aed400-ef40-11e9-8a41-d07de7560376.png,http://kepler.gl
2016-09-17 00:14:00,29.9923041,31.2154899,driver_analytics,1472688000000,False,5,2016-09-23T00:00:00.000Z,2016-10-01 09:47:37+00:00,2016-10-01 16:47:37+00:00,,https://user-images.githubusercontent.com/3605556/66859873-f2aed400-ef40-11e9-8a41-d07de7560376.png,http://kepler.gl
2016-09-17 00:15:01,29.9968249,31.2149361,driver_analytics,1472688000000,False,12124,2016-09-23T05:00:00.000Z,,,,https://user-images.githubusercontent.com/3605556/66859873-f2aed400-ef40-11e9-8a41-d07de7560376.png,http://kepler.gl
2016-09-17 00:16:03,30.0037217,31.2164035,driver_analytics,1472688000000,False,222,2016-09-23T05:00:00.000Z,,,,https://user-images.githubusercontent.com/3605556/66859873-f2aed400-ef40-11e9-8a41-d07de7560376.png,http://kepler.gl
2016-09-17 00:17:05,30.0116207,31.2179346,driver_analytics,1472688000000,False,345,2016-09-23T00:00:00.000Z,,,2016-09-24,https://user-images.githubusercontent.com/3605556/66859873-f2aed400-ef40-11e9-8a41-d07de7560376.png,http://kepler.gl
2016-09-17 00:18:09,30.0208925,31.2179556,driver_analytics,1472708000000,False,,2016-09-23T00:00:00.000Z,,,2016-09-24,https://user-images.githubusercontent.com/3605556/66859873-f2aed400-ef40-11e9-8a41-d07de7560376.png,http://kepler.gl
2016-09-17 00:19:12,30.0218999,31.2178842,driver_analytics,1472708000000,False,,2016-09-23T06:00:00.000Z,,,2016-09-24,https://user-images.githubusercontent.com/3605556/66859873-f2aed400-ef40-11e9-8a41-d07de7560376.png,http://kepler.gl
2016-09-17 00:19:27,30.0229344,31.2179138,driver_analytics,1472708000000,False,,2016-09-23T05:00:00.000Z,,,2016-09-24,https://user-images.githubusercontent.com/3605556/66859873-f2aed400-ef40-11e9-8a41-d07de7560376.png,http://kepler.gl
2016-09-17 00:20:14,30.0264237,31.2179415,driver_analytics,1472708000000,False,,,,,2016-09-24,https://user-images.githubusercontent.com/3605556/66859873-f2aed400-ef40-11e9-8a41-d07de7560376.png,http://kepler.gl
2016-09-17 00:21:17,30.0292134,31.2181809,driver_analytics,1472754400000,False,,,,,2016-09-24,https://user-images.githubusercontent.com/3605556/66859873-f2aed400-ef40-11e9-8a41-d07de7560376.png,http://kepler.gl
2016-09-17 00:22:20,30.034391,31.2193991,driver_analytics,1472754400000,,,2016-09-23T06:00:00.000Z,,,,https://user-images.githubusercontent.com/3605556/66859873-f2aed400-ef40-11e9-8a41-d07de7560376.png,http://kepler.gl
2016-09-17 00:23:22,30.0352752,31.2181803,driver_analytics,1472754400000,,,2016-09-23T06:00:00.000Z,2016-10-01 10:01:54+00:00,2016-10-01 17:01:54+00:00,,https://user-images.githubusercontent.com/3605556/66859873-f2aed400-ef40-11e9-8a41-d07de7560376.png,http://kepler.gl
2016-09-17 00:24:24,30.0395918,31.2195902,driver_analytics,1472754400000,,1,2016-09-23T00:00:00.000Z,2016-10-01 09:53:04+00:00,2016-10-01 16:53:04+00:00,,https://user-images.githubusercontent.com/3605556/66859873-f2aed400-ef40-11e9-8a41-d07de7560376.png,http://kepler.gl
2016-09-17 00:25:28,30.0497387,31.2174421,driver_analytics,1472774400000,,,2016-09-23T07:00:00.000Z,2016-10-01 09:55:23+00:00,2016-10-01 16:55:23+00:00,,https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/icon-demo-map.jpg,http://kepler.gl
2016-09-17 00:26:29,30.0538936,31.2165983,driver_analytics,1472774400000,,43,2016-09-23T07:00:00.000Z,2016-10-01 09:59:53+00:00,2016-10-01 16:59:53+00:00,2016-10-10,https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/icon-demo-map.jpg,http://kepler.gl
2016-09-17 00:27:31,30.060911,31.2148748,driver_analytics,1472774400000,,4,2016-09-23T07:00:00.000Z,2016-10-01 09:57:11+00:00,2016-10-01 16:57:11+00:00,2016-10-10,https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/icon-demo-map.jpg,http://kepler.gl
2016-09-17 00:28:35,30.060334,31.2212278,driver_analytics,1472774400000,,5,2016-09-23T07:00:00.000Z,2016-10-01 09:59:27+00:00,2016-10-01 16:59:27+00:00,2016-10-10,https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/icon-demo-map.jpg,http://kepler.gl
2016-09-17 00:29:40,30.0554663,31.2288985,driver_analytics,1472774400000,True,,2016-09-23T07:00:00.000Z,2016-10-01 09:46:36+00:00,2016-10-01 16:46:36+00:00,2016-10-10,https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/icon-demo-map.jpg,http://kepler.gl
2016-09-17 00:30:03,30.0614122,31.2187021,driver_gps,1472774400000,True,6,2016-09-23T08:00:00.000Z,2016-10-01 09:54:31+00:00,2016-10-01 16:54:31+00:00,2016-10-10,https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/icon-demo-map.jpg,http://kepler.gl
2016-09-17 00:30:03,30.0612697,31.2191059,driver_gps,1472774400000,True,7,2016-09-23T08:00:00.000Z,2016-10-01 09:53:35+00:00,2016-10-01 16:53:35+00:00,2016-10-10,https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/icon-demo-map.jpg,http://kepler.gl
2016-09-17 00:30:08,30.0610977,31.2194728,driver_gps,1472774400000,True,,2016-09-23T08:00:00.000Z,,,,https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/icon-demo-map.jpg,http://kepler.gl
`;
export default {
fields: [
{
name: 'tpep_pickup_datetime',
format: 'YYYY-M-D H:m:s',
type: 'timestamp'
},
{
name: 'tpep_dropoff_datetime',
format: 'YYYY-M-D H:m:s',
type: 'timestamp'
},
{
name: 'passenger_count',
format: '',
type: 'integer'
},
{name: 'trip_distance', format: '', type: 'real'},
{name: 'pickup_longitude', format: '', type: 'real'},
{name: 'pickup_latitude', format: '', type: 'real'},
{name: 'dropoff_longitude', format: '', type: 'real'},
{name: 'dropoff_latitude', format: '', type: 'real'},
{name: 'fare_amount', format: '', type: 'real'},
{name: 'is_completed', format: '', type: 'boolean'},
{name: 'fare_type', format: '', type: 'string'}
],
rows: [
[
null,
'2015-01-15 19:23:42 +00:00',
null,
1.59,
-73.99389648,
40.75011063,
-73.97478485,
40.75061798,
12,
true,
'orange peel 0'
],
[
null,
'2015-01-15 19:32:00 +00:00',
-3,
2.38,
-73.97642517,
40.73981094,
-73.98397827,
40.75788879,
16.5,
false,
'orange peel 0'
],
[
'2015-01-15 19:05:40 +00:00',
'2015-01-15 19:21:00 +00:00',
5,
2.83,
-73.96870422,
40.75424576,
-73.9551239,
40.7868576,
12.5,
false,
'apple tree'
],
[
null,
'2015-01-15 19:28:18 +00:00',
5,
8.33,
-73.86306,
40.76958084,
-73.95271301,
40.78578186,
26,
true,
'orange peel 0'
],
[
'2015-01-15 19:05:41 +00:00',
'2015-01-15 19:20:36 +00:00',
1,
2.37,
-73.94554138,
40.77942276,
-73.98085022,
40.78608322,
11.5,
true,
'apple tree'
],
[
'2015-01-15 19:05:41 +00:00',
'2015-01-15 19:20:22 +00:00',
2,
7.13,
-73.87445831,
40.7740097,
-73.95237732,
40.71858978,
21.5,
true,
'orange peel'
],
[
'2015-01-15 19:05:41 +00:00',
'2015-01-15 19:31:00 +00:00',
0,
3.6,
-73.97660065,
40.7518959,
-73.99892426,
40.71459579,
17.5,
true,
'orange peel'
],
[
'2015-01-15 19:05:41 +00:00',
'2015-01-15 19:10:22 +00:00',
1,
0.89,
-73.99495697,
40.74507904,
-73.99993896,
40.73464966,
5.5,
false,
'orange peel'
],
[
'2015-01-15 19:05:41 +00:00',
'2015-01-15 19:10:55 +00:00',
1,
0.96,
-74.00093842,
40.74706268,
-74.00356293,
40.73551178,
5.5,
false,
'orange peel'
],
[
'2015-01-15 19:05:41 +00:00',
'2015-01-15 19:12:36 +00:00',
2,
1.25,
-74.0027771,
40.71789169,
-74.00791931,
40.70421982,
6.5,
true,
'mango mint pineapple juice'
],
[
'2015-01-15 19:05:41 +00:00',
'2015-01-15 19:22:11 +00:00',
5,
2.11,
-73.99745941,
40.73636246,
-73.9781723,
40.76185608,
11.5,
false,
'orange peel'
],
[
'2015-01-15 19:05:41 +00:00',
'2015-01-15 19:14:05 +00:00',
5,
1.15,
-73.95227814,
40.82399368,
-73.95333862,
40.81108856,
7.5,
false,
'banana peel'
],
[
'2015-01-15 19:05:42 +00:00',
'2015-01-15 19:16:18 +00:00',
0,
1.53,
-73.99112701,
40.75008011,
-73.98860931,
40.73488998,
9,
false,
'orange peel'
],
[
'2015-01-15 19:05:42 +00:00',
'2015-01-15 19:49:07 +00:00',
1,
18.06,
-73.78657532,
40.64412689,
-73.98560333,
40.74353027,
52,
false,
'banana peel'
],
[
'2015-01-15 19:05:42 +00:00',
'2015-01-15 19:18:33 +00:00',
1,
1.76,
-73.9936676,
40.74144745,
-73.99451447,
40.75772095,
10,
false,
'banana peel'
],
[
'2015-01-15 19:05:42 +00:00',
'2015-01-15 19:21:40 +00:00',
6,
5.19,
-73.98529053,
40.7440834,
-74.00907898,
40.70468903,
17.5,
false,
'mango mint pineapple juice'
],
[
'2015-01-15 19:05:42 +00:00',
'2015-01-15 19:14:23 +00:00',
1,
1.38,
-73.96977234,
40.7856102,
-73.95070648,
40.77468109,
7.5,
false,
'orange peel'
],
[
'2015-01-15 19:05:43 +00:00',
'2015-01-15 19:17:43 +00:00',
-3,
2.23,
-73.98509216,
40.75698853,
-73.98487854,
40.78015137,
10,
true,
'apple tree'
],
[
'2015-01-15 19:05:43 +00:00',
'2015-01-15 19:15:17 +00:00',
1,
1.56,
-73.96616364,
40.76216125,
-73.95005035,
40.77625275,
8,
true,
'orange peel'
],
[
'2015-01-15 19:05:43 +00:00',
'2015-01-15 19:15:09 +00:00',
5,
1.57,
-73.97842407,
40.74620819,
-73.98021698,
40.72854233,
8,
false,
'mango mint pineapple juice'
],
[
'2015-01-15 19:05:44 +00:00',
'2015-01-15 19:17:44 +00:00',
1,
2.92,
-73.99835205,
40.72003174,
-73.95582581,
40.71559906,
12.5,
false,
'orange peel'
],
[
'2015-01-15 14:00:41 +00:00',
'2015-01-15 14:11:18 +00:00',
1,
1.64,
-73.9837265,
40.74634171,
-73.96679688,
40.76140594,
8.5,
false,
'apple tree'
],
[
'2015-01-15 14:00:41 +00:00',
'2015-01-15 14:19:26 +00:00',
1,
1.53,
-73.99578094,
40.73294067,
-73.99107361,
40.75038147,
12,
true,
'orange peel'
],
[
'2015-01-15 14:00:41 +00:00',
'2015-01-15 14:31:42 +00:00',
-5,
7.48,
-73.87081909,
40.77370071,
-73.96869659,
40.76268005,
27,
false,
'banana peel'
],
[
'2015-01-15 14:00:41 +00:00',
'2015-01-15 14:13:48 +00:00',
1,
3,
-73.96427155,
40.7730217,
-73.96577454,
40.80466843,
12,
false,
'apple tree'
],
[
'2015-01-15 14:00:42 +00:00',
'2015-01-15 14:05:01 +00:00',
1,
0.67,
-73.97093201,
40.79592133,
-73.97016907,
40.78912354,
5,
true,
'mango mint pineapple juice'
],
[
'2015-01-15 14:00:42 +00:00',
'2015-01-15 14:20:40 +00:00',
1,
1.51,
-73.97212219,
40.75902939,
-73.99093628,
40.7557373,
13,
false,
'apple tree'
],
[
'2015-01-15 14:00:42 +00:00',
'2015-01-15 14:05:16 +00:00',
2,
0.85,
-73.98056793,
40.7656517,
-73.97304535,
40.75827026,
5.5,
true,
'banana peel'
],
[
'2015-01-15 14:00:43 +00:00',
'2015-01-15 14:58:40 +00:00',
-1,
15.2,
-73.8012619,
40.66772842,
-73.9933548,
40.75600052,
52,
true,
'apple tree'
],
[
'2015-01-15 14:00:43 +00:00',
'2015-01-15 14:41:50 +00:00',
3,
9.96,
-73.99095917,
40.74534225,
-73.97360229,
40.63248062,
35.5,
false,
'mango mint pineapple juice'
],
[
'2015-01-15 14:00:44 +00:00',
'2015-01-15 14:04:55 +00:00',
1,
0.76,
-73.96351624,
40.77156067,
-73.95298767,
40.77246094,
5,
true,
'banana peel'
],
[
'2015-01-15 14:00:44 +00:00',
'2015-01-15 14:04:06 +00:00',
1,
0.38,
-73.99138641,
40.7701683,
-73.98978424,
40.77473831,
4,
false,
'apple tree'
],
[
'2015-01-15 14:00:45 +00:00',
'2015-01-15 14:05:40 +00:00',
2,
0.63,
-73.95426941,
40.77827072,
-73.95627594,
40.78404617,
5,
true,
'banana peel'
],
[
'2015-01-15 14:00:45 +00:00',
'2015-01-15 14:39:09 +00:00',
1,
12.63,
-73.78852844,
40.64778519,
-73.97788239,
40.68964005,
40,
true,
'banana peel'
],
[
'2015-01-15 14:00:45 +00:00',
'2015-01-15 14:10:24 +00:00',
null,
1.2,
-73.9940033,
40.7513504,
-73.98135376,
40.76112366,
8.5,
false,
'mango mint pineapple juice'
],
[
'2015-01-15 14:00:45 +00:00',
'2015-01-15 14:16:31 +00:00',
2,
1.18,
-74.00641632,
40.73965454,
-73.98991394,
40.73839569,
10.5,
false,
'orange peel'
],
[
'2015-01-15 14:00:45 +00:00',
'2015-01-15 14:47:12 +00:00',
1,
10.89,
-74.00640869,
40.73976517,
-73.87119293,
40.77421188,
40.5,
true,
'apple tree'
],
[
'2015-01-15 14:00:46 +00:00',
'2015-01-15 14:41:54 +00:00',
6,
10.39,
-73.9930954,
40.74725723,
-73.86483002,
40.77032089,
38,
true,
'banana peel'
],
[
'2015-01-15 14:00:46 +00:00',
'2015-01-15 14:33:02 +00:00',
5,
2.96,
-73.96273041,
40.77416992,
-73.99333191,
40.7498703,
20.5,
true,
'banana peel'
],
[
'2015-01-15 14:00:46 +00:00',
'2015-01-15 14:10:09 +00:00',
1,
1.18,
-73.9825592,
40.77320099,
-73.96412659,
40.76470947,
8,
true,
'apple tree'
],
[
'2015-01-15 14:00:46 +00:00',
'2015-01-15 14:14:51 +00:00',
1,
1.62,
-73.97618103,
40.75120544,
-73.9863739,
40.7665863,
10.5,
true,
'banana peel'
],
[
'2015-01-15 14:00:47 +00:00',
'2015-01-15 14:16:01 +00:00',
null,
1.56,
-73.95927429,
40.77437592,
-73.97639465,
40.76293945,
10.5,
true,
'banana peel 2'
],
[
'2015-01-15 14:00:47 +00:00',
'2015-01-15 14:23:36 +00:00',
5,
4.96,
-73.97286224,
40.74352264,
-73.91412354,
40.76496887,
19,
true,
'banana peel'
],
[
'2015-01-15 10:26:13 +00:00',
'2015-01-15 10:30:49 +00:00',
1,
0.8,
-73.97223663,
40.74559402,
-73.96466827,
40.75601959,
5.5,
true,
'banana peel'
],
[
'2015-01-15 10:26:14 +00:00',
'2015-01-15 10:42:16 +00:00',
-1,
1.9,
-73.94948578,
40.77207184,
-73.97072601,
40.75839233,
12.5,
false,
'apple tree'
],
[
'2015-01-15 10:26:14 +00:00',
'2015-01-15 10:51:03 +00:00',
1,
2.6,
-73.96176147,
40.76427078,
-73.98921967,
40.74206543,
16,
true,
'orange peel'
],
[
'2015-01-15 10:26:14 +00:00',
'2015-01-15 10:38:13 +00:00',
1,
0.8,
-73.99343872,
40.74200058,
-73.98744965,
40.75202179,
8.5,
true,
'mango mint pineapple juice'
],
[
'2015-01-15 10:26:14 +00:00',
'2015-01-15 10:49:00 +00:00',
null,
6.8,
-73.97297668,
40.7611351,
-74.00971222,
40.70956421,
23,
true,
'banana peel 2'
],
[
'2015-01-15 10:26:15 +00:00',
'2015-01-15 10:34:40 +00:00',
1,
1.3,
-73.94763947,
40.77514267,
-73.96069336,
40.76080704,
7.5,
true,
'orange peel'
],
[
'2015-01-15 10:26:15 +00:00',
'2015-01-15 10:35:33 +00:00',
1,
0.7,
-73.98516846,
40.75121307,
-73.97951508,
40.7618866,
7.5,
false,
'orange peel'
],
[
'2015-01-15 10:26:15 +00:00',
'2015-01-15 10:33:37 +00:00',
1,
0.3,
-73.98387146,
40.74245453,
-73.98730469,
40.74406052,
6,
false,
'apple tree'
],
[
'2015-01-15 10:26:15 +00:00',
'2015-01-15 10:36:03 +00:00',
1,
1.4,
-73.96815491,
40.76235962,
-73.98164368,
40.74707031,
8,
true,
'mango mint pineapple juice'
],
[
'2015-01-15 10:26:16 +00:00',
'2015-01-15 10:32:04 +00:00',
1,
1.2,
-74.00554657,
40.72677612,
-74.01348114,
40.71365738,
6.5,
true,
'banana peel'
],
[
'2015-01-15 10:26:16 +00:00',
'2015-01-15 11:08:10 +00:00',
2,
12.6,
-73.86273956,
40.7688446,
-73.98956299,
40.75883865,
40,
false,
'orange peel'
],
[
'2015-01-15 10:26:16 +00:00',
'2015-01-15 10:26:42 +00:00',
2,
0,
-73.98765564,
40.74364471,
-73.98748779,
40.7434845,
60,
false,
'banana peel'
],
[
'2015-01-15 10:26:17 +00:00',
'2015-01-15 10:27:28 +00:00',
1,
0,
-73.94652557,
40.7449913,
-73.94652557,
40.7449913,
3,
false,
'apple tree'
],
[
'2015-01-15 09:46:59 +00:00',
'2015-01-15 09:57:44 +00:00',
1,
3.1,
-74.01138306,
40.71348953,
-73.99554443,
40.74922943,
11.5,
true,
'banana peel'
],
[
'2015-01-15 09:46:59 +00:00',
'2015-01-15 09:56:44 +00:00',
1,
0.8,
-73.99701691,
40.74232101,
-73.98770142,
40.73540497,
7.5,
false,
'banana peel'
],
[
'2015-01-15 09:46:59 +00:00',
'2015-01-15 10:27:34 +00:00',
1,
9.5,
-73.87297058,
40.77403259,
-74.00010681,
40.71933746,
34,
true,
'apple tree'
],
[
'2015-01-15 09:47:00 +00:00',
'2015-01-15 09:50:43 +00:00',
1,
0.4,
-74.00221252,
40.72949219,
-73.9969101,
40.72514343,
4.5,
true,
'orange peel'
],
[
'2015-01-15 09:47:02 +00:00',
'2015-01-15 10:01:48 +00:00',
1,
1.1,
-73.96573639,
40.7954216,
-73.95262909,
40.78934479,
10,
false,
'apple tree'
],
[
'2015-01-15 09:47:02 +00:00',
'2015-01-15 10:14:12 +00:00',
2,
2.2,
-74.00695801,
40.73000336,
-73.98561859,
40.7528801,
16.5,
false,
'banana peel'
],
[
'2015-01-15 09:47:03 +00:00',
'2015-01-15 09:57:10 +00:00',
1,
0.7,
-73.97551727,
40.75428009,
-73.97853088,
40.76155853,
7.5,
true,
'orange peel'
],
[
'2015-01-15 09:47:03 +00:00',
'2015-01-15 09:53:04 +00:00',
3,
0.8,
-73.94737244,
40.77603912,
-73.95754242,
40.77267075,
6,
false,
'apple tree'
],
[
'2015-01-15 09:47:03 +00:00',
'2015-01-15 09:51:15 +00:00',
1,
1.1,
-73.96231079,
40.75884628,
-73.95182037,
40.77346039,
5.5,
true,
'orange peel'
],
[
'2015-01-15 09:47:04 +00:00',
'2015-01-15 10:02:36 +00:00',
1,
1.4,
-73.98874664,
40.75502777,
-73.99000549,
40.73872375,
10.5,
true,
'banana peel'
],
[
'2015-01-15 09:47:04 +00:00',
'2015-01-15 10:00:56 +00:00',
2,
1.6,
-73.98256683,
40.73551559,
-73.9910965,
40.74888992,
10,
true,
'banana peel'
],
[
'2015-01-15 09:47:05 +00:00',
'2015-01-15 09:52:25 +00:00',
1,
0.6,
-73.99432373,
40.75033188,
-74.00239563,
40.74866867,
5.5,
false,
'mango mint pineapple juice'
],
[
'2015-01-15 09:47:05 +00:00',
'2015-01-15 09:53:18 +00:00',
1,
0.7,
-73.96313477,
40.77178955,
-73.95404053,
40.76702499,
5.5,
false,
'orange peel'
],
[
'2015-01-15 09:47:05 +00:00',
'2015-01-15 09:48:54 +00:00',
1,
0.5,
-73.96200562,
40.75959015,
-73.95683289,
40.76490021,
3.5,
true,
'orange peel'
],
[
'2015-01-15 09:47:05 +00:00',
'2015-01-15 09:51:23 +00:00',
1,
0.9,
-73.97065735,
40.78341293,
-73.9588623,
40.78094482,
5.5,
true,
'orange peel'
],
[
'2015-01-15 09:47:06 +00:00',
'2015-01-15 09:55:23 +00:00',
1,
1.6,
-73.96646881,
40.79238129,
-73.95868683,
40.77577209,
8,
false,
'orange peel'
],
[
'2015-01-15 09:47:06 +00:00',
'2015-01-15 10:01:35 +00:00',
2,
6.9,
-73.98991394,
40.75692368,
-73.94661713,
40.83629227,
21,
true,
'mango mint pineapple juice'
],
[
'2015-01-15 09:47:07 +00:00',
'2015-01-15 09:55:25 +00:00',
1,
0.7,
-73.9852066,
40.74163055,
-73.97882843,
40.75057602,
7,
false,
'banana peel'
],
[
'2015-01-15 09:47:07 +00:00',
'2015-01-15 10:08:50 +00:00',
1,
2.9,
-73.97415161,
40.78395081,
-73.97834778,
40.75157547,
15,
true,
'orange peel'
],
[
'2015-01-15 09:47:07 +00:00',
'2015-01-15 09:56:05 +00:00',
1,
1.6,
-73.97924042,
40.77156448,
-73.96215057,
40.77807236,
8.5,
true,
'apple tree'
],
[
'2015-01-15 10:26:10 +00:00',
'2015-01-15 10:42:12 +00:00',
1,
1.5,
-73.99133301,
40.74978256,
-73.97821045,
40.73733521,
11,
true,
'orange peel'
],
[
'2015-01-15 10:26:10 +00:00',
'2015-01-15 10:53:36 +00:00',
1,
3.7,
-73.99958801,
40.72176361,
-73.96715546,
40.75602341,
18.5,
false,
'mango mint pineapple juice'
],
[
'2015-01-15 10:26:12 +00:00',
'2015-01-15 10:46:58 +00:00',
1,
1.8,
-73.97556305,
40.75548553,
-73.99723816,
40.75146484,
13.5,
false,
'banana peel'
],
[
'2015-01-15 10:26:12 +00:00',
'2015-01-15 10:50:20 +00:00',
1,
1.4,
-73.97470093,
40.74204636,
-73.97841644,
40.75669479,
15.5,
true,
'apple tree'
],
[
'2015-01-15 10:26:12 +00:00',
'2015-01-15 10:39:05 +00:00',
1,
1.4,
-73.9725647,
40.75384521,
-73.98822021,
40.74080658,
9.5,
false,
'banana peel'
],
[
'2015-01-15 10:26:12 +00:00',
'2015-01-15 10:43:52 +00:00',
2,
2.6,
-73.9773941,
40.78989792,
-73.9559021,
40.7661171,
13,
true,
'banana peel'
],
[
'2015-01-15 10:26:12 +00:00',
'2015-01-15 10:32:31 +00:00',
1,
0.8,
-73.95783997,
40.7794075,
-73.95165253,
40.77099991,
6,
false,
'mango mint pineapple juice'
],
[
'2015-01-15 10:26:13 +00:00',
'2015-01-15 10:35:01 +00:00',
1,
0.5,
-73.98423767,
40.7456665,
-73.97926331,
40.74409866,
7,
false,
'mango mint pineapple juice'
],
[
'2015-01-15 10:56:46 +00:00',
'2015-01-15 11:06:13 +00:00',
1,
1.6,
-73.98516846,
40.76850128,
-73.98157501,
40.75225067,
7.5,
false,
'banana peel'
],
[
'2015-01-15 10:56:46 +00:00',
'2015-01-15 11:09:23 +00:00',
1,
2,
-73.98225403,
40.76245117,
-73.99003601,
40.73810959,
10,
false,
'apple tree'
],
[
'2015-01-15 10:56:47 +00:00',
'2015-01-15 11:23:18 +00:00',
1,
5.4,
-73.97812653,
40.75257492,
-74.00234222,
40.7152977,
22,
true,
'banana peel'
],
[
'2015-01-15 10:56:48 +00:00',
'2015-01-15 11:07:26 +00:00',
1,
1.5,
-74.00622559,
40.73387146,
-73.99993134,
40.75349426,
9,
true,
'mango mint pineapple juice'
],
[
'2015-01-15 10:56:48 +00:00',
'2015-01-15 11:08:55 +00:00',
1,
1.5,
-73.97122955,
40.75518417,
-73.95401001,
40.76623917,
9.5,
true,
'orange peel'
],
[
'2015-01-15 10:56:48 +00:00',
'2015-01-15 11:10:30 +00:00',
1,
2.2,
-73.97627258,
40.75893402,
-73.98604584,
40.73451614,
11,
false,
'banana peel'
],
[
'2015-01-15 10:56:48 +00:00',
'2015-01-15 11:06:10 +00:00',
1,
1.4,
-73.97628021,
40.77590942,
-73.96232605,
40.76773834,
8.5,
true,
'banana peel'
],
[
'2015-01-15 10:56:49 +00:00',
'2015-01-15 11:03:29 +00:00',
1,
0.7,
-73.98015594,
40.76077652,
-73.97042084,
40.76482773,
6,
true,
'mango mint pineapple juice'
],
[
'2015-01-15 10:56:49 +00:00',
'2015-01-15 11:05:22 +00:00',
1,
0.5,
-73.98032379,
40.74335861,
-73.97641754,
40.73955154,
6.5,
true,
'banana peel'
],
[
'2015-01-15 10:56:49 +00:00',
'2015-01-15 11:04:05 +00:00',
1,
0.5,
-73.97009277,
40.7521019,
-73.97557068,
40.7491951,
6,
false,
'banana peel'
],
[
'2015-01-15 10:56:49 +00:00',
'2015-01-15 11:12:20 +00:00',
1,
1.5,
-73.98545837,
40.75137329,
-74.00403595,
40.75012589,
11,
false,
'banana peel'
],
[
'2015-01-15 10:56:49 +00:00',
'2015-01-15 11:25:21 +00:00',
1,
8.7,
-73.86603546,
40.77074432,
-73.98206329,
40.74584198,
29,
true,
'orange peel'
],
[
'2015-01-15 10:56:50 +00:00',
'2015-01-15 11:31:54 +00:00',
1,
12.5,
-73.99441528,
40.72490692,
-73.94686127,
40.61621094,
38,
true,
'mango mint pineapple juice'
],
[
'2015-01-15 10:56:50 +00:00',
'2015-01-15 11:16:04 +00:00',
1,
0,
-73.99421692,
40.73490906,
-73.97660828,
40.75004578,
12,
true,
'banana peel'
],
[
'2015-01-15 10:56:50 +00:00',
'2015-01-15 11:03:51 +00:00',
1,
1.3,
-74.01493835,
40.71023178,
-74.0075531,
40.72661591,
7,
true,
'banana peel'
],
[
'2015-01-15 10:56:50 +00:00',
'2015-01-15 11:21:30 +00:00',
1,
6,
-73.99806976,
40.73566437,
-73.96785736,
40.80531311,
22.5,
false,
'orange peel'
],
[
'2015-01-15 10:56:50 +00:00',
'2015-01-15 11:03:30 +00:00',
1,
1.3,
-73.98352051,
40.76331329,
-73.99245453,
40.74995804,
6,
false,
'apple tree'
],
[
'2015-01-15 10:56:52 +00:00',
'2015-01-15 11:05:46 +00:00',
1,
1.2,
-74.00131989,
40.7518959,
-73.98478699,
40.75503922,
7.5,
false,
'banana peel'
],
[
'2015-01-15 10:56:52 +00:00',
'2015-01-15 11:11:58 +00:00',
1,
3.6,
-74.01648712,
40.71627426,
-73.99113464,
40.75481415,
13.5,
true,
'banana peel'
],
[
'2015-01-15 10:56:52 +00:00',
'2015-01-15 11:12:56 +00:00',
1,
1.6,
-73.9691925,
40.76200104,
-73.98760986,
40.74968338,
11,
true,
'apple tree'
],
[
'2015-01-15 10:56:53 +00:00',
'2015-01-15 10:59:35 +00:00',
1,
0.4,
-73.9547348,
40.76564026,
-73.95345306,
40.77137756,
4,
false,
'mango mint pineapple juice'
],
[
'2015-01-15 11:35:15 +00:00',
'2015-01-15 11:53:23 +00:00',
1,
2.2,
-73.9984436,
40.71989441,
-74.00462341,
40.74206543,
12.5,
false,
'banana peel'
],
[
'2015-01-15 11:35:15 +00:00',
'2015-01-15 11:43:13 +00:00',
1,
1.2,
-73.9718399,
40.79421616,
-73.95295715,
40.78664398,
7.5,
true,
'banana peel'
],
[
'2015-01-15 11:35:16 +00:00',
'2015-01-15 12:01:53 +00:00',
1,
6.8,
-73.95982361,
40.77128983,
-74.00769043,
40.71765518,
24.5,
false,
'banana peel'
],
[
'2015-01-15 11:35:17 +00:00',
'2015-01-15 11:49:54 +00:00',
1,
1.9,
-73.9616394,
40.77980804,
-73.98139954,
40.75747299,
10.5,
false,
'orange peel'
],
[
'2015-01-15 11:35:18 +00:00',
'2015-01-15 11:51:31 +00:00',
2,
0.8,
-73.96839905,
40.76218033,
-73.98125458,
40.76370239,
10.5,
false,
'apple tree'
],
[
'2015-01-15 11:35:19 +00:00',
'2015-01-15 11:46:14 +00:00',
1,
1.4,
-73.96898651,
40.79833221,
-73.97193146,
40.78203964,
9,
true,
'banana peel'
],
[
'2015-01-15 11:35:20 +00:00',
'2015-01-15 11:43:38 +00:00',
1,
1.7,
-73.98987579,
40.76201248,
-73.98152924,
40.78125763,
8,
true,
'orange peel'
],
[
'2015-01-15 11:35:20 +00:00',
'2015-01-15 11:47:17 +00:00',
1,
1.4,
-73.98216248,
40.77657318,
-73.97359467,
40.76300049,
9.5,
true,
'banana peel'
],
[
'2015-01-15 11:35:21 +00:00',
'2015-01-15 11:35:28 +00:00',
1,
0,
-73.9733963,
40.76347733,
-73.9733963,
40.76347733,
2.5,
false,
'orange peel'
],
[
'2015-01-15 11:35:22 +00:00',
'2015-01-15 11:46:32 +00:00',
1,
1.1,
-73.98245239,
40.7314949,
-73.97905731,
40.74420929,
8.5,
true,
'banana peel'
],
[
'2015-01-15 11:35:23 +00:00',
'2015-01-15 11:44:32 +00:00',
1,
1.2,
-73.94425964,
40.7760582,
-73.96222687,
40.77615738,
8,
false,
'apple tree'
],
[
'2015-01-15 11:35:24 +00:00',
'2015-01-15 11:58:40 +00:00',
1,
2.1,
-74.00631714,
40.73365784,
-74.00494385,
40.71043015,
15,
true,
'banana peel'
],
[
'2015-01-15 11:35:25 +00:00',
'2015-01-15 11:51:24 +00:00',
1,
1.9,
-73.98616791,
40.72227859,
-73.99510193,
40.73960114,
12,
false,
'orange peel'
],
[
'2015-01-15 11:35:25 +00:00',
'2015-01-15 11:51:06 +00:00',
1,
2,
-73.96168518,
40.75761414,
-73.98378754,
40.74235153,
11,
false,
'banana peel'
],
[
'2015-01-15 11:35:25 +00:00',
'2015-01-15 12:01:33 +00:00',
1,
3.5,
-73.9727478,
40.74853134,
-74.00801849,
40.72272873,
18,
false,
'orange peel'
],
[
'2015-01-15 11:35:25 +00:00',
'2015-01-15 11:40:23 +00:00',
1,
0.6,
-73.96208954,
40.76380157,
-73.96765137,
40.75511551,
5,
false,
'orange peel'
],
[
'2015-01-15 11:35:25 +00:00',
'2015-01-15 11:56:42 +00:00',
1,
1.9,
-73.9851532,
40.7371788,
-73.96670532,
40.76086426,
14,
false,
'banana peel'
],
[
'2015-01-15 11:35:26 +00:00',
'2015-01-15 11:51:09 +00:00',
2,
2.3,
-73.97872925,
40.75224304,
-73.96221161,
40.77930069,
12,
false,
'apple tree'
],
[
'2015-01-15 11:35:26 +00:00',
'2015-01-15 11:44:50 +00:00',
1,
1.3,
-73.95684814,
40.78347778,
-73.95326996,
40.79862976,
7.5,
false,
'banana peel'
],
[
'2015-01-15 11:35:26 +00:00',
'2015-01-15 11:48:16 +00:00',
1,
1.8,
-73.95348358,
40.76652908,
-73.97425842,
40.75358963,
10,
false,
'orange peel'
],
[
'2015-01-15 11:35:27 +00:00',
'2015-01-15 11:43:45 +00:00',
2,
0.9,
-73.98709869,
40.7389946,
-73.97855377,
40.75112534,
7,
false,
'orange peel'
],
[
'2015-01-15 11:49:53 +00:00',
'2015-01-15 12:02:35 +00:00',
1,
1.3,
-73.98623657,
40.74385834,
-73.97293854,
40.75786209,
9,
false,
'orange peel'
],
[
'2015-01-15 11:49:53 +00:00',
'2015-01-15 12:06:10 +00:00',
1,
6.3,
-73.96685791,
40.76138687,
-73.87236786,
40.77438354,
20,
false,
'banana peel'
],
[
'2015-01-15 11:49:53 +00:00',
'2015-01-15 11:56:36 +00:00',
1,
0.4,
-73.96569824,
40.75917053,
-73.97373962,
40.7628479,
6,
false,
'orange peel'
],
[
'2015-01-15 11:49:54 +00:00',
'2015-01-15 11:59:59 +00:00',
1,
0.9,
-74.00165558,
40.74570465,
-73.98720551,
40.73950577,
8,
false,
'banana peel'
],
[
'2015-01-15 11:49:54 +00:00',
'2015-01-15 11:50:33 +00:00',
1,
0,
-73.94851685,
40.74454117,
-73.94844818,
40.74446869,
20,
true,
'banana peel'
],
[
'2015-01-15 11:49:54 +00:00',
'2015-01-15 12:20:30 +00:00',
1,
9.9,
-73.95471954,
40.6891098,
-73.87099457,
40.77423859,
31,
true,
'orange peel'
],
[
'2015-01-15 11:49:54 +00:00',
'2015-01-15 11:51:35 +00:00',
1,
0.3,
-73.97939301,
40.78484344,
-73.98139191,
40.78102112,
3.5,
true,
'apple tree'
],
[
'2015-01-15 11:49:55 +00:00',
'2015-01-15 12:15:37 +00:00',
1,
2.1,
-73.96233368,
40.7553978,
-73.9940567,
40.75914383,
16,
false,
'banana peel'
],
[
'2015-01-15 11:49:55 +00:00',
'2015-01-15 12:23:44 +00:00',
2,
2.2,
-73.9991684,
40.72670746,
-73.98468781,
40.75434113,
20,
false,
'orange peel'
],
[
'2015-01-15 11:49:55 +00:00',
'2015-01-15 12:01:31 +00:00',
1,
1.9,
-73.99319458,
40.74750137,
-73.99531555,
40.72745132,
9,
false,
'orange peel'
],
[
'2015-01-15 11:49:55 +00:00',
'2015-01-15 11:57:33 +00:00',
1,
1.3,
-73.98823547,
40.76163101,
-73.97983551,
40.77527237,
7,
true,
'banana peel'
],
[
'2015-01-15 11:49:55 +00:00',
'2015-01-15 12:02:53 +00:00',
1,
1.5,
-73.98677063,
40.74547958,
-73.97886658,
40.76271439,
9.5,
true,
'mango mint pineapple juice'
],
[
'2015-01-15 11:49:55 +00:00',
'2015-01-15 11:54:40 +00:00',
1,
0.8,
-73.99420166,
40.75626373,
-73.99887848,
40.74616241,
5,
false,
'apple tree'
],
[
'2015-01-15 11:49:56 +00:00',
'2015-01-15 12:38:59 +00:00',
3,
17.4,
-73.9848175,
40.75334549,
-73.78993988,
40.6469841,
52,
false,
'mango mint pineapple juice'
],
[
'2015-01-15 11:49:56 +00:00',
'2015-01-15 11:56:08 +00:00',
1,
0.9,
-73.98517609,
40.75651169,
-73.98495483,
40.74806595,
6,
true,
'orange peel'
],
[
'2015-01-15 11:49:56 +00:00',
'2015-01-15 12:02:54 +00:00',
1,
1.4,
-73.98865509,
40.7688942,
-73.97301483,
40.78256226,
10,
false,
'orange peel'
],
[
'2015-01-15 11:49:56 +00:00',
'2015-01-15 12:01:01 +00:00',
1,
1.8,
-73.96639252,
40.78882599,
-73.98210907,
40.76841354,
9.5,
false,
'apple tree'
],
[
'2015-01-15 11:49:57 +00:00',
'2015-01-15 12:03:47 +00:00',
4,
1.9,
-73.9731369,
40.75410843,
-73.98535156,
40.73196411,
10.5,
false,
'banana peel'
],
[
'2015-01-15 11:49:57 +00:00',
'2015-01-15 12:03:11 +00:00',
1,
0.9,
-73.97318268,
40.75216675,
-73.98213196,
40.75175858,
9.5,
true,
'orange peel'
],
[
'2015-01-15 11:49:57 +00:00',
'2015-01-15 11:58:02 +00:00',
1,
0.9,
-73.99911499,
40.72656631,
-73.99121094,
40.71820831,
7,
false,
'banana peel'
],
[
'2015-01-15 11:49:57 +00:00',
'2015-01-15 12:14:42 +00:00',
1,
2.8,
-73.99176788,
40.74915695,
-73.95938873,
40.76327515,
16.5,
false,
'orange peel'
],
[
'2015-01-15 12:09:15 +00:00',
'2015-01-15 12:24:25 +00:00',
1,
1.5,
-73.98931885,
40.73603058,
-73.98506165,
40.75305939,
10.5,
true,
'apple tree'
],
[
'2015-01-15 12:09:15 +00:00',
'2015-01-15 12:46:14 +00:00',
1,
17,
-73.98258209,
40.73946762,
-73.77700043,
40.6446991,
52,
true,
'banana peel'
],
[
'2015-01-15 12:09:16 +00:00',
'2015-01-15 12:22:54 +00:00',
1,
3.5,
-74.0118866,
40.71377945,
-74.00259399,
40.76077271,
13.5,
false,
'mango mint pineapple juice'
],
[
'2015-01-15 12:09:16 +00:00',
'2015-01-15 12:26:07 +00:00',
1,
0.9,
-73.96848297,
40.76449585,
-73.97989655,
40.75763321,
11,
true,
'orange peel'
],
[
'2015-01-15 12:09:16 +00:00',
'2015-01-15 12:21:53 +00:00',
2,
2.1,
-73.97838593,
40.75712967,
-73.98999023,
40.73477173,
10.5,
true,
'mango mint pineapple juice'
],
[
'2015-01-15 12:09:16 +00:00',
'2015-01-15 12:19:48 +00:00',
1,
1.4,
-73.97607422,
40.75993729,
-73.96143341,
40.77157211,
8.5,
true,
'banana peel'
],
[
'2015-01-15 12:09:16 +00:00',
'2015-01-15 12:14:50 +00:00',
1,
0.7,
-73.99591827,
40.75410461,
-73.98538208,
40.74870682,
5.5,
true,
'apple tree'
],
[
'2015-01-15 12:09:16 +00:00',
'2015-01-15 12:22:32 +00:00',
1,
2.6,
-73.98551941,
40.76311111,
-73.95552063,
40.7767334,
11.5,
true,
'apple tree'
],
[
'2015-01-15 12:09:16 +00:00',
'2015-01-15 12:26:30 +00:00',
1,
1.5,
-74.00605774,
40.74533844,
-73.9868927,
40.75108337,
12,
false,
'mango mint pineapple juice'
],
[
'2015-01-15 12:09:17 +00:00',
'2015-01-15 12:21:25 +00:00',
1,
1.5,
-73.97014618,
40.78909683,
-73.95428467,
40.78998566,
9.5,
true,
'apple tree'
],
[
'2015-01-15 12:09:18 +00:00',
'2015-01-15 12:27:32 +00:00',
1,
2.9,
-73.9768219,
40.75079346,
-74.00571442,
40.7264595,
13.5,
true,
'orange peel'
],
[
'2015-01-15 12:09:18 +00:00',
'2015-01-15 12:34:06 +00:00',
1,
4.5,
-73.94947815,
40.78125381,
-73.98471832,
40.73619461,
19,
true,
'apple tree'
],
[
'2015-01-15 12:09:19 +00:00',
'2015-01-15 12:16:46 +00:00',
1,
1.2,
-73.99941254,
40.72211075,
-73.99222565,
40.73061752,
7,
true,
'banana peel'
],
[
'2015-01-15 12:09:19 +00:00',
'2015-01-15 12:18:59 +00:00',
1,
1.5,
-74.00551605,
40.73760223,
-74.00695038,
40.71791077,
8,
false,
'orange peel'
],
[
'2015-01-15 12:09:19 +00:00',
'2015-01-15 12:09:49 +00:00',
1,
0,
-73.97665405,
40.74756622,
-73.97657776,
40.74789429,
52,
true,
'apple tree'
],
[
'2015-01-15 12:09:19 +00:00',
'2015-01-15 12:19:40 +00:00',
1,
1,
-73.96508026,
40.77230072,
-73.96895599,
40.76291275,
8,
false,
'banana peel'
],
[
'2015-01-15 12:09:19 +00:00',
'2015-01-15 12:21:35 +00:00',
1,
0.5,
-73.97304535,
40.75561142,
-73.97867584,
40.75485992,
8.5,
false,
'orange peel'
],
[
'2015-01-15 12:09:20 +00:00',
'2015-01-15 12:16:18 +00:00',
1,
0.8,
-73.96009827,
40.76205063,
-73.95944214,
40.77100372,
6.5,
true,
'orange peel'
],
[
'2015-01-15 12:09:20 +00:00',
'2015-01-15 12:11:19 +00:00',
1,
0.3,
-73.98959351,
40.76280975,
-73.99365997,
40.75977707,
3.5,
true,
'orange peel'
],
[
'2015-01-15 12:09:21 +00:00',
'2015-01-15 12:26:54 +00:00',
1,
1.4,
-73.98150635,
40.74670792,
-73.97824097,
40.76279449,
12,
false,
'orange peel'
],
[
'2015-01-15 12:09:21 +00:00',
'2015-01-15 12:35:03 +00:00',
1,
5.5,
-74.01249695,
40.70261383,
-73.98406219,
40.76308823,
21.5,
true,
'orange peel'
],
[
'2015-01-15 13:08:41 +00:00',
'2015-01-15 13:26:26 +00:00',
1,
1.8,
-73.99486542,
40.72507477,
-73.99129486,
40.74486542,
12.5,
true,
'mango mint pineapple juice'
],
[
'2015-01-15 13:08:42 +00:00',
'2015-01-15 13:19:14 +00:00',
1,
1.3,
-73.97502136,
40.75313187,
-73.9878006,
40.73916626,
8.5,
false,
'banana peel'
],
[
'2015-01-15 13:08:43 +00:00',
'2015-01-15 13:17:41 +00:00',
1,
0.6,
-73.98260498,
40.73439026,
-73.97531128,
40.74148941,
7,
true,
'banana peel'
],
[
'2015-01-15 13:08:43 +00:00',
'2015-01-15 13:19:05 +00:00',
2,
1.3,
-73.98284912,
40.7354126,
-73.99924469,
40.7266922,
8.5,
false,
'mango mint pineapple juice'
],
[
'2015-01-15 13:08:43 +00:00',
'2015-01-15 13:34:05 +00:00',
1,
3.6,
-73.95719147,
40.78299713,
-73.99330902,
40.74977875,
17.5,
false,
'banana peel'
],
[
'2015-01-15 13:08:44 +00:00',
'2015-01-15 13:14:13 +00:00',
1,
0.5,
-73.98175812,
40.75990677,
-73.97349548,
40.75848007,
5,
true,
'orange peel'
],
[
'2015-01-15 13:08:44 +00:00',
'2015-01-15 13:17:26 +00:00',
1,
1.1,
-73.95582581,
40.78220749,
-73.95806885,
40.76962662,
7.5,
false,
'apple tree'
],
[
'2015-01-15 13:08:45 +00:00',
'2015-01-15 13:19:40 +00:00',
1,
1.9,
-73.96497345,
40.75543213,
-73.96150208,
40.77624893,
9,
false,
'orange peel'
],
[
'2015-01-15 13:08:45 +00:00',
'2015-01-15 13:23:14 +00:00',
1,
2.4,
-73.95355988,
40.77692032,
-73.98401642,
40.77029419,
11.5,
true,
'orange peel'
],
[
'2015-01-15 13:08:45 +00:00',
'2015-01-15 13:17:58 +00:00',
1,
0.3,
-73.97407532,
40.76476288,
-73.96971893,
40.76197052,
7,
false,
'orange peel'
],
[
'2015-01-15 13:08:46 +00:00',
'2015-01-15 13:26:23 +00:00',
1,
1.4,
-73.99007416,
40.73517609,
-73.99027252,
40.74991226,
11.5,
false,
'apple tree'
],
[
'2015-01-15 13:08:46 +00:00',
'2015-01-15 13:13:56 +00:00',
1,
0.9,
-73.96412659,
40.79253387,
-73.95281982,
40.78904343,
5.5,
false,
'banana peel'
],
[
'2015-01-15 13:08:46 +00:00',
'2015-01-15 13:15:29 +00:00',
3,
1.2,
-73.97790527,
40.75739288,
-73.98935699,
40.74221802,
7,
false,
'apple tree'
],
[
'2015-01-15 13:08:47 +00:00',
'2015-01-15 13:26:21 +00:00',
1,
1.7,
-73.98762512,
40.74157333,
-73.9746933,
40.76345444,
12,
true,
'banana peel'
],
[
'2015-01-15 13:08:47 +00:00',
'2015-01-15 13:21:41 +00:00',
1,
0.6,
-73.98404694,
40.7493248,
-73.98500824,
40.75600052,
9,
true,
'banana peel'
],
[
'2015-01-15 13:08:48 +00:00',
'2015-01-15 13:23:10 +00:00',
1,
1.8,
-73.97254944,
40.76478958,
-73.99060059,
40.74874496,
10.5,
true,
'mango mint pineapple juice'
],
[
'2015-01-15 13:08:49 +00:00',
'2015-01-15 13:13:00 +00:00',
1,
0.9,
-73.96455383,
40.77020264,
-73.95604706,
40.78163147,
5.5,
true,
'apple tree'
],
[
'2015-01-15 13:08:49 +00:00',
'2015-01-15 13:23:34 +00:00',
1,
0.9,
-73.98060608,
40.73400497,
-73.98609924,
40.7435112,
10,
false,
'banana peel'
],
[
'2015-01-15 13:08:49 +00:00',
'2015-01-15 13:30:58 +00:00',
4,
2.5,
-73.97557068,
40.76527786,
-73.94625854,
40.7804451,
15.5,
false,
'banana peel'
],
[
'2015-01-15 13:08:49 +00:00',
'2015-01-15 13:13:42 +00:00',
1,
1.2,
-73.96572876,
40.79036331,
-73.97844696,
40.77741241,
6.5,
true,
'apple tree'
],
[
'2015-01-15 13:08:49 +00:00',
'2015-01-15 13:29:01 +00:00',
1,
1.6,
-73.96913147,
40.76098633,
-73.98926544,
40.75290298,
13,
true,
'mango mint pineapple juice'
],
[
'2015-01-15 13:08:50 +00:00',
'2015-01-15 13:32:26 +00:00',
2,
6.1,
-74.01412964,
40.71213531,
-73.97323608,
40.78503036,
22,
true,
'orange peel'
],
[
'2015-01-15 13:28:31 +00:00',
'2015-01-15 13:58:40 +00:00',
1,
3.1,
-73.99403381,
40.75093079,
-73.99698639,
40.71781158,
19.5,
true,
'orange peel'
],
[
'2015-01-15 13:28:32 +00:00',
'2015-01-15 13:44:36 +00:00',
1,
3.2,
-73.94548798,
40.77409363,
-73.98342133,
40.74536514,
14.5,
true,
'mango mint pineapple juice'
],
[
'2015-01-15 13:28:32 +00:00',
'2015-01-15 13:32:56 +00:00',
1,
0.6,
-73.96230316,
40.76759338,
-73.96643829,
40.76444244,
5,
false,
'orange peel'
],
[
'2015-01-15 13:28:33 +00:00',
'2015-01-15 13:32:51 +00:00',
1,
0.6,
-73.96742249,
40.7690239,
-73.96128082,
40.77759552,
5,
false,
'banana peel'
],
[
'2015-01-15 13:28:33 +00:00',
'2015-01-15 13:49:49 +00:00',
1,
1.1,
-73.97927094,
40.76162338,
-73.97733307,
40.75179291,
13,
false,
'orange peel'
],
[
'2015-01-15 13:28:33 +00:00',
'2015-01-15 13:44:36 +00:00',
1,
1.9,
-73.98165131,
40.77998734,
-73.99479675,
40.75537109,
11.5,
false,
'orange peel'
],
[
'2015-01-15 13:28:34 +00:00',
'2015-01-15 13:30:29 +00:00',
1,
0.4,
-73.9751358,
40.77751541,
-73.98141479,
40.77855301,
3.5,
true,
'orange peel'
],
[
'2015-01-15 13:28:34 +00:00',
'2015-01-15 13:46:03 +00:00',
1,
0.6,
-73.9865036,
40.75201797,
-73.98056793,
40.76026917,
11,
false,
'apple tree'
],
[
'2015-01-15 13:28:34 +00:00',
'2015-01-15 13:53:30 +00:00',
1,
9.1,
-73.96624756,
40.76560974,
-73.87232208,
40.77435303,
29,
true,
'apple tree'
],
[
'2015-01-15 13:28:34 +00:00',
'2015-01-15 13:43:58 +00:00',
1,
1.7,
-73.97924042,
40.76350784,
-73.98809814,
40.74477005,
11,
false,
'banana peel'
],
[
'2015-01-15 13:28:35 +00:00',
'2015-01-15 13:55:10 +00:00',
1,
2.6,
-74.00570679,
40.74041748,
-73.97388458,
40.75088882,
17,
false,
'mango mint pineapple juice'
],
[
'2015-01-15 13:28:35 +00:00',
'2015-01-15 13:46:07 +00:00',
1,
4.9,
-74.00881195,
40.70446777,
-73.98458862,
40.74863434,
18.5,
true,
'apple tree'
],
[
'2015-01-15 13:28:35 +00:00',
'2015-01-15 13:42:22 +00:00',
1,
1.3,
-73.99788666,
40.74094391,
-73.98456573,
40.74730682,
10,
true,
'apple tree'
],
[
'2015-01-15 13:28:36 +00:00',
'2015-01-15 13:35:23 +00:00',
3,
1.1,
-73.99003601,
40.73796463,
-73.99784851,
40.72401047,
6.5,
false,
'orange peel'
],
[
'2015-01-15 14:48:02 +00:00',
'2015-01-15 15:02:15 +00:00',
1,
1.7,
-73.96941376,
40.76636124,
-73.95368958,
40.78794479,
10.5,
false,
'banana peel'
],
[
'2015-01-15 14:48:02 +00:00',
'2015-01-15 15:35:10 +00:00',
1,
18.7,
-73.78253937,
40.64458466,
-73.99058533,
40.72745132,
52,
true,
'banana peel'
],
[
'2015-01-15 14:48:02 +00:00',
'2015-01-15 14:58:13 +00:00',
1,
1.7,
-73.97823334,
40.7544632,
-73.98209381,
40.77376556,
9,
true,
'orange peel'
],
[
'2015-01-15 14:48:02 +00:00',
'2015-01-15 16:02:16 +00:00',
1,
17.9,
-73.9863205,
40.72613144,
-73.78303528,
40.64387894,
52,
false,
'banana peel'
],
[
'2015-01-15 14:48:02 +00:00',
'2015-01-15 14:52:03 +00:00',
4,
0.7,
-73.97944641,
40.77158737,
-73.98216248,
40.76358795,
4.5,
true,
'orange peel'
],
[
'2015-01-15 14:48:03 +00:00',
'2015-01-15 14:54:40 +00:00',
1,
0.7,
-73.98408508,
40.73751831,
-73.9903183,
40.73723984,
6,
true,
'banana peel'
],
[
'2015-01-15 14:48:03 +00:00',
'2015-01-15 15:07:23 +00:00',
1,
2.1,
-74.00341034,
40.72686768,
-73.98469543,
40.75408173,
13,
true,
'mango mint pineapple juice'
],
[
'2015-01-15 14:48:03 +00:00',
'2015-01-15 15:28:40 +00:00',
2,
11.6,
-73.77835846,
40.64676285,
-73.95575714,
40.65594101,
39,
false,
'orange peel'
],
[
'2015-01-15 14:48:03 +00:00',
'2015-01-15 14:50:48 +00:00',
1,
0.7,
-73.96367645,
40.77734756,
-73.97085571,
40.78310394,
4.5,
false,
'apple tree'
],
[
'2015-01-15 14:48:04 +00:00',
'2015-01-15 15:12:15 +00:00',
2,
2.7,
-73.96225739,
40.77906799,
-73.99147034,
40.75802994,
16,
true,
'banana peel'
],
[
'2015-01-15 14:48:04 +00:00',
'2015-01-15 14:52:41 +00:00',
1,
0.6,
-73.97543335,
40.75215912,
-73.96953583,
40.75200653,
5,
false,
'mango mint pineapple juice'
],
[
'2015-01-15 14:48:04 +00:00',
'2015-01-15 14:54:52 +00:00',
1,
0.8,
-73.97546387,
40.75792694,
-73.97644043,
40.75066376,
6,
false,
'mango mint pineapple juice'
],
[
'2015-01-15 14:48:04 +00:00',
'2015-01-15 14:54:11 +00:00',
1,
0.7,
-73.98100281,
40.75943375,
-73.99040222,
40.75676727,
5.5,
false,
'banana peel'
],
[
'2015-01-15 14:48:05 +00:00',
'2015-01-15 14:52:33 +00:00',
1,
0.8,
-73.96006012,
40.76252747,
-73.95191193,
40.77336502,
5.5,
false,
'mango mint pineapple juice'
],
[
'2015-01-15 14:48:05 +00:00',
'2015-01-15 15:02:12 +00:00',
1,
2.6,
-73.95397949,
40.76646423,
-73.98020935,
40.77532959,
11.5,
true,
'orange peel'
],
[
'2015-01-15 14:48:05 +00:00',
'2015-01-15 15:17:12 +00:00',
1,
10.2,
-73.87229156,
40.77449799,
-73.9723587,
40.76523972,
32.5,
false,
'apple tree'
],
[
'2015-01-15 14:48:06 +00:00',
'2015-01-15 14:58:55 +00:00',
1,
1.3,
-73.99183655,
40.7434082,
-73.97814178,
40.75121689,
8.5,
false,
'orange peel'
],
[
'2015-01-15 14:48:06 +00:00',
'2015-01-15 15:03:19 +00:00',
1,
2,
-73.99678802,
40.76287842,
-73.98536682,
40.7436142,
11.5,
false,
'orange peel'
],
[
'2015-01-15 14:48:06 +00:00',
'2015-01-15 14:56:09 +00:00',
1,
0.8,
-73.97661591,
40.78069687,
-73.98725128,
40.77615738,
6.5,
false,
'apple tree'
],
[
'2015-01-15 13:28:37 +00:00',
'2015-01-15 13:39:20 +00:00',
1,
1.3,
-73.96536255,
40.76590729,
-73.95040131,
40.77541351,
8.5,
false,
'orange peel'
],
[
'2015-01-15 13:28:37 +00:00',
'2015-01-15 13:37:49 +00:00',
1,
2.9,
-73.95761871,
40.76847076,
-73.97514343,
40.73571014,
11.5,
false,
'banana peel'
],
[
'2015-01-15 13:28:37 +00:00',
'2015-01-15 13:52:56 +00:00',
2,
2.4,
-73.99796295,
40.75651932,
-73.9693985,
40.76195526,
16,
true,
'apple tree'
],
[
'2015-01-15 13:28:37 +00:00',
'2015-01-15 13:57:15 +00:00',
1,
3.3,
-74.01082611,
40.70900726,
-73.98595428,
40.75083542,
19,
true,
'mango mint pineapple juice'
],
[
'2015-01-15 13:28:37 +00:00',
'2015-01-15 13:33:57 +00:00',
1,
0.5,
-73.97025299,
40.75899887,
-73.97548676,
40.75217438,
5,
false,
'mango mint pineapple juice'
],
[
'2015-01-15 13:28:38 +00:00',
'2015-01-15 14:13:39 +00:00',
1,
10.4,
-73.98912048,
40.75639343,
-73.87306213,
40.77438354,
38.5,
false,
'banana peel'
],
[
'2015-01-15 11:08:27 +00:00',
'2015-01-15 11:13:04 +00:00',
1,
0.57,
-73.99191284,
40.73366165,
-73.99928284,
40.73590088,
5,
true,
'apple tree'
],
[
'2015-01-15 11:08:27 +00:00',
'2015-01-15 11:17:22 +00:00',
5,
1.36,
-73.97545624,
40.78210831,
-73.98251343,
40.76395035,
8,
false,
'orange peel'
],
[
'2015-01-15 15:47:38 +00:00',
'2015-01-15 16:13:56 +00:00',
2,
3.4,
-73.98490143,
40.76909256,
-73.95078278,
40.78242874,
18.5,
false,
'orange peel'
],
[
'2015-01-15 15:47:38 +00:00',
'2015-01-15 16:11:28 +00:00',
1,
4.9,
-73.98446655,
40.75934601,
-73.94443512,
40.8130722,
19.5,
false,
'orange peel'
],
[
'2015-01-15 15:47:38 +00:00',
'2015-01-15 15:56:08 +00:00',
1,
1.1,
-73.95365906,
40.76678848,
-73.9686203,
40.76480484,
7.5,
false,
'orange peel'
],
[
'2015-01-15 15:47:39 +00:00',
'2015-01-15 16:01:53 +00:00',
4,
1.6,
-74.00598907,
40.74010849,
-74.00376129,
40.7591362,
10.5,
false,
'banana peel'
],
[
'2015-01-15 15:47:39 +00:00',
'2015-01-15 16:06:25 +00:00',
1,
2.5,
-73.98991394,
40.7408638,
-73.96156311,
40.75641632,
13.5,
true,
'banana peel'
],
[
'2015-01-15 15:47:40 +00:00',
'2015-01-15 15:54:36 +00:00',
1,
0.6,
-73.9804306,
40.76034927,
-73.97067261,
40.75859451,
6,
false,
'banana peel'
],
[
'2015-01-15 15:47:40 +00:00',
'2015-01-15 15:57:34 +00:00',
1,
1.2,
-73.98097992,
40.73818588,
-73.98110962,
40.75061417,
8,
true,
'banana peel'
],
[
'2015-01-15 15:47:40 +00:00',
'2015-01-15 15:56:19 +00:00',
1,
1.4,
-73.98873138,
40.75407028,
-74.00460052,
40.73969269,
7.5,
true,
'apple tree'
],
[
'2015-01-15 15:47:41 +00:00',
'2015-01-15 16:00:53 +00:00',
1,
1.4,
-73.9916153,
40.75009918,
-73.99889374,
40.7610817,
9.5,
false,
'orange peel'
],
[
'2015-01-15 15:47:41 +00:00',
'2015-01-15 15:57:32 +00:00',
1,
1.3,
-73.9928894,
40.75384521,
-73.97768402,
40.76447296,
8,
true,
'mango mint pineapple juice'
],
[
'2015-01-15 15:47:41 +00:00',
'2015-01-15 16:02:12 +00:00',
2,
2.1,
-73.987854,
40.75493622,
-73.99325562,
40.73668671,
11,
true,
'orange peel'
],
[
'2015-01-15 15:47:41 +00:00',
'2015-01-15 17:08:39 +00:00',
1,
8.8,
-73.98908997,
40.75322723,
-73.8707962,
40.77392578,
50,
false,
'orange peel'
],
[
'2015-01-15 15:47:41 +00:00',
'2015-01-15 15:54:06 +00:00',
1,
1.5,
-73.98497009,
40.76370239,
-73.97200775,
40.78221512,
7,
true,
'banana peel'
],
[
'2015-01-15 15:47:42 +00:00',
'2015-01-15 16:17:48 +00:00',
1,
9.2,
-73.8709259,
40.77367401,
-73.95968628,
40.7660408,
31.5,
false,
'mango mint pineapple juice'
],
[
'2015-01-15 15:47:42 +00:00',
'2015-01-15 15:53:42 +00:00',
2,
0.7,
-73.95475006,
40.77365875,
-73.96230316,
40.77204895,
5.5,
true,
'apple tree'
],
[
'2015-01-15 15:47:42 +00:00',
'2015-01-15 15:52:40 +00:00',
1,
0.6,
-73.96900177,
40.76102829,
-73.97166443,
40.75520325,
5,
false,
'orange peel'
],
[
'2015-01-15 15:47:43 +00:00',
'2015-01-15 16:02:21 +00:00',
1,
2,
-73.98990631,
40.77584076,
-73.97659302,
40.7581749,
11,
false,
'mango mint pineapple juice'
],
[
'2015-01-15 15:47:43 +00:00',
'2015-01-15 17:12:21 +00:00',
1,
17.2,
-73.97954559,
40.74938965,
-73.77823639,
40.64494324,
52,
false,
'orange peel'
],
[
'2015-01-15 15:47:43 +00:00',
'2015-01-15 15:52:40 +00:00',
1,
0.7,
-73.96670532,
40.80432129,
-73.97161102,
40.79508209,
5.5,
false,
'orange peel'
],
[
'2015-01-15 15:47:43 +00:00',
'2015-01-15 16:01:34 +00:00',
1,
1.6,
-73.97691345,
40.75243378,
-73.9618454,
40.76618576,
10.5,
true,
'banana peel'
],
[
'2015-01-15 15:47:43 +00:00',
'2015-01-15 16:05:15 +00:00',
1,
5.6,
-73.97419739,
40.75210953,
-74.01583099,
40.70493317,
19,
false,
'mango mint pineapple juice'
],
[
'2015-01-15 15:47:44 +00:00',
'2015-01-15 15:51:25 +00:00',
3,
0.6,
-73.98048401,
40.73053741,
-73.99012756,
40.73469543,
4.5,
true,
'orange peel'
],
[
'2015-01-15 11:08:28 +00:00',
'2015-01-15 11:22:08 +00:00',
5,
1.02,
-73.96199036,
40.76301956,
-73.97537231,
40.76025009,
9.5,
true,
'orange peel'
],
[
'2015-01-15 11:08:28 +00:00',
'2015-01-15 11:12:03 +00:00',
2,
0.71,
-73.96024323,
40.81326675,
-73.96228027,
40.80551529,
5,
false,
'mango mint pineapple juice'
],
[
'2015-01-15 11:08:28 +00:00',
'2015-01-15 11:45:14 +00:00',
4,
3.29,
-73.99386597,
40.72647858,
-73.97525024,
40.76517868,
22.5,
true,
'banana peel'
],
[
'2015-01-15 11:08:28 +00:00',
'2015-01-15 11:16:27 +00:00',
6,
1.69,
-73.97033691,
40.76505661,
-73.95837402,
40.78314972,
7.5,
false,
'orange peel'
],
[
'2015-01-15 11:08:29 +00:00',
'2015-01-15 11:31:28 +00:00',
1,
3.45,
-73.97387695,
40.76417923,
-73.99996185,
40.72422028,
16.5,
false,
'banana peel'
],
[
'2015-01-15 11:08:29 +00:00',
'2015-01-15 11:19:43 +00:00',
1,
1.91,
-73.98752594,
40.7325058,
-74.00524902,
40.71485138,
9.5,
false,
'apple tree'
],
[
'2015-01-15 11:08:30 +00:00',
'2015-01-15 11:20:15 +00:00',
1,
1.71,
-73.99472046,
40.75059509,
-73.97688293,
40.76406479,
9.5,
false,
'banana peel'
],
[
'2015-01-15 11:08:30 +00:00',
'2015-01-15 11:23:16 +00:00',
1,
1.92,
-73.97637177,
40.76343155,
-73.99304962,
40.74539948,
11,
false,
'orange peel'
],
[
'2015-01-15 11:08:30 +00:00',
'2015-01-15 11:10:32 +00:00',
5,
0.27,
-73.95477295,
40.76545715,
-73.95536804,
40.76841354,
3.5,
false,
'banana peel'
],
[
'2015-01-15 11:08:30 +00:00',
'2015-01-15 11:22:21 +00:00',
1,
1.44,
-73.95503235,
40.77841568,
-73.97670746,
40.78928375,
10,
true,
'mango mint pineapple juice'
],
[
'2015-01-15 11:08:31 +00:00',
'2015-01-15 11:17:10 +00:00',
1,
2.17,
-73.95035553,
40.77127838,
-73.96971893,
40.75237656,
9,
true,
'banana peel'
],
[
'2015-01-15 11:08:31 +00:00',
'2015-01-15 11:22:19 +00:00',
1,
2.13,
-73.95650482,
40.77070236,
-73.9798584,
40.75445557,
10.5,
true,
'banana peel'
],
[
'2015-01-15 11:08:31 +00:00',
'2015-01-15 12:07:41 +00:00',
1,
18.23,
-73.78193665,
40.64471054,
-73.99067688,
40.72071075,
52,
true,
'banana peel'
],
[
'2015-01-15 11:08:31 +00:00',
'2015-01-15 11:24:35 +00:00',
1,
1.01,
-73.97892761,
40.75037766,
-73.99127197,
40.75544739,
10.5,
true,
'banana peel'
],
[
'2015-01-15 11:08:31 +00:00',
'2015-01-15 11:14:02 +00:00',
5,
0.88,
-73.9934845,
40.73516464,
-73.99437714,
40.74361038,
5.5,
false,
'orange peel'
],
[
'2015-01-15 11:08:33 +00:00',
'2015-01-15 11:16:14 +00:00',
5,
1.51,
-73.97502899,
40.76099014,
-73.98868561,
40.74270248,
7.5,
true,
'orange peel'
],
[
'2015-01-15 11:08:33 +00:00',
'2015-01-15 11:52:22 +00:00',
1,
8.14,
-73.95440674,
40.76395798,
-73.8562851,
40.75259018,
33.5,
false,
'apple tree'
],
[
'2015-01-15 11:08:33 +00:00',
'2015-01-15 11:48:04 +00:00',
5,
15.13,
-73.95636749,
40.78319931,
-73.98403931,
40.63248825,
46,
true,
'banana peel'
],
[
'2015-01-15 11:08:34 +00:00',
'2015-01-15 11:30:55 +00:00',
1,
2.47,
-74.00182343,
40.75087738,
-73.9638443,
40.77070618,
15.5,
true,
'orange peel'
],
[
'2015-01-15 11:08:34 +00:00',
'2015-01-15 11:15:45 +00:00',
1,
1.27,
-73.97843933,
40.74962616,
-73.99088287,
40.73462677,
7,
false,
'orange peel'
],
[
'2015-01-15 14:19:58 +00:00',
'2015-01-15 14:30:43 +00:00',
3,
1.9,
-73.9719696,
40.78208542,
-73.9462738,
40.78117752,
9.5,
true,
'mango mint pineapple juice'
],
[
'2015-01-15 14:19:59 +00:00',
'2015-01-15 14:26:18 +00:00',
1,
1.4,
-73.96221161,
40.75906372,
-73.95623016,
40.77560425,
6.5,
false,
'orange peel'
],
[
'2015-01-15 14:20:00 +00:00',
'2015-01-15 14:29:24 +00:00',
1,
1,
-73.98879242,
40.74028015,
-73.99024963,
40.72889328,
7.5,
true,
'banana peel'
],
[
'2015-01-15 14:20:00 +00:00',
'2015-01-15 14:24:37 +00:00',
1,
0.7,
-73.96638489,
40.80471039,
-73.97330475,
40.79518509,
5,
false,
'orange peel'
],
[
'2015-01-15 14:20:00 +00:00',
'2015-01-15 14:25:07 +00:00',
1,
0.6,
-73.98246765,
40.77352142,
-73.9892807,
40.76781464,
5.5,
false,
'banana peel'
],
[
'2015-01-15 14:20:00 +00:00',
'2015-01-15 15:08:06 +00:00',
1,
20.8,
-73.97194672,
40.75946808,
-73.78960419,
40.64704132,
52,
true,
'orange peel'
],
[
'2015-01-15 14:20:01 +00:00',
'2015-01-15 14:30:10 +00:00',
1,
1.5,
-73.97073364,
40.76262283,
-73.95559692,
40.7793045,
8.5,
false,
'mango mint pineapple juice'
],
[
'2015-01-15 14:20:02 +00:00',
'2015-01-15 14:44:57 +00:00',
1,
4.9,
-73.95665741,
40.76708221,
-73.96069336,
40.81632614,
20.5,
false,
'mango mint pineapple juice'
],
[
'2015-01-15 14:20:02 +00:00',
'2015-01-15 14:25:28 +00:00',
1,
1.5,
-73.97408295,
40.77892685,
-73.95641327,
40.7840538,
6.5,
true,
'banana peel'
],
[
'2015-01-15 14:20:02 +00:00',
'2015-01-15 15:05:17 +00:00',
1,
16.2,
-73.97773743,
40.76435471,
-73.79027557,
40.64681244,
52,
true,
'banana peel'
],
[
'2015-01-15 14:20:04 +00:00',
'2015-01-15 14:30:20 +00:00',
1,
0.9,
-73.96961975,
40.75938034,
-73.9821701,
40.76047134,
7.5,
true,
'banana peel'
],
[
'2015-01-15 14:20:06 +00:00',
'2015-01-15 14:23:11 +00:00',
1,
0.2,
-73.97293091,
40.79558563,
-73.97042847,
40.79651642,
4,
true,
'apple tree'
],
[
'2015-01-15 14:20:06 +00:00',
'2015-01-15 14:25:16 +00:00',
1,
0.7,
-73.74542999,
40.58639145,
-73.74523926,
40.58619308,
5.5,
false,
'orange peel'
],
[
'2015-01-15 14:20:06 +00:00',
'2015-01-15 14:25:32 +00:00',
1,
0.7,
-73.98985291,
40.73440552,
-73.99806976,
40.73797989,
5.5,
true,
'apple tree'
],
[
'2015-01-15 14:20:07 +00:00',
'2015-01-15 14:31:34 +00:00',
1,
1.2,
-73.96231842,
40.77913666,
-73.9730835,
40.76346207,
9,
true,
'orange peel'
],
[
'2015-01-15 14:20:08 +00:00',
'2015-01-15 14:43:34 +00:00',
1,
4.3,
-73.97229004,
40.74654388,
-74.00812531,
40.71973419,
19,
true,
'apple tree'
],
[
'2015-01-15 14:20:08 +00:00',
'2015-01-15 14:23:44 +00:00',
1,
0.9,
-74.00809479,
40.73937225,
-74.00430298,
40.72974777,
5,
true,
'banana peel'
],
[
'2015-01-15 11:09:27 +00:00',
'2015-01-15 11:18:50 +00:00',
2,
0.82,
-73.98420715,
40.74626923,
-73.97663116,
40.75596619,
7,
true,
'apple tree'
],
[
'2015-01-15 11:09:28 +00:00',
'2015-01-15 11:21:16 +00:00',
5,
1.48,
-73.9804306,
40.74560547,
-73.98104858,
40.72947693,
9,
true,
'banana peel'
],
[
'2015-01-15 11:09:28 +00:00',
'2015-01-15 11:17:09 +00:00',
1,
0.85,
-73.98188782,
40.74059677,
-73.98110199,
40.74951172,
6.5,
true,
'apple tree'
],
[
'2015-01-15 11:09:28 +00:00',
'2015-01-15 11:12:01 +00:00',
1,
0.39,
-73.96213531,
40.76808167,
-73.96128845,
40.76436234,
3.5,
false,
'banana peel'
],
[
'2015-01-15 11:09:28 +00:00',
'2015-01-15 11:16:34 +00:00',
4,
1.08,
-73.98171997,
40.75831985,
-73.96775055,
40.76005936,
6.5,
false,
'orange peel'
],
[
'2015-01-15 11:09:32 +00:00',
'2015-01-15 11:45:33 +00:00',
1,
4.35,
-73.92948914,
40.75658035,
-73.99256134,
40.75829315,
23,
false,
'orange peel'
],
[
'2015-01-15 11:09:32 +00:00',
'2015-01-15 11:27:44 +00:00',
1,
0.87,
-73.97641754,
40.74801636,
-73.97517395,
40.74153519,
11.5,
true,
'apple tree'
],
[
'2015-01-15 11:09:32 +00:00',
'2015-01-15 11:16:36 +00:00',
1,
0.96,
-73.96311951,
40.76504517,
-73.95355225,
40.77010727,
6.5,
false,
'mango mint pineapple juice'
],
[
'2015-01-15 11:09:34 +00:00',
'2015-01-15 11:28:22 +00:00',
1,
1.2,
-73.99105835,
40.74952698,
-73.97509003,
40.74176025,
12,
false,
'mango mint pineapple juice'
],
[
'2015-01-15 11:09:34 +00:00',
'2015-01-15 11:39:55 +00:00',
1,
7.47,
-74.01488495,
40.71375275,
-73.97367859,
40.76446533,
28,
true,
'orange peel'
]
]
};
export const sampleTripDataConfig = {
version: 'v1',
config: {
visState: {
layers: [
{
type: 'heatmap',
config: {
dataId: 'test_trip_data',
columns: {
lat: 'pickup_latitude',
lng: 'pickup_longitude'
},
isVisible: true
}
},
{
type: 'point',
config: {
dataId: 'test_trip_data',
columns: {
lat: 'pickup_latitude',
lng: 'pickup_longitude'
},
color: [255, 0, 0],
label: 'pickup',
isVisible: true,
visConfig: {
colorRange: {
colors: ['#FF000', '#00FF00', '#0000FF', '#555555', '#111111', '#222222'],
colorMap: [
['apple tree', '#FF000'],
['banana peel', '#00FF00'],
['banana peel 2', '#0000FF'],
['mango mint pineapple juice', '#555555'],
['orange peel', '#111111'],
['orange peel 0', '#222222']
]
}
}
},
visualChannels: {
colorField: {
name: 'fare_type',
type: 'string'
},
colorScale: 'custom'
}
},
{
type: 'point',
config: {
dataId: 'test_trip_data',
columns: {
lat: 'dropoff_latitude',
lng: 'dropoff_longitude'
},
color: [0, 0, 255],
label: 'dropoff',
isVisible: true
}
},
{
type: 'cluster',
config: {
dataId: 'test_trip_data',
columns: {
lat: 'pickup_latitude',
lng: 'pickup_longitude'
},
isVisible: true
}
},
{
type: 'arc',
config: {
dataId: 'test_trip_data',
label: 'pickup -> dropoff',
columns: {
lat0: 'pickup_latitude',
lng0: 'pickup_longitude',
lat1: 'dropoff_latitude',
lng1: 'dropoff_longitude'
},
color: [255, 0, 0],
isVisible: true,
visConfig: {
targetColor: [0, 0, 255]
}
}
}
],
filters: [
{
dataId: 'test_trip_data',
name: 'tpep_pickup_datetime',
view: 'enlarged'
},
{
dataId: 'test_trip_data',
name: 'passenger_count'
},
{
dataId: 'test_trip_data',
name: 'fare_type',
value: ['orange peel', 'apple tree']
},
{
dataId: 'test_trip_data',
name: 'is_completed',
value: true
}
]
},
mapStyle: {
styleType: '41fv96u',
visibleLayerGroups: {
label: false,
road: false,
border: false,
building: true,
water: true,
land: true,
'3d building': false
},
mapStyles: {
'41fv96u': {
accessToken: null,
custom: true,
icon: 'https://api.mapbox.com/styles/v1/MAPBOX_USER/cjg0ks54x300a2squ8fr9vhvq/static/-122.3391,37.7922,9,0,0/400x300?access_token=ACCESS_TOKEN&logo=false&attribution=false',
id: '41fv96u',
label: 'Outdoors',
url: 'mapbox://styles/MAPBOX_USER/cjhnxdcfy4ug62sn6qdfjutob'
}
}
}
}
};
================================================
FILE: examples/demo-app/src/factories/load-data-modal.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {LoadDataModalFactory, withState} from '@kepler.gl/components';
import {LOADING_METHODS} from '../constants/default-settings';
import SampleMapGallery from '../components/load-data-modal/sample-data-viewer';
import LoadRemoteMap from '../components/load-data-modal/load-remote-map';
import SampleMapsTab from '../components/load-data-modal/sample-maps-tab';
import {loadRemoteMap, loadSample, loadSampleConfigurations} from '../actions';
const CustomLoadDataModalFactory = (...deps) => {
const LoadDataModal = LoadDataModalFactory(...deps);
const defaultLoadingMethods = LoadDataModal.defaultLoadingMethods;
const additionalMethods = {
remote: {
id: LOADING_METHODS.remote,
label: 'modal.loadData.remote',
elementType: LoadRemoteMap
},
sample: {
id: LOADING_METHODS.sample,
label: 'modal.loadData.sample',
elementType: SampleMapGallery,
tabElementType: SampleMapsTab
}
};
// add more loading methods
const loadingMethods = [
defaultLoadingMethods.find(lm => lm.id === 'upload'),
defaultLoadingMethods.find(lm => lm.id === 'tileset'),
additionalMethods.remote,
defaultLoadingMethods.find(lm => lm.id === 'storage'),
additionalMethods.sample
];
return withState(
[],
state => ({...state.demo.app, ...state.demo.keplerGl.map.uiState, loadingMethods}),
{
onLoadSample: loadSample,
onLoadRemoteMap: loadRemoteMap,
loadSampleConfigurations
}
)(LoadDataModal);
};
CustomLoadDataModalFactory.deps = LoadDataModalFactory.deps;
export function replaceLoadDataModal() {
return [LoadDataModalFactory, CustomLoadDataModalFactory];
}
================================================
FILE: examples/demo-app/src/factories/map-control.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React from 'react';
import styled from 'styled-components';
import {
withState,
MapControlFactory,
EffectControlFactory,
EffectManagerFactory
} from '@kepler.gl/components';
import {AiAssistantControlFactory} from '@kepler.gl/ai-assistant';
import {BannerMapPanel, SampleMapPanel} from '../components/map-control/map-control';
import SqlPanelControlFactory from '../components/map-control/sql-panel-control';
const StyledMapControlPanel = styled.div`
position: relative;
`;
const StyledMapControlContextPanel = styled.div`
max-height: 100%;
overflow: hidden;
display: flex;
flex-direction: column;
justify-content: space-between;
pointer-events: none !important; /* prevent padding from blocking input */
& > * {
/* all children should allow input */
pointer-events: all;
}
`;
const StyledMapControlOverlay = styled.div`
position: absolute;
display: flex;
top: ${props => props.top}px;
right: 0;
z-index: 1;
pointer-events: none !important; /* prevent padding from blocking input */
& > * {
/* all children should allow input */
pointer-events: all;
}
margin-top: ${props => (props.rightPanelVisible ? props.theme.rightPanelMarginTop : 0)}px;
margin-right: ${props => (props.rightPanelVisible ? props.theme.rightPanelMarginRight : 0)}px;
${props => (props.fullHeight ? 'height' : 'max-height')}: calc(100% - ${props =>
props.theme.rightPanelMarginTop + props.theme.bottomWidgetPaddingBottom}px);
.map-control {
${props => (props.rightPanelVisible ? 'padding-top: 0px;' : '')}
}
`;
CustomMapControlFactory.deps = [
EffectControlFactory,
EffectManagerFactory,
SqlPanelControlFactory,
AiAssistantControlFactory,
...MapControlFactory.deps
];
function CustomMapControlFactory(
EffectControl,
EffectManager,
SqlPanelControl,
AiAssistantControl,
...deps
) {
const MapControl = MapControlFactory(...deps);
const actionComponents = [
...(MapControl.defaultActionComponents ?? []),
EffectControl,
SqlPanelControl,
AiAssistantControl
];
const CustomMapControl = props => {
const showEffects = Boolean(props.mapControls?.effect?.active);
return (
{ }
{!props.isExport && props.currentSample ? : null}
{showEffects ? : null}
);
};
return withState([], state => ({...state.demo.app}))(CustomMapControl);
}
export function replaceMapControl() {
return [MapControlFactory, CustomMapControlFactory];
}
================================================
FILE: examples/demo-app/src/factories/panel-header.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {PanelHeaderFactory, Icons} from '@kepler.gl/components';
import {BUG_REPORT_LINK, USER_GUIDE_DOC} from '@kepler.gl/constants';
export function CustomPanelHeaderFactory(...deps) {
const PanelHeader = PanelHeaderFactory(...deps);
const defaultActionItems = PanelHeader.defaultProps.actionItems;
PanelHeader.defaultProps = {
...PanelHeader.defaultProps,
actionItems: [
{
id: 'bug',
iconComponent: Icons.Bug,
href: BUG_REPORT_LINK,
blank: true,
tooltip: 'Bug Report',
onClick: () => {}
},
{
id: 'docs',
iconComponent: Icons.Docs2,
href: USER_GUIDE_DOC,
blank: true,
tooltip: 'User Guide',
onClick: () => {}
},
defaultActionItems.find(item => item.id === 'storage'),
{
...defaultActionItems.find(item => item.id === 'save'),
label: null,
tooltip: 'Share'
}
]
};
return PanelHeader;
}
CustomPanelHeaderFactory.deps = PanelHeaderFactory.deps;
export function replacePanelHeader() {
return [PanelHeaderFactory, CustomPanelHeaderFactory];
}
================================================
FILE: examples/demo-app/src/main.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React from 'react';
import ReactDOM from 'react-dom/client';
import document from 'global/document';
import {Provider} from 'react-redux';
import {browserHistory, Router, Route} from 'react-router';
import {syncHistoryWithStore} from 'react-router-redux';
import store from './store';
import App from './app';
import {buildAppRoutes} from './utils/routes';
const history = syncHistoryWithStore(browserHistory, store);
const appRoute = buildAppRoutes(App);
const Root = () => (
{appRoute}
);
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render( );
================================================
FILE: examples/demo-app/src/reducers/index.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {combineReducers} from 'redux';
import {handleActions} from 'redux-actions';
import Task, {withTask} from 'react-palm/tasks';
import {aiAssistantReducer} from '@kepler.gl/ai-assistant';
import {EXPORT_MAP_FORMATS} from '@kepler.gl/constants';
import {processGeojson, processRowObject, processArrowTable} from '@kepler.gl/processors';
import keplerGlReducer, {combinedUpdaters, uiStateUpdaters} from '@kepler.gl/reducers';
import KeplerGlSchema from '@kepler.gl/schemas';
import {KeplerTable} from '@kepler.gl/table';
import {getApplicationConfig} from '@kepler.gl/utils';
// import {getApplicationConfig, initApplicationConfig} from '@kepler.gl/utils';
// import keplerGlDuckdbPlugin, {KeplerGlDuckDbTable, DuckDBWasmAdapter} from '@kepler.gl/duckdb';
import {
INIT,
LOAD_MAP_SAMPLE_FILE,
LOAD_REMOTE_RESOURCE_SUCCESS,
LOAD_REMOTE_DATASET_PROCESSED_SUCCESS,
LOAD_REMOTE_RESOURCE_ERROR,
SET_SAMPLE_LOADING_STATUS,
loadRemoteDatasetProcessedSuccessAction
} from '../actions';
import {CLOUD_PROVIDERS_CONFIGURATION} from '../constants/default-settings';
import {generateHashId} from '../utils/strings';
// initialize kepler demo-app with DuckDB plugin
/*
initApplicationConfig({
// Custom UI for DuckDB
plugins: [keplerGlDuckdbPlugin],
// async data ingestion to DuckDb
table: KeplerGlDuckDbTable,
// setup database for DuckDB plugin
database: new DuckDBWasmAdapter({
config: {
query: {
castBigIntToDouble: true
}
}
}),
// progressive loading is sync, doesn't wait properly for a dataset to be created in DuckDB
useArrowProgressiveLoading: false
});
*/
const {DEFAULT_MAP_CONTROLS} = uiStateUpdaters;
// INITIAL_APP_STATE
const initialAppState = {
appName: 'example',
loaded: false,
sampleMaps: [], // this is used to store sample maps fetch from a remote json file
isMapLoading: false, // determine whether we are loading a sample map,
error: null // contains error when loading/retrieving data/configuration
// {
// status: null,
// message: null
// }
};
// App reducer
export const appReducer = handleActions(
{
[INIT]: state => ({
...state,
loaded: true
}),
[LOAD_MAP_SAMPLE_FILE]: (state, action) => ({
...state,
sampleMaps: action.samples
}),
[SET_SAMPLE_LOADING_STATUS]: (state, action) => ({
...state,
isMapLoading: action.isMapLoading
})
},
initialAppState
);
const {DEFAULT_EXPORT_MAP} = uiStateUpdaters;
// combine app reducer and keplerGl reducer
// to mimic the reducer state of kepler.gl website
const demoReducer = combineReducers({
// mount keplerGl reducer
keplerGl: keplerGlReducer.initialState({
// In order to provide single file export functionality
// we are going to set the mapbox access token to be used
// in the exported file
uiState: {
exportMap: {
...DEFAULT_EXPORT_MAP,
[EXPORT_MAP_FORMATS.HTML]: {
...DEFAULT_EXPORT_MAP[[EXPORT_MAP_FORMATS.HTML]],
exportMapboxAccessToken: CLOUD_PROVIDERS_CONFIGURATION.EXPORT_MAPBOX_TOKEN
}
},
mapControls: {
...DEFAULT_MAP_CONTROLS,
// TODO find a better way not to add extra controls optionally - from plugin?
...((getApplicationConfig().plugins || []).some(p => p.name === 'duckdb')
? {
sqlPanel: {
active: false,
activeMapIndex: 0,
disableClose: false,
show: true
}
}
: {})
}
},
visState: {
loaders: [], // Add additional loaders.gl loaders here
loadOptions: {} // Add additional loaders.gl loader options here
}
}),
app: appReducer,
aiAssistant: aiAssistantReducer
});
async function loadRemoteResourceSuccessTask({
dataUrl,
datasetId,
processorMethod,
remoteDatasetConfig,
unprocessedData
}) {
if (dataUrl) {
const data = await processorMethod(unprocessedData);
return {
info: {
id: datasetId
},
data
};
}
// remote datasets like vector tile datasets
return remoteDatasetConfig;
}
const LOAD_REMOTE_RESOURCE_SUCCESS_TASK = Task.fromPromise(
loadRemoteResourceSuccessTask,
'LOAD_REMOTE_RESOURCE_SUCCESS_TASK'
);
// this can be moved into a action and call kepler.gl action
/**
* Used to load Kepler.gl demo examples
* @param state
* @param action {map: resultset, config, map}
* @returns {{app: {isMapLoading: boolean}, keplerGl: {map: (state|*)}}}
*/
export const loadRemoteResourceSuccess = (state, action) => {
// TODO: replace generate with a different function
const datasetId = action.options.id || generateHashId(6);
const {dataUrl} = action.options;
const {shape} = dataUrl ? action.response : {};
let processorMethod = processRowObject;
let unprocessedData = action.response;
unprocessedData = shape === 'object-row-table' ? action.response.data : unprocessedData;
if (dataUrl) {
const table = getApplicationConfig().table ?? KeplerTable;
if (typeof table.getFileProcessor === 'function') {
if (shape === 'arrow-table') {
// arrow processor from table plugin expects batches
unprocessedData = action.response.data.batches;
}
// use custom processors from table class
const processorResult = table.getFileProcessor(unprocessedData);
// TODO save processorResult.format here with the dataset
processorMethod = processorResult.processor;
} else {
if (shape === 'arrow-table') {
processorMethod = processArrowTable;
} else if (shape === 'object-row-table') {
processorMethod = processRowObject;
} else if (dataUrl.includes('.json') || dataUrl.includes('.geojson')) {
processorMethod = processGeojson;
} else {
throw new Error('Failed to select data processor');
}
}
}
// processorMethod can be async so create a task
const task = LOAD_REMOTE_RESOURCE_SUCCESS_TASK({
dataUrl,
datasetId,
processorMethod,
remoteDatasetConfig: action.remoteDatasetConfig,
unprocessedData
}).bimap(
datasets => loadRemoteDatasetProcessedSuccessAction({...action, datasets}),
() => {
throw new Error('loadRemoteResource data processor failed');
}
);
return withTask(state, task);
};
const loadRemoteDatasetProcessedSuccess = (state, action) => {
const {config, datasets, options} = action.payload;
const parsedConfig = config ? KeplerGlSchema.parseSavedConfig(config) : null;
// a hack to use minZoom and maxZoom from examples
if (parsedConfig?.mapState) {
if (typeof config?.config?.mapState?.maxZoom === 'number') {
parsedConfig.mapState.maxZoom = config.config.mapState.maxZoom;
}
if (typeof config?.config?.mapState?.minZoom === 'number') {
parsedConfig.mapState.minZoom = config.config.mapState.minZoom;
}
}
const keplerGlInstance = combinedUpdaters.addDataToMapUpdater(
state.keplerGl.map, // "map" is the id of your kepler.gl instance
{
payload: {
datasets,
config: parsedConfig,
options: {
centerMap: Boolean(!config)
}
}
}
);
return {
...state,
app: {
...state.app,
currentSample: options,
isMapLoading: false // we turn off the spinner
},
keplerGl: {
...state.keplerGl, // in case you keep multiple instances
map: keplerGlInstance
}
};
};
export const loadRemoteResourceError = (state, action) => {
const {error, url} = action;
const errorNote = {
type: 'error',
message: error.message || `Error loading ${url}`
};
return {
...state,
app: {
...state.app,
isMapLoading: false // we turn of the spinner
},
keplerGl: {
...state.keplerGl, // in case you keep multiple instances
map: {
...state.keplerGl.map,
uiState: uiStateUpdaters.addNotificationUpdater(state.keplerGl.map.uiState, {
payload: errorNote
})
}
}
};
};
const composedUpdaters = {
[LOAD_REMOTE_RESOURCE_SUCCESS]: loadRemoteResourceSuccess,
[LOAD_REMOTE_DATASET_PROCESSED_SUCCESS]: loadRemoteDatasetProcessedSuccess,
[LOAD_REMOTE_RESOURCE_ERROR]: loadRemoteResourceError
};
const composedReducer = (state, action) => {
if (composedUpdaters[action.type]) {
return composedUpdaters[action.type](state, action);
}
return demoReducer(state, action);
};
// export demoReducer to be combined in website app
export default composedReducer;
================================================
FILE: examples/demo-app/src/store.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {combineReducers, createStore, applyMiddleware, compose} from 'redux';
import {routerReducer, routerMiddleware} from 'react-router-redux';
import {browserHistory} from 'react-router';
import {createLogger} from 'redux-logger';
import thunk from 'redux-thunk';
import {enhanceReduxMiddleware} from '@kepler.gl/reducers';
// eslint-disable-next-line no-unused-vars
import Window from 'global/window';
import demoReducer from './reducers/index';
const reducers = combineReducers({
demo: demoReducer,
routing: routerReducer
});
export const middlewares = enhanceReduxMiddleware([thunk, routerMiddleware(browserHistory)]);
if (NODE_ENV === 'local') {
// Redux logger
const logger = createLogger({
collapsed: () => true // Collapse all actions for more compact log
});
middlewares.push(logger);
}
export const enhancers = [applyMiddleware(...middlewares)];
const initialState = {};
// eslint-disable-next-line prefer-const
let composeEnhancers = compose;
/**
* comment out code below to enable Redux Devtools
*/
if (Window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) {
composeEnhancers = Window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({
actionsBlacklist: [
'@@kepler.gl/MOUSE_MOVE',
'@@kepler.gl/UPDATE_MAP',
'@@kepler.gl/LAYER_HOVER'
]
});
}
export default createStore(reducers, initialState, composeEnhancers(...enhancers));
================================================
FILE: examples/demo-app/src/utils/routes.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {IndexRoute, Route} from 'react-router';
import React from 'react';
import Demo from '../app';
import {getCloudProvider, DEFAULT_CLOUD_PROVIDER} from '../cloud-providers';
export function onAuthEnterCallback(nextState, replace, callback) {
// TODO: detect auth provider
const authProvider = getCloudProvider(DEFAULT_CLOUD_PROVIDER);
// Check if the current tab was opened by our previous tab
if (window.opener) {
const {location} = nextState;
const token = authProvider.getAccessTokenFromLocation(location);
window.opener.postMessage({token}, location.origin);
}
callback();
}
export function buildAppRoutes(Component) {
return [
,
];
}
================================================
FILE: examples/demo-app/src/utils/strings.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
/**
* Generate a hash string based on number of character
* @param {number} count
* @returns {string} hash string
*/
export function generateHashId(count) {
return Math.random().toString(36).substr(count);
}
================================================
FILE: examples/demo-app/yarn.lock
================================================
# This file is generated by running "yarn install" inside your project.
# Manual changes might be lost - proceed with caution!
__metadata:
version: 8
cacheKey: 10c0
"@ai-sdk/anthropic@npm:^1.2.11":
version: 1.2.12
resolution: "@ai-sdk/anthropic@npm:1.2.12"
dependencies:
"@ai-sdk/provider": "npm:1.1.3"
"@ai-sdk/provider-utils": "npm:2.2.8"
peerDependencies:
zod: ^3.0.0
checksum: 10c0/da13e1ed3c03efe207dbb0fd5fe9f399e4119e6687ec1096418a33a7eeea3c5f912a51c74b185bba3c203b15ee0c1b9cdf649711815ff8e769e31af266ac00fb
languageName: node
linkType: hard
"@ai-sdk/deepseek@npm:^0.2.14":
version: 0.2.16
resolution: "@ai-sdk/deepseek@npm:0.2.16"
dependencies:
"@ai-sdk/openai-compatible": "npm:0.2.16"
"@ai-sdk/provider": "npm:1.1.3"
"@ai-sdk/provider-utils": "npm:2.2.8"
peerDependencies:
zod: ^3.0.0
checksum: 10c0/02bffba5e75f68e4eb13d74b302f61fdf4c976745e27b8816ae718da84b61d935c4dbe5bc6af91d348ce68107ba3ce4ec379b2689e13a050c4669d3d39122830
languageName: node
linkType: hard
"@ai-sdk/google@npm:^1.2.18":
version: 1.2.22
resolution: "@ai-sdk/google@npm:1.2.22"
dependencies:
"@ai-sdk/provider": "npm:1.1.3"
"@ai-sdk/provider-utils": "npm:2.2.8"
peerDependencies:
zod: ^3.0.0
checksum: 10c0/662005cb4d972e4048d496e9713cd0ff2828f8363c9f1449e5a8580523c34f9ab57126ad3129e4d535561aa1bac0ae0d68bb471c379be80f5a23d455eea49987
languageName: node
linkType: hard
"@ai-sdk/openai-compatible@npm:0.2.16":
version: 0.2.16
resolution: "@ai-sdk/openai-compatible@npm:0.2.16"
dependencies:
"@ai-sdk/provider": "npm:1.1.3"
"@ai-sdk/provider-utils": "npm:2.2.8"
peerDependencies:
zod: ^3.0.0
checksum: 10c0/03054b7d6960be64cd9788cc7ecde324a6c70b8d51df4c3252deba8f6c5b641fce1058ab89c4793bbb4f2237e4fe09d1f4966205015b75b04bb49931d49a4253
languageName: node
linkType: hard
"@ai-sdk/openai@npm:^1.3.21":
version: 1.3.21
resolution: "@ai-sdk/openai@npm:1.3.21"
dependencies:
"@ai-sdk/provider": "npm:1.1.3"
"@ai-sdk/provider-utils": "npm:2.2.7"
peerDependencies:
zod: ^3.0.0
checksum: 10c0/adba1dcfe26eaea09e3ebdf55d03f5008765e1b153f7fbf376b703d40cc16b574fc44f73507d2a0e8aef81fbe70d9f2ca0a4b482d8ba73d1ea78a7489d418a9c
languageName: node
linkType: hard
"@ai-sdk/provider-utils@npm:2.1.6":
version: 2.1.6
resolution: "@ai-sdk/provider-utils@npm:2.1.6"
dependencies:
"@ai-sdk/provider": "npm:1.0.7"
eventsource-parser: "npm:^3.0.0"
nanoid: "npm:^3.3.8"
secure-json-parse: "npm:^2.7.0"
peerDependencies:
zod: ^3.0.0
peerDependenciesMeta:
zod:
optional: true
checksum: 10c0/dacf9640c0ab2da69157d08c7db47f9ac82aa140780ad18d03b802a88ec9e81ce6f0626cb6f7139086013c5850f829f74e81783a6fe1e6a7e08d090f08479179
languageName: node
linkType: hard
"@ai-sdk/provider-utils@npm:2.2.7":
version: 2.2.7
resolution: "@ai-sdk/provider-utils@npm:2.2.7"
dependencies:
"@ai-sdk/provider": "npm:1.1.3"
nanoid: "npm:^3.3.8"
secure-json-parse: "npm:^2.7.0"
peerDependencies:
zod: ^3.23.8
checksum: 10c0/e89a4e03be59df56bfb15e25e761955ffabd39b350527dd3e27da89c35332d1db6eeffc596d2aa3e18a2f5535d79e8ddc4ad7066d6f05f490f7d10082f427f00
languageName: node
linkType: hard
"@ai-sdk/provider-utils@npm:2.2.8":
version: 2.2.8
resolution: "@ai-sdk/provider-utils@npm:2.2.8"
dependencies:
"@ai-sdk/provider": "npm:1.1.3"
nanoid: "npm:^3.3.8"
secure-json-parse: "npm:^2.7.0"
peerDependencies:
zod: ^3.23.8
checksum: 10c0/34c72bf5f23f2d3e7aef496da7099422ba3b3ff243c35511853e16c3f1528717500262eea32b19e3e09bc4452152a5f31e650512f53f08a5f5645d907bff429e
languageName: node
linkType: hard
"@ai-sdk/provider@npm:1.0.7":
version: 1.0.7
resolution: "@ai-sdk/provider@npm:1.0.7"
dependencies:
json-schema: "npm:^0.4.0"
checksum: 10c0/92d0a3cd4d577ca8028d7b8fb3c2b4b837be10fced5d66dbe67fe415b678d2ff039d32721b71b88389568729e707b35df81172908e2584f2e24ff20fcdcdeb65
languageName: node
linkType: hard
"@ai-sdk/provider@npm:1.1.3":
version: 1.1.3
resolution: "@ai-sdk/provider@npm:1.1.3"
dependencies:
json-schema: "npm:^0.4.0"
checksum: 10c0/40e080e223328e7c89829865e9c48f4ce8442a6a59f7ed5dfbdb4f63e8d859a76641e2d31e91970dd389bddb910f32ec7c3dbb0ce583c119e5a1e614ea7b8bc4
languageName: node
linkType: hard
"@ai-sdk/react@npm:1.2.11, @ai-sdk/react@npm:^1.2.11":
version: 1.2.11
resolution: "@ai-sdk/react@npm:1.2.11"
dependencies:
"@ai-sdk/provider-utils": "npm:2.2.7"
"@ai-sdk/ui-utils": "npm:1.2.10"
swr: "npm:^2.2.5"
throttleit: "npm:2.1.0"
peerDependencies:
react: ^18 || ^19 || ^19.0.0-rc
zod: ^3.23.8
peerDependenciesMeta:
zod:
optional: true
checksum: 10c0/a679c217961358c261cf374d888904777a12c45c661e8fa5faba7a93f4382e06cb46b0a176a300fa7ec5b2c00f13b164d82d3d5f1457f68d0d9567659fdb527e
languageName: node
linkType: hard
"@ai-sdk/react@npm:1.2.12":
version: 1.2.12
resolution: "@ai-sdk/react@npm:1.2.12"
dependencies:
"@ai-sdk/provider-utils": "npm:2.2.8"
"@ai-sdk/ui-utils": "npm:1.2.11"
swr: "npm:^2.2.5"
throttleit: "npm:2.1.0"
peerDependencies:
react: ^18 || ^19 || ^19.0.0-rc
zod: ^3.23.8
peerDependenciesMeta:
zod:
optional: true
checksum: 10c0/5422feb4ffeebd3287441cf658733e9ad7f9081fc279e85f57700d7fe9f4ed8a0504789c1be695790df44b28730e525cf12acf0f52bfa5adecc561ffd00cb2a5
languageName: node
linkType: hard
"@ai-sdk/ui-utils@npm:1.2.10, @ai-sdk/ui-utils@npm:^1.2.10":
version: 1.2.10
resolution: "@ai-sdk/ui-utils@npm:1.2.10"
dependencies:
"@ai-sdk/provider": "npm:1.1.3"
"@ai-sdk/provider-utils": "npm:2.2.7"
zod-to-json-schema: "npm:^3.24.1"
peerDependencies:
zod: ^3.23.8
checksum: 10c0/dcafcfd047130c9a1c6b26857f2bb82bcd67e7d487925a0e1d4cf60f0e01ef597c61997d102755599fa997ce13f8474bbcf1620a91f7310aceb3923a2b3916a5
languageName: node
linkType: hard
"@ai-sdk/ui-utils@npm:1.2.11, @ai-sdk/ui-utils@npm:^1.2.11":
version: 1.2.11
resolution: "@ai-sdk/ui-utils@npm:1.2.11"
dependencies:
"@ai-sdk/provider": "npm:1.1.3"
"@ai-sdk/provider-utils": "npm:2.2.8"
zod-to-json-schema: "npm:^3.24.1"
peerDependencies:
zod: ^3.23.8
checksum: 10c0/de0a10f9e16010126a21a1690aaf56d545b9c0f8d8b2cc33ffd22c2bb2e914949acb9b3f86e0e39a0e4b0d4f24db12e2b094045e34b311de0c8f84bfab48cc92
languageName: node
linkType: hard
"@ai-sdk/xai@npm:^1.2.16":
version: 1.2.18
resolution: "@ai-sdk/xai@npm:1.2.18"
dependencies:
"@ai-sdk/openai-compatible": "npm:0.2.16"
"@ai-sdk/provider": "npm:1.1.3"
"@ai-sdk/provider-utils": "npm:2.2.8"
peerDependencies:
zod: ^3.0.0
checksum: 10c0/caf92d750e4e0aecd598d3ebe2fdf4da56e2113d81d11bc4a965412e78186552ed7175f68f3f5584c27ba2b8f74e5d9f31c553d47a6989cbfacbdb2ceef1a332
languageName: node
linkType: hard
"@alloc/quick-lru@npm:^5.2.0":
version: 5.2.0
resolution: "@alloc/quick-lru@npm:5.2.0"
checksum: 10c0/7b878c48b9d25277d0e1a9b8b2f2312a314af806b4129dc902f2bc29ab09b58236e53964689feec187b28c80d2203aff03829754773a707a8a5987f1b7682d92
languageName: node
linkType: hard
"@auth0/auth0-spa-js@npm:^2.1.2":
version: 2.1.3
resolution: "@auth0/auth0-spa-js@npm:2.1.3"
checksum: 10c0/781d474564731f96182ff78d85e1d13841e924eba5d2e9a42593db28c66e2a6c59db1755c8c906698f0cd6d33d6e61501f0e0ab57ec981700966246944cccf74
languageName: node
linkType: hard
"@babel/code-frame@npm:^7.0.0":
version: 7.24.7
resolution: "@babel/code-frame@npm:7.24.7"
dependencies:
"@babel/highlight": "npm:^7.24.7"
picocolors: "npm:^1.0.0"
checksum: 10c0/ab0af539473a9f5aeaac7047e377cb4f4edd255a81d84a76058595f8540784cc3fbe8acf73f1e073981104562490aabfb23008cd66dc677a456a4ed5390fdde6
languageName: node
linkType: hard
"@babel/helper-validator-identifier@npm:^7.24.7":
version: 7.24.7
resolution: "@babel/helper-validator-identifier@npm:7.24.7"
checksum: 10c0/87ad608694c9477814093ed5b5c080c2e06d44cb1924ae8320474a74415241223cc2a725eea2640dd783ff1e3390e5f95eede978bc540e870053152e58f1d651
languageName: node
linkType: hard
"@babel/highlight@npm:^7.24.7":
version: 7.24.7
resolution: "@babel/highlight@npm:7.24.7"
dependencies:
"@babel/helper-validator-identifier": "npm:^7.24.7"
chalk: "npm:^2.4.2"
js-tokens: "npm:^4.0.0"
picocolors: "npm:^1.0.0"
checksum: 10c0/674334c571d2bb9d1c89bdd87566383f59231e16bcdcf5bb7835babdf03c9ae585ca0887a7b25bdf78f303984af028df52831c7989fecebb5101cc132da9393a
languageName: node
linkType: hard
"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.9.2":
version: 7.25.0
resolution: "@babel/runtime@npm:7.25.0"
dependencies:
regenerator-runtime: "npm:^0.14.0"
checksum: 10c0/bd3faf246170826cef2071a94d7b47b49d532351360ecd17722d03f6713fd93a3eb3dbd9518faa778d5e8ccad7392a7a604e56bd37aaad3f3aa68d619ccd983d
languageName: node
linkType: hard
"@babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.8.7":
version: 7.26.0
resolution: "@babel/runtime@npm:7.26.0"
dependencies:
regenerator-runtime: "npm:^0.14.0"
checksum: 10c0/12c01357e0345f89f4f7e8c0e81921f2a3e3e101f06e8eaa18a382b517376520cd2fa8c237726eb094dab25532855df28a7baaf1c26342b52782f6936b07c287
languageName: node
linkType: hard
"@carto/toolkit-auth@npm:^0.0.1-rc.18":
version: 0.0.1-rc.18
resolution: "@carto/toolkit-auth@npm:0.0.1-rc.18"
dependencies:
"@carto/toolkit-core": "npm:^0.0.1-rc.18"
"@salte-auth/popup": "npm:1.0.0-rc.2"
"@salte-auth/salte-auth": "npm:3.0.0-rc.8"
mitt: "npm:^1.1.3"
checksum: 10c0/6fc8db6168c59e8dc47a04f49cccd9b1cc2bc27856b1f8340631715bfd3e477ca265c6f5fdaf5b968b875aad8674bb9077685b93ee25392f4d740cb3a880b289
languageName: node
linkType: hard
"@carto/toolkit-core@npm:^0.0.1-rc.18":
version: 0.0.1-rc.18
resolution: "@carto/toolkit-core@npm:0.0.1-rc.18"
checksum: 10c0/f4b4d4e37265acc881ee295207d56376daa86d9ed6c3faf4cfb8587f04ba65c6413bcf29769a6ac97806f04c233960175199c0bccdec5e3f7b29ffd03f2cf72d
languageName: node
linkType: hard
"@carto/toolkit-custom-storage@npm:^0.0.1-rc.18":
version: 0.0.1-rc.18
resolution: "@carto/toolkit-custom-storage@npm:0.0.1-rc.18"
dependencies:
"@carto/toolkit-core": "npm:^0.0.1-rc.18"
"@carto/toolkit-sql": "npm:^0.0.1-rc.18"
checksum: 10c0/1547778358271c2f73e62e3b4e5435a451ea8005f8150f11f36d566ad4c7b9d1b90daad491f6e3410b3cb6ce7e78abf6c041a425a90af8847ed391f2722477b8
languageName: node
linkType: hard
"@carto/toolkit-maps@npm:^0.0.1-rc.18":
version: 0.0.1-rc.18
resolution: "@carto/toolkit-maps@npm:0.0.1-rc.18"
dependencies:
"@carto/toolkit-core": "npm:^0.0.1-rc.18"
checksum: 10c0/489320cc3d89443ce350d1c77a8b3e0ce51ee46c62f5c6caebb2796dfb1dd25239d12d58e2524780499118183826350c5c40829dc287f23f9939e17ee9370b69
languageName: node
linkType: hard
"@carto/toolkit-sql@npm:^0.0.1-rc.18":
version: 0.0.1-rc.18
resolution: "@carto/toolkit-sql@npm:0.0.1-rc.18"
dependencies:
"@carto/toolkit-core": "npm:^0.0.1-rc.18"
checksum: 10c0/365402775aadb4f96911e3d0c4a4f30a976c5b66defe9e5357357a86975e273f6813a0b7012cc22ef73dfeb31aba945e59f51d1a6f01dcc60bd151e4c06f348e
languageName: node
linkType: hard
"@carto/toolkit@npm:0.0.1-rc.18":
version: 0.0.1-rc.18
resolution: "@carto/toolkit@npm:0.0.1-rc.18"
dependencies:
"@carto/toolkit-auth": "npm:^0.0.1-rc.18"
"@carto/toolkit-core": "npm:^0.0.1-rc.18"
"@carto/toolkit-custom-storage": "npm:^0.0.1-rc.18"
"@carto/toolkit-maps": "npm:^0.0.1-rc.18"
"@carto/toolkit-sql": "npm:^0.0.1-rc.18"
checksum: 10c0/381794a8b93b6371243ef99692c4a3ec573ab9fe05aeb7ce5b6a382da75048f472394787193d787ae7a68023129575f8470e5fd97a0a0b36c82cd8f493de5c8d
languageName: node
linkType: hard
"@cfworker/json-schema@npm:^4.0.2":
version: 4.1.0
resolution: "@cfworker/json-schema@npm:4.1.0"
checksum: 10c0/a7917d197ad9d5deb48a4d800ab41b3de5fe856745c164c5a4ed914263a0a11b08cf1b11040eb325e756e8f9418b07511109df856281dd10bf288f743d4fb3e6
languageName: node
linkType: hard
"@danmarshall/deckgl-typings@npm:4.9.12":
version: 4.9.12
resolution: "@danmarshall/deckgl-typings@npm:4.9.12"
dependencies:
"@types/hammerjs": "npm:^2.0.36"
"@types/react": "npm:*"
indefinitely-typed: "npm:^1.1.0"
checksum: 10c0/7e2d500f79d0c900771b70c7781cc382deb25d18300163cf8df9eac70f866f89de9b7ac458ec2894252bc947aaf0e8eab4e7a3b0db3e6cb5300221fa10c3e7c1
languageName: node
linkType: hard
"@danmarshall/deckgl-typings@npm:4.9.22":
version: 4.9.22
resolution: "@danmarshall/deckgl-typings@npm:4.9.22"
dependencies:
"@types/hammerjs": "npm:^2.0.36"
"@types/react": "npm:*"
indefinitely-typed: "npm:^1.1.0"
checksum: 10c0/50cdbaaf91505f531e4e14526473b7c911f339ab7e7f91ffe9fdff705f221a0bd3ba3418213509cabd4d32e832a4b0ba63749c449483e93d3e6a7e47a5a08c68
languageName: node
linkType: hard
"@deck.gl/aggregation-layers@npm:^8.9.27":
version: 8.9.36
resolution: "@deck.gl/aggregation-layers@npm:8.9.36"
dependencies:
"@babel/runtime": "npm:^7.0.0"
"@luma.gl/constants": "npm:^8.5.21"
"@luma.gl/shadertools": "npm:^8.5.21"
"@math.gl/web-mercator": "npm:^3.6.2"
d3-hexbin: "npm:^0.2.1"
peerDependencies:
"@deck.gl/core": ^8.0.0
"@deck.gl/layers": ^8.0.0
"@luma.gl/core": ^8.0.0
checksum: 10c0/a3ec6a2b6dc664a82302370de503379c9f9fb8f7fa741a5d0d99e5b971bcb4213d0411939a8894b74daa742e9053fc396f0181d1f5c06168d0cb71a0af4e7dfd
languageName: node
linkType: hard
"@deck.gl/core@npm:8.9.27":
version: 8.9.27
resolution: "@deck.gl/core@npm:8.9.27"
dependencies:
"@babel/runtime": "npm:^7.0.0"
"@loaders.gl/core": "npm:^3.4.13"
"@loaders.gl/images": "npm:^3.4.13"
"@luma.gl/constants": "npm:^8.5.20"
"@luma.gl/core": "npm:^8.5.20"
"@luma.gl/webgl": "npm:^8.5.20"
"@math.gl/core": "npm:^3.6.2"
"@math.gl/sun": "npm:^3.6.2"
"@math.gl/web-mercator": "npm:^3.6.2"
"@probe.gl/env": "npm:^3.5.0"
"@probe.gl/log": "npm:^3.5.0"
"@probe.gl/stats": "npm:^3.5.0"
gl-matrix: "npm:^3.0.0"
math.gl: "npm:^3.6.2"
mjolnir.js: "npm:^2.7.0"
checksum: 10c0/6263b1f3cf50736d1adf5ea3d95a88d11cd82bcb318f1399892ac78a0528deb7f56461daaef916e8aaffc7ff502e6fe1fb9631e828e0717126e2005a51162cef
languageName: node
linkType: hard
"@deck.gl/extensions@npm:8.9.27":
version: 8.9.27
resolution: "@deck.gl/extensions@npm:8.9.27"
dependencies:
"@babel/runtime": "npm:^7.0.0"
"@luma.gl/shadertools": "npm:^8.5.20"
peerDependencies:
"@deck.gl/core": ^8.0.0
"@luma.gl/constants": ^8.0.0
"@luma.gl/core": ^8.0.0
"@math.gl/core": ^3.6.2
"@math.gl/web-mercator": ^3.6.2
gl-matrix: ^3.0.0
checksum: 10c0/597b6b8c6e6fd9ba41de1d7b850858e27fda5eaa71dc2eb47000403cddc99d52cdff3fa623b8ac61a30b6a3dfc25b7d0fa6f143fd62591cccb813a73e8435b47
languageName: node
linkType: hard
"@deck.gl/geo-layers@npm:^8.9.27":
version: 8.9.36
resolution: "@deck.gl/geo-layers@npm:8.9.36"
dependencies:
"@babel/runtime": "npm:^7.0.0"
"@loaders.gl/3d-tiles": "npm:^3.4.13"
"@loaders.gl/gis": "npm:^3.4.13"
"@loaders.gl/loader-utils": "npm:^3.4.13"
"@loaders.gl/mvt": "npm:^3.4.13"
"@loaders.gl/schema": "npm:^3.4.13"
"@loaders.gl/terrain": "npm:^3.4.13"
"@loaders.gl/tiles": "npm:^3.4.13"
"@loaders.gl/wms": "npm:^3.4.13"
"@luma.gl/constants": "npm:^8.5.21"
"@luma.gl/experimental": "npm:^8.5.21"
"@math.gl/core": "npm:^3.6.2"
"@math.gl/culling": "npm:^3.6.2"
"@math.gl/web-mercator": "npm:^3.6.2"
"@types/geojson": "npm:^7946.0.8"
h3-js: "npm:^3.7.0"
long: "npm:^3.2.0"
peerDependencies:
"@deck.gl/core": ^8.0.0
"@deck.gl/extensions": ^8.0.0
"@deck.gl/layers": ^8.0.0
"@deck.gl/mesh-layers": ^8.0.0
"@loaders.gl/core": ^3.4.13
"@luma.gl/core": ^8.0.0
checksum: 10c0/c5326b3fb22b1eb63bb2dd8abcf0db0e829700a8a20f19900c8e8471ad4dd8d28cc4a18bfe7931515659e83b9e878241743a9b4a47131b4723bb902e7bcf3841
languageName: node
linkType: hard
"@deck.gl/layers@npm:^8.9.27":
version: 8.9.36
resolution: "@deck.gl/layers@npm:8.9.36"
dependencies:
"@babel/runtime": "npm:^7.0.0"
"@loaders.gl/images": "npm:^3.4.13"
"@loaders.gl/schema": "npm:^3.4.13"
"@luma.gl/constants": "npm:^8.5.21"
"@mapbox/tiny-sdf": "npm:^2.0.5"
"@math.gl/core": "npm:^3.6.2"
"@math.gl/polygon": "npm:^3.6.2"
"@math.gl/web-mercator": "npm:^3.6.2"
earcut: "npm:^2.2.4"
peerDependencies:
"@deck.gl/core": ^8.0.0
"@loaders.gl/core": ^3.4.13
"@luma.gl/core": ^8.0.0
checksum: 10c0/e3a7d1f57ccbc9c2fe7606bdc0a604d3e3598ef7eaa8d4b1b44ef295318a91a0a241ae3698b414830c8b6589281aa96f239856b071f52e283c552d58830a75da
languageName: node
linkType: hard
"@deck.gl/mesh-layers@npm:^8.9.27":
version: 8.9.36
resolution: "@deck.gl/mesh-layers@npm:8.9.36"
dependencies:
"@babel/runtime": "npm:^7.0.0"
"@loaders.gl/gltf": "npm:^3.4.13"
"@luma.gl/constants": "npm:^8.5.21"
"@luma.gl/experimental": "npm:^8.5.21"
"@luma.gl/shadertools": "npm:^8.5.21"
peerDependencies:
"@deck.gl/core": ^8.0.0
"@luma.gl/core": ^8.0.0
checksum: 10c0/8c1fcf6aeaaf5c710c3d4d0d107255d554799e61d16a12c59015513a3d2abffda354a0ff3d9370979e30189d9a5a68a083cc07cc83e385d7c519f50859d6164f
languageName: node
linkType: hard
"@deck.gl/react@npm:^8.9.27":
version: 8.9.36
resolution: "@deck.gl/react@npm:8.9.36"
dependencies:
"@babel/runtime": "npm:^7.0.0"
peerDependencies:
"@deck.gl/core": ^8.0.0
"@types/react": ">= 16.3"
react: ">=16.3"
react-dom: ">=16.3"
checksum: 10c0/cf5af570c982041d73de0def96d75609db1bb2cecaa8d34f6f891ccf7c3c19a9e177dbbd5d97b537e6fc48daf845d5fa123e183a241cff518d606dee3f794c56
languageName: node
linkType: hard
"@dnd-kit/accessibility@npm:^3.1.1":
version: 3.1.1
resolution: "@dnd-kit/accessibility@npm:3.1.1"
dependencies:
tslib: "npm:^2.0.0"
peerDependencies:
react: ">=16.8.0"
checksum: 10c0/be0bf41716dc58f9386bc36906ec1ce72b7b42b6d1d0e631d347afe9bd8714a829bd6f58a346dd089b1519e93918ae2f94497411a61a4f5e4d9247c6cfd1fef8
languageName: node
linkType: hard
"@dnd-kit/core@npm:^6.1.0":
version: 6.3.1
resolution: "@dnd-kit/core@npm:6.3.1"
dependencies:
"@dnd-kit/accessibility": "npm:^3.1.1"
"@dnd-kit/utilities": "npm:^3.2.2"
tslib: "npm:^2.0.0"
peerDependencies:
react: ">=16.8.0"
react-dom: ">=16.8.0"
checksum: 10c0/196db95d81096d9dc248983533eab91ba83591770fa5c894b1ac776f42af0d99522b3fd5bb3923411470e4733fcfa103e6ee17adc17b9b7eb54c7fbec5ff7c52
languageName: node
linkType: hard
"@dnd-kit/modifiers@npm:^7.0.0":
version: 7.0.0
resolution: "@dnd-kit/modifiers@npm:7.0.0"
dependencies:
"@dnd-kit/utilities": "npm:^3.2.2"
tslib: "npm:^2.0.0"
peerDependencies:
"@dnd-kit/core": ^6.1.0
react: ">=16.8.0"
checksum: 10c0/542e1d2b6102a5c826118c36158aab23c5437d24008cab4848b0866d3d850b4410c4f465690767dd1f31fde33a1fa9d238675be70f174c179485ce376f0c8aa6
languageName: node
linkType: hard
"@dnd-kit/sortable@npm:^8.0.0":
version: 8.0.0
resolution: "@dnd-kit/sortable@npm:8.0.0"
dependencies:
"@dnd-kit/utilities": "npm:^3.2.2"
tslib: "npm:^2.0.0"
peerDependencies:
"@dnd-kit/core": ^6.1.0
react: ">=16.8.0"
checksum: 10c0/a6066c652b892c6a11320c7d8f5c18fdf723e721e8eea37f4ab657dee1ac5e7ca710ac32ce0712a57fe968bc07c13bcea5d5599d90dfdd95619e162befd4d2fb
languageName: node
linkType: hard
"@dnd-kit/utilities@npm:^3.2.2":
version: 3.2.2
resolution: "@dnd-kit/utilities@npm:3.2.2"
dependencies:
tslib: "npm:^2.0.0"
peerDependencies:
react: ">=16.8.0"
checksum: 10c0/9aa90526f3e3fd567b5acc1b625a63177b9e8d00e7e50b2bd0e08fa2bf4dba7e19529777e001fdb8f89a7ce69f30b190c8364d390212634e0afdfa8c395e85a0
languageName: node
linkType: hard
"@dotenv-run/core@npm:~1.3.6":
version: 1.3.6
resolution: "@dotenv-run/core@npm:1.3.6"
dependencies:
chalk: "npm:^4.1.2"
dotenv: "npm:^16.4.5"
dotenv-expand: "npm:^10.0.0"
find-up: "npm:^5.0.0"
checksum: 10c0/26a5e8698017ad3f56c236f199d945c4df00f19ac28381dc00ef688dba23e436449ae7d27606ca63d026b92143fa8e4840aca4ad89031b5ec9dbc6ee00c50fc2
languageName: node
linkType: hard
"@dotenv-run/esbuild@npm:^1.5.0":
version: 1.5.0
resolution: "@dotenv-run/esbuild@npm:1.5.0"
dependencies:
"@dotenv-run/core": "npm:~1.3.6"
peerDependencies:
esbuild: ^0.21.0
checksum: 10c0/ff359e0aea49534be60486065b2f20ce4a83aacadf7706ff3bef5a793473d8527efe3b9c9b5c00333b04874d69f08676f27da5c8ec1027ed5a7d5df0ec4b6066
languageName: node
linkType: hard
"@duckdb/duckdb-wasm@npm:1.29.0, @duckdb/duckdb-wasm@npm:^1.28.0, @duckdb/duckdb-wasm@npm:^1.29.0":
version: 1.29.0
resolution: "@duckdb/duckdb-wasm@npm:1.29.0"
dependencies:
apache-arrow: "npm:^17.0.0"
checksum: 10c0/caa550b09433adb709f997241ef00fd7ee93dc4cb4a03838d9d978536fdc640c80ef0f2c294248c688e4a38231be42287e4aba655e13d94bcd9aff4767a404a0
languageName: node
linkType: hard
"@emotion/is-prop-valid@npm:1.2.1":
version: 1.2.1
resolution: "@emotion/is-prop-valid@npm:1.2.1"
dependencies:
"@emotion/memoize": "npm:^0.8.1"
checksum: 10c0/7c2aabdf0ca9986ca25abc9dae711348308cf18d418d64ffa4c8ffd2114806c47f2e06ba8ee769f38ec67d65bd59ec73f34d94023e81baa1c43510ac86ccd5e6
languageName: node
linkType: hard
"@emotion/is-prop-valid@npm:^1.2.1":
version: 1.3.1
resolution: "@emotion/is-prop-valid@npm:1.3.1"
dependencies:
"@emotion/memoize": "npm:^0.9.0"
checksum: 10c0/123215540c816ff510737ec68dcc499c53ea4deb0bb6c2c27c03ed21046e2e69f6ad07a7a174d271c6cfcbcc9ea44e1763e0cf3875c92192f7689216174803cd
languageName: node
linkType: hard
"@emotion/memoize@npm:^0.8.1":
version: 0.8.1
resolution: "@emotion/memoize@npm:0.8.1"
checksum: 10c0/dffed372fc3b9fa2ba411e76af22b6bb686fb0cb07694fdfaa6dd2baeb0d5e4968c1a7caa472bfcf06a5997d5e7c7d16b90e993f9a6ffae79a2c3dbdc76dfe78
languageName: node
linkType: hard
"@emotion/memoize@npm:^0.9.0":
version: 0.9.0
resolution: "@emotion/memoize@npm:0.9.0"
checksum: 10c0/13f474a9201c7f88b543e6ea42f55c04fb2fdc05e6c5a3108aced2f7e7aa7eda7794c56bba02985a46d8aaa914fcdde238727a98341a96e2aec750d372dadd15
languageName: node
linkType: hard
"@emotion/unitless@npm:0.8.0":
version: 0.8.0
resolution: "@emotion/unitless@npm:0.8.0"
checksum: 10c0/1f2cfb7c0ccb83c20b1c6d8d92a74a93da4b2a440f9a0d49ded08647faf299065a2ffde17e1335920fa10397b85f8635bbfe14f3cd29222a59ea81d978478072
languageName: node
linkType: hard
"@esbuild/aix-ppc64@npm:0.25.0":
version: 0.25.0
resolution: "@esbuild/aix-ppc64@npm:0.25.0"
conditions: os=aix & cpu=ppc64
languageName: node
linkType: hard
"@esbuild/android-arm64@npm:0.25.0":
version: 0.25.0
resolution: "@esbuild/android-arm64@npm:0.25.0"
conditions: os=android & cpu=arm64
languageName: node
linkType: hard
"@esbuild/android-arm@npm:0.25.0":
version: 0.25.0
resolution: "@esbuild/android-arm@npm:0.25.0"
conditions: os=android & cpu=arm
languageName: node
linkType: hard
"@esbuild/android-x64@npm:0.25.0":
version: 0.25.0
resolution: "@esbuild/android-x64@npm:0.25.0"
conditions: os=android & cpu=x64
languageName: node
linkType: hard
"@esbuild/darwin-arm64@npm:0.25.0":
version: 0.25.0
resolution: "@esbuild/darwin-arm64@npm:0.25.0"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
"@esbuild/darwin-x64@npm:0.25.0":
version: 0.25.0
resolution: "@esbuild/darwin-x64@npm:0.25.0"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
"@esbuild/freebsd-arm64@npm:0.25.0":
version: 0.25.0
resolution: "@esbuild/freebsd-arm64@npm:0.25.0"
conditions: os=freebsd & cpu=arm64
languageName: node
linkType: hard
"@esbuild/freebsd-x64@npm:0.25.0":
version: 0.25.0
resolution: "@esbuild/freebsd-x64@npm:0.25.0"
conditions: os=freebsd & cpu=x64
languageName: node
linkType: hard
"@esbuild/linux-arm64@npm:0.25.0":
version: 0.25.0
resolution: "@esbuild/linux-arm64@npm:0.25.0"
conditions: os=linux & cpu=arm64
languageName: node
linkType: hard
"@esbuild/linux-arm@npm:0.25.0":
version: 0.25.0
resolution: "@esbuild/linux-arm@npm:0.25.0"
conditions: os=linux & cpu=arm
languageName: node
linkType: hard
"@esbuild/linux-ia32@npm:0.25.0":
version: 0.25.0
resolution: "@esbuild/linux-ia32@npm:0.25.0"
conditions: os=linux & cpu=ia32
languageName: node
linkType: hard
"@esbuild/linux-loong64@npm:0.25.0":
version: 0.25.0
resolution: "@esbuild/linux-loong64@npm:0.25.0"
conditions: os=linux & cpu=loong64
languageName: node
linkType: hard
"@esbuild/linux-mips64el@npm:0.25.0":
version: 0.25.0
resolution: "@esbuild/linux-mips64el@npm:0.25.0"
conditions: os=linux & cpu=mips64el
languageName: node
linkType: hard
"@esbuild/linux-ppc64@npm:0.25.0":
version: 0.25.0
resolution: "@esbuild/linux-ppc64@npm:0.25.0"
conditions: os=linux & cpu=ppc64
languageName: node
linkType: hard
"@esbuild/linux-riscv64@npm:0.25.0":
version: 0.25.0
resolution: "@esbuild/linux-riscv64@npm:0.25.0"
conditions: os=linux & cpu=riscv64
languageName: node
linkType: hard
"@esbuild/linux-s390x@npm:0.25.0":
version: 0.25.0
resolution: "@esbuild/linux-s390x@npm:0.25.0"
conditions: os=linux & cpu=s390x
languageName: node
linkType: hard
"@esbuild/linux-x64@npm:0.25.0":
version: 0.25.0
resolution: "@esbuild/linux-x64@npm:0.25.0"
conditions: os=linux & cpu=x64
languageName: node
linkType: hard
"@esbuild/netbsd-arm64@npm:0.25.0":
version: 0.25.0
resolution: "@esbuild/netbsd-arm64@npm:0.25.0"
conditions: os=netbsd & cpu=arm64
languageName: node
linkType: hard
"@esbuild/netbsd-x64@npm:0.25.0":
version: 0.25.0
resolution: "@esbuild/netbsd-x64@npm:0.25.0"
conditions: os=netbsd & cpu=x64
languageName: node
linkType: hard
"@esbuild/openbsd-arm64@npm:0.25.0":
version: 0.25.0
resolution: "@esbuild/openbsd-arm64@npm:0.25.0"
conditions: os=openbsd & cpu=arm64
languageName: node
linkType: hard
"@esbuild/openbsd-x64@npm:0.25.0":
version: 0.25.0
resolution: "@esbuild/openbsd-x64@npm:0.25.0"
conditions: os=openbsd & cpu=x64
languageName: node
linkType: hard
"@esbuild/sunos-x64@npm:0.25.0":
version: 0.25.0
resolution: "@esbuild/sunos-x64@npm:0.25.0"
conditions: os=sunos & cpu=x64
languageName: node
linkType: hard
"@esbuild/win32-arm64@npm:0.25.0":
version: 0.25.0
resolution: "@esbuild/win32-arm64@npm:0.25.0"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
"@esbuild/win32-ia32@npm:0.25.0":
version: 0.25.0
resolution: "@esbuild/win32-ia32@npm:0.25.0"
conditions: os=win32 & cpu=ia32
languageName: node
linkType: hard
"@esbuild/win32-x64@npm:0.25.0":
version: 0.25.0
resolution: "@esbuild/win32-x64@npm:0.25.0"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
"@ffmpeg/ffmpeg@npm:^0.11.6":
version: 0.11.6
resolution: "@ffmpeg/ffmpeg@npm:0.11.6"
dependencies:
is-url: "npm:^1.2.4"
node-fetch: "npm:^2.6.1"
regenerator-runtime: "npm:^0.13.7"
resolve-url: "npm:^0.2.1"
checksum: 10c0/7692b4b14369f81ff2833e93767a202872991ead75eee0490f55668d3b6d1911495bd08879cbb23b4781e8c492a75316eb3c2fde7066cc093235bef4649096d4
languageName: node
linkType: hard
"@floating-ui/core@npm:^1.6.0":
version: 1.6.7
resolution: "@floating-ui/core@npm:1.6.7"
dependencies:
"@floating-ui/utils": "npm:^0.2.7"
checksum: 10c0/5c9ae274854f87ed09a61de758377d444c2b13ade7fd1067d74287b3e66de5340ae1281e48604b631c540855a2595cfc717adf9a2331eaadc4fa6d28e8571f64
languageName: node
linkType: hard
"@floating-ui/dom@npm:^1.0.0":
version: 1.6.10
resolution: "@floating-ui/dom@npm:1.6.10"
dependencies:
"@floating-ui/core": "npm:^1.6.0"
"@floating-ui/utils": "npm:^0.2.7"
checksum: 10c0/ed7d7b400e00b2f31f1b8f11863af2cb95d0d3cd84635186ca31b41d8d9fe7fe12c85e4985617d7df7ed365abad48b327d0bae35934842007b4e1052d9780576
languageName: node
linkType: hard
"@floating-ui/react-dom@npm:^2.0.1":
version: 2.1.1
resolution: "@floating-ui/react-dom@npm:2.1.1"
dependencies:
"@floating-ui/dom": "npm:^1.0.0"
peerDependencies:
react: ">=16.8.0"
react-dom: ">=16.8.0"
checksum: 10c0/732ab64600c511ceb0563b87bc557aa61789fec4f416a3f092bab89e508fa1d3ee5ade0f42051cc56eb5e4db867b87ab7fd48ce82db9fd4c01d94ffa08f60115
languageName: node
linkType: hard
"@floating-ui/react@npm:0.25.1":
version: 0.25.1
resolution: "@floating-ui/react@npm:0.25.1"
dependencies:
"@floating-ui/react-dom": "npm:^2.0.1"
"@floating-ui/utils": "npm:^0.1.1"
tabbable: "npm:^6.0.1"
peerDependencies:
react: ">=16.8.0"
react-dom: ">=16.8.0"
checksum: 10c0/4adf6ea303554e72bff3e92ebe73c4f7aa99ca9b221d110f51208986c8e98495d77bdbd4652420478a8aeabf8dc8ad76d8e204c956d992801e825d1910142947
languageName: node
linkType: hard
"@floating-ui/utils@npm:^0.1.1":
version: 0.1.6
resolution: "@floating-ui/utils@npm:0.1.6"
checksum: 10c0/0a089db0e0526b89e83cb0a773a903517db5c9067cd473febfd8fa91a3a2ccbc3a835234796c1bb528def21dbb67be50e28d9c473cb58a6d90679d7e549b9c0c
languageName: node
linkType: hard
"@floating-ui/utils@npm:^0.2.7":
version: 0.2.7
resolution: "@floating-ui/utils@npm:0.2.7"
checksum: 10c0/0559ea5df2dc82219bad26e3509e9d2b70f6987e552dc8ddf7d7f5923cfeb7c44bf884567125b1f9cdb122a4c7e6e7ddbc666740bc30b0e4091ccbca63c6fb1c
languageName: node
linkType: hard
"@formatjs/ecma402-abstract@npm:2.0.0":
version: 2.0.0
resolution: "@formatjs/ecma402-abstract@npm:2.0.0"
dependencies:
"@formatjs/intl-localematcher": "npm:0.5.4"
tslib: "npm:^2.4.0"
checksum: 10c0/94cba291aeadffa3ca416087c2c2352c8a741bb4dcb7f47f15c247b1f043ffcef1af5b20a1b7578fbba9e704fc5f1c079923f3537a273d50162be62f8037625c
languageName: node
linkType: hard
"@formatjs/ecma402-abstract@npm:2.3.2":
version: 2.3.2
resolution: "@formatjs/ecma402-abstract@npm:2.3.2"
dependencies:
"@formatjs/fast-memoize": "npm:2.2.6"
"@formatjs/intl-localematcher": "npm:0.5.10"
decimal.js: "npm:10"
tslib: "npm:2"
checksum: 10c0/364e9e7de974fed976e0e8142a0f888ee0af4a11a61899115e5761ed933e7c1f16379b7b54a01524fd3c5d58bf08b71308237ea969cd54889eaf7bb2d30ec776
languageName: node
linkType: hard
"@formatjs/fast-memoize@npm:2.2.0":
version: 2.2.0
resolution: "@formatjs/fast-memoize@npm:2.2.0"
dependencies:
tslib: "npm:^2.4.0"
checksum: 10c0/ae88c5a93b96235aba4bd9b947d0310d2ec013687a99133413361b24122b5cdea8c9bf2e04a4a2a8b61f1f4ee5419ef6416ca4796554226b5050e05a9ce6ef49
languageName: node
linkType: hard
"@formatjs/fast-memoize@npm:2.2.6":
version: 2.2.6
resolution: "@formatjs/fast-memoize@npm:2.2.6"
dependencies:
tslib: "npm:2"
checksum: 10c0/dccdc21105af673e58ec7b04eb17cd6fde1fb1a7e7a446273ca43f7ab97c26d5c0fcc2b9e80d5b54bf9b80354f9e1e681273c0ed26633ec72f0adc2d116dfd7f
languageName: node
linkType: hard
"@formatjs/icu-messageformat-parser@npm:2.11.0":
version: 2.11.0
resolution: "@formatjs/icu-messageformat-parser@npm:2.11.0"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.3.2"
"@formatjs/icu-skeleton-parser": "npm:1.8.12"
tslib: "npm:2"
checksum: 10c0/9ad43847cb4a5c13895af606c634dcf2ec034d484cbbce6566746b60920643f33cbc5e2e3fd1efe21bcfdb555e1ee527e4518768001c3b36bf2e76c171e4049f
languageName: node
linkType: hard
"@formatjs/icu-messageformat-parser@npm:2.7.8":
version: 2.7.8
resolution: "@formatjs/icu-messageformat-parser@npm:2.7.8"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.0.0"
"@formatjs/icu-skeleton-parser": "npm:1.8.2"
tslib: "npm:^2.4.0"
checksum: 10c0/a3b759a825fb22ffd7b906f6a07b1a079bbc34f72c745de2c2514e439c4bb75bc1a9442eba1bac7ff3ea3010e12076374cd755ad12116b1d066cc90da5fbcbc9
languageName: node
linkType: hard
"@formatjs/icu-skeleton-parser@npm:1.8.12":
version: 1.8.12
resolution: "@formatjs/icu-skeleton-parser@npm:1.8.12"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.3.2"
tslib: "npm:2"
checksum: 10c0/03e743aa09acb2137e37d03b98578fcbbc949d056b8c151763778e885d04d621e69c82f7656547f0532351d2a987bffac0a8c4c3d81186f47a28047ba64385e2
languageName: node
linkType: hard
"@formatjs/icu-skeleton-parser@npm:1.8.2":
version: 1.8.2
resolution: "@formatjs/icu-skeleton-parser@npm:1.8.2"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.0.0"
tslib: "npm:^2.4.0"
checksum: 10c0/9b15013acc47b8d560b52942e3dab2abaaa9c5a4410bbd1d490a4b22bf5ca36fdd88b71f241d05479bddf856d0d1d57b7ecc9e79738497ac518616aa6d4d0015
languageName: node
linkType: hard
"@formatjs/intl-displaynames@npm:6.6.8":
version: 6.6.8
resolution: "@formatjs/intl-displaynames@npm:6.6.8"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.0.0"
"@formatjs/intl-localematcher": "npm:0.5.4"
tslib: "npm:^2.4.0"
checksum: 10c0/1a03e7644022741c1bcf10fcd07da88c434416a13603ace693a038114010463307b4130d3a3f53ad5665bd27fca9a6b19ac8e5bf58e17598b1ea84db173fdfbb
languageName: node
linkType: hard
"@formatjs/intl-listformat@npm:7.5.7":
version: 7.5.7
resolution: "@formatjs/intl-listformat@npm:7.5.7"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.0.0"
"@formatjs/intl-localematcher": "npm:0.5.4"
tslib: "npm:^2.4.0"
checksum: 10c0/5d0478752d669d87c82aa80880df464d64a1c8974fcb6136bc854567f570a1696e5468005ffa266cfcb623adb7c7299b839c06ea33897f55d35dab6a7575cc84
languageName: node
linkType: hard
"@formatjs/intl-localematcher@npm:0.5.10":
version: 0.5.10
resolution: "@formatjs/intl-localematcher@npm:0.5.10"
dependencies:
tslib: "npm:2"
checksum: 10c0/362ec83aca9382165be575f1cefa477478339e6fead8ca8866185ce6e58427ea1487a811b12c73d1bcfa99fd4db0c24543b35c823451839f585576bfccb8c9cc
languageName: node
linkType: hard
"@formatjs/intl-localematcher@npm:0.5.4":
version: 0.5.4
resolution: "@formatjs/intl-localematcher@npm:0.5.4"
dependencies:
tslib: "npm:^2.4.0"
checksum: 10c0/c9ff5d34ca8b6fe59f8f303a3cc31a92d343e095a6987e273e5cc23f0fe99feb557a392a05da95931c7d24106acb6988e588d00ddd05b0934005aafd7fdbafe6
languageName: node
linkType: hard
"@formatjs/intl@npm:2.10.4":
version: 2.10.4
resolution: "@formatjs/intl@npm:2.10.4"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.0.0"
"@formatjs/fast-memoize": "npm:2.2.0"
"@formatjs/icu-messageformat-parser": "npm:2.7.8"
"@formatjs/intl-displaynames": "npm:6.6.8"
"@formatjs/intl-listformat": "npm:7.5.7"
intl-messageformat: "npm:10.5.14"
tslib: "npm:^2.4.0"
peerDependencies:
typescript: ^4.7 || 5
peerDependenciesMeta:
typescript:
optional: true
checksum: 10c0/ca7877e962f73f1fe0e358f12d73bdc3ec4006c14ee801e06d9f7aef06bcdcc12355a8f53f32b0e890f829949ded35e825c914ca5f4709eb1e08c2a18c1368c2
languageName: node
linkType: hard
"@geoarrow/geoarrow-js@npm:^0.3.0":
version: 0.3.1
resolution: "@geoarrow/geoarrow-js@npm:0.3.1"
dependencies:
"@math.gl/polygon": "npm:^4.0.0"
proj4: "npm:^2.9.2"
threads: "npm:^1.7.0"
peerDependencies:
apache-arrow: ">=15"
checksum: 10c0/0f7cb53ab43651cdca5ab7e0055ba1a7a3b1ce69f86c6ddabc2d5375b7426895a12ea3b35e0c2aba208b0660b916c7c5e7f7635c0830e7a5d1fc4a03146b0907
languageName: node
linkType: hard
"@geoda/core@npm:^0.0.22":
version: 0.0.22
resolution: "@geoda/core@npm:0.0.22"
dependencies:
"@loaders.gl/schema": "npm:^4.1.0-alpha.4"
geojson: "npm:^0.5.0"
checksum: 10c0/228d4278a0e18f9cd4877cedb5624c537dc487aa8d6eec0ffba74cc0ee7a7321dfdafa962ac95de016d0e8dd6f79edc46ebb1c37f365d82a65415bfc61a77f82
languageName: node
linkType: hard
"@geoda/lisa@npm:^0.0.22":
version: 0.0.22
resolution: "@geoda/lisa@npm:0.0.22"
dependencies:
"@loaders.gl/schema": "npm:^4.1.0-alpha.4"
geojson: "npm:^0.5.0"
checksum: 10c0/60a8f37f7cb7eadb256eaf10161a9896ebf40c7ab066814d30cd81cd9e249e61fd7466f22735f86aaa993c0bde3a5d4ddb50836e594f4207a6e293df4890404b
languageName: node
linkType: hard
"@geoda/regression@npm:^0.0.22":
version: 0.0.22
resolution: "@geoda/regression@npm:0.0.22"
checksum: 10c0/f705bf24c82be77268a6703a21252a92216ea40672015ff84dd4215408d976b810fb45934fe46644bbf00b786ebc059c59d0308839f244279cb74c0cc11f4d73
languageName: node
linkType: hard
"@heroui/accordion@npm:2.2.16":
version: 2.2.16
resolution: "@heroui/accordion@npm:2.2.16"
dependencies:
"@heroui/aria-utils": "npm:2.2.16"
"@heroui/divider": "npm:2.2.13"
"@heroui/dom-animation": "npm:2.1.8"
"@heroui/framer-utils": "npm:2.1.15"
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-icons": "npm:2.1.7"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/use-aria-accordion": "npm:2.2.11"
"@react-aria/button": "npm:3.13.0"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/interactions": "npm:3.25.0"
"@react-aria/utils": "npm:3.28.2"
"@react-stately/tree": "npm:3.8.9"
"@react-types/accordion": "npm:3.0.0-alpha.26"
"@react-types/shared": "npm:3.29.0"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
framer-motion: ">=11.5.6 || >=12.0.0-alpha.1"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/9b696113f3c09403de5b55c4ef00d671ad595a85ca59711c24175c111bdb96b3f10aaa8b73c488519f27b93dcd00fb4dacb1770496e6e19473a8865c27c133d2
languageName: node
linkType: hard
"@heroui/alert@npm:2.2.19":
version: 2.2.19
resolution: "@heroui/alert@npm:2.2.19"
dependencies:
"@heroui/button": "npm:2.2.19"
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-icons": "npm:2.1.7"
"@heroui/shared-utils": "npm:2.1.9"
"@react-aria/utils": "npm:3.28.2"
"@react-stately/utils": "npm:3.10.6"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/15765a21481253cd3ead2ed6177223633168e61bf6b28b5ca9f5ac962d28421a4f776ec44f80ce273b14407d08d57eec4dd78afe291002c74a419e95ea12b461
languageName: node
linkType: hard
"@heroui/aria-utils@npm:2.2.16":
version: 2.2.16
resolution: "@heroui/aria-utils@npm:2.2.16"
dependencies:
"@heroui/react-rsc-utils": "npm:2.1.7"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/system": "npm:2.4.15"
"@react-aria/utils": "npm:3.28.2"
"@react-stately/collections": "npm:3.12.3"
"@react-stately/overlays": "npm:3.6.15"
"@react-types/overlays": "npm:3.8.14"
"@react-types/shared": "npm:3.29.0"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/d70329fa02b3fc40db6d6f6cb7b04f1cd9efba56d79a24f1a1687322d0b98b63d5d7bc9eb5230f33ec4577864685fed6ca8bc0bf233095dcdc338237f9d0efbf
languageName: node
linkType: hard
"@heroui/aria-utils@npm:2.2.21":
version: 2.2.21
resolution: "@heroui/aria-utils@npm:2.2.21"
dependencies:
"@heroui/system": "npm:2.4.20"
"@react-aria/utils": "npm:3.30.0"
"@react-stately/collections": "npm:3.12.6"
"@react-types/overlays": "npm:3.9.0"
"@react-types/shared": "npm:3.31.0"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/6998fab4f3b664a79943220cdcfaf928783296a80dd163c88d97723935a8f48c0cd107710007e2537b86afb3224696d3c85bc4b77f63cb52605325c465951fef
languageName: node
linkType: hard
"@heroui/autocomplete@npm:2.3.20":
version: 2.3.20
resolution: "@heroui/autocomplete@npm:2.3.20"
dependencies:
"@heroui/aria-utils": "npm:2.2.16"
"@heroui/button": "npm:2.2.19"
"@heroui/form": "npm:2.1.18"
"@heroui/input": "npm:2.4.19"
"@heroui/listbox": "npm:2.3.18"
"@heroui/popover": "npm:2.3.19"
"@heroui/react-utils": "npm:2.1.10"
"@heroui/scroll-shadow": "npm:2.3.13"
"@heroui/shared-icons": "npm:2.1.7"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/spinner": "npm:2.2.16"
"@heroui/use-aria-button": "npm:2.2.13"
"@heroui/use-safe-layout-effect": "npm:2.1.7"
"@react-aria/combobox": "npm:3.12.2"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/i18n": "npm:3.12.8"
"@react-aria/interactions": "npm:3.25.0"
"@react-aria/utils": "npm:3.28.2"
"@react-aria/visually-hidden": "npm:3.8.22"
"@react-stately/combobox": "npm:3.10.4"
"@react-types/combobox": "npm:3.13.4"
"@react-types/shared": "npm:3.29.0"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
framer-motion: ">=11.5.6 || >=12.0.0-alpha.1"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/15e9aaa2b7c3678c1e7b307308042fe95e0723aa0758846d4c2d040b3e7a8d0e23fab8fe8248545f23fefe2116bc45aaee1738353c9e3a83c58836daa8dc49c4
languageName: node
linkType: hard
"@heroui/avatar@npm:2.2.15":
version: 2.2.15
resolution: "@heroui/avatar@npm:2.2.15"
dependencies:
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/use-image": "npm:2.1.9"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/interactions": "npm:3.25.0"
"@react-aria/utils": "npm:3.28.2"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/f48f5cc364a30164a85e8c2f7f2eafeff1ba6ac0cf35d13147e29772bad7fbfc90cd51a21e1873d711fc170d2e85fe3ea1d6cfef5d5bc00acc8348daaadb16ea
languageName: node
linkType: hard
"@heroui/badge@npm:2.2.12":
version: 2.2.12
resolution: "@heroui/badge@npm:2.2.12"
dependencies:
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.9"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/8dbb207a20bf8d9ac9ab7220ef7191f087390fb615234cab2e7fe29aaf4ea07229a6714baff2cbd261e850466250f357b25801be9923a9557c0d5bab308e8bed
languageName: node
linkType: hard
"@heroui/breadcrumbs@npm:2.2.15":
version: 2.2.15
resolution: "@heroui/breadcrumbs@npm:2.2.15"
dependencies:
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-icons": "npm:2.1.7"
"@heroui/shared-utils": "npm:2.1.9"
"@react-aria/breadcrumbs": "npm:3.5.23"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/utils": "npm:3.28.2"
"@react-types/breadcrumbs": "npm:3.7.12"
"@react-types/shared": "npm:3.29.0"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/f76b18d8c6949b2df0ea31b5d8ff9222ff9b25d48d938753692f85e6fdf28e28febbcfe65377335acfca46d1cceaf0117257b0415b171cedaa7c3ea66955992a
languageName: node
linkType: hard
"@heroui/button@npm:2.2.19":
version: 2.2.19
resolution: "@heroui/button@npm:2.2.19"
dependencies:
"@heroui/react-utils": "npm:2.1.10"
"@heroui/ripple": "npm:2.2.14"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/spinner": "npm:2.2.16"
"@heroui/use-aria-button": "npm:2.2.13"
"@react-aria/button": "npm:3.13.0"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/interactions": "npm:3.25.0"
"@react-aria/utils": "npm:3.28.2"
"@react-types/button": "npm:3.12.0"
"@react-types/shared": "npm:3.29.0"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
framer-motion: ">=11.5.6 || >=12.0.0-alpha.1"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/c9d590b9758cc6d5373d42c550ee5f22856bf5f5a1182e2071ef8913fae7ad34d4c54614fb0df61ac6d55738d1180b01d78dfbe6b1f10e6121a877716652aa93
languageName: node
linkType: hard
"@heroui/button@npm:2.2.24, @heroui/button@npm:^2.2.19":
version: 2.2.24
resolution: "@heroui/button@npm:2.2.24"
dependencies:
"@heroui/react-utils": "npm:2.1.12"
"@heroui/ripple": "npm:2.2.18"
"@heroui/shared-utils": "npm:2.1.10"
"@heroui/spinner": "npm:2.2.21"
"@heroui/use-aria-button": "npm:2.2.18"
"@react-aria/focus": "npm:3.21.0"
"@react-aria/interactions": "npm:3.25.4"
"@react-types/shared": "npm:3.31.0"
peerDependencies:
"@heroui/system": ">=2.4.18"
"@heroui/theme": ">=2.4.17"
framer-motion: ">=11.5.6 || >=12.0.0-alpha.1"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/e783f0d24fd3f8146d2e3f3dd1c7765107ac78ed94975154be296b877353289c7c057d0aeb83b3a105b3e047635dd3d64d51131aff228e9862b47d1923df256d
languageName: node
linkType: hard
"@heroui/calendar@npm:2.2.19":
version: 2.2.19
resolution: "@heroui/calendar@npm:2.2.19"
dependencies:
"@heroui/button": "npm:2.2.19"
"@heroui/dom-animation": "npm:2.1.8"
"@heroui/framer-utils": "npm:2.1.15"
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-icons": "npm:2.1.7"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/use-aria-button": "npm:2.2.13"
"@internationalized/date": "npm:3.8.0"
"@react-aria/calendar": "npm:3.8.0"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/i18n": "npm:3.12.8"
"@react-aria/interactions": "npm:3.25.0"
"@react-aria/utils": "npm:3.28.2"
"@react-aria/visually-hidden": "npm:3.8.22"
"@react-stately/calendar": "npm:3.8.0"
"@react-stately/utils": "npm:3.10.6"
"@react-types/button": "npm:3.12.0"
"@react-types/calendar": "npm:3.7.0"
"@react-types/shared": "npm:3.29.0"
"@types/lodash.debounce": "npm:^4.0.7"
scroll-into-view-if-needed: "npm:3.0.10"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
framer-motion: ">=11.5.6 || >=12.0.0-alpha.1"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/9305e63570afbd397e9478aba0e2f3bf4363c796d4ae645bfcd4d35a1da96341a7e7f29837e7c9baeaedc80c527f490f09c3d2ae95800dc40bae77b57f03d5dd
languageName: node
linkType: hard
"@heroui/card@npm:2.2.18":
version: 2.2.18
resolution: "@heroui/card@npm:2.2.18"
dependencies:
"@heroui/react-utils": "npm:2.1.10"
"@heroui/ripple": "npm:2.2.14"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/use-aria-button": "npm:2.2.13"
"@react-aria/button": "npm:3.13.0"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/interactions": "npm:3.25.0"
"@react-aria/utils": "npm:3.28.2"
"@react-types/shared": "npm:3.29.0"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
framer-motion: ">=11.5.6 || >=12.0.0-alpha.1"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/a4371beae378eb1d953d9fdeb86b74ff4f0bdda07172f125302a882cc559fc6e29fe3175ce990d90b268e1ea3a7ff2a8bb9603833c94dec91ecd2b4bfa96bfeb
languageName: node
linkType: hard
"@heroui/checkbox@npm:2.3.18":
version: 2.3.18
resolution: "@heroui/checkbox@npm:2.3.18"
dependencies:
"@heroui/form": "npm:2.1.18"
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/use-callback-ref": "npm:2.1.7"
"@heroui/use-safe-layout-effect": "npm:2.1.7"
"@react-aria/checkbox": "npm:3.15.4"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/interactions": "npm:3.25.0"
"@react-aria/utils": "npm:3.28.2"
"@react-aria/visually-hidden": "npm:3.8.22"
"@react-stately/checkbox": "npm:3.6.13"
"@react-stately/toggle": "npm:3.8.3"
"@react-types/checkbox": "npm:3.9.3"
"@react-types/shared": "npm:3.29.0"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.3"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/3d75aace30d39fe7bc2f6d0bf7b5baa797ebeb4d1dd532d3a3e278f9116a180de00140f80d73d943cd3eac8ba455ff67dc5effcbb19cab8136e6af0188615769
languageName: node
linkType: hard
"@heroui/checkbox@npm:2.3.24, @heroui/checkbox@npm:^2.3.18":
version: 2.3.24
resolution: "@heroui/checkbox@npm:2.3.24"
dependencies:
"@heroui/form": "npm:2.1.24"
"@heroui/react-utils": "npm:2.1.12"
"@heroui/shared-utils": "npm:2.1.10"
"@heroui/use-callback-ref": "npm:2.1.8"
"@heroui/use-safe-layout-effect": "npm:2.1.8"
"@react-aria/checkbox": "npm:3.16.0"
"@react-aria/focus": "npm:3.21.0"
"@react-aria/interactions": "npm:3.25.4"
"@react-stately/checkbox": "npm:3.7.0"
"@react-stately/toggle": "npm:3.9.0"
"@react-types/checkbox": "npm:3.10.0"
"@react-types/shared": "npm:3.31.0"
peerDependencies:
"@heroui/system": ">=2.4.18"
"@heroui/theme": ">=2.4.17"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/6eeaa17d7e8ec076dcc666ad1fc658a308d55000525b36ad97a6f0b9e540f025fb4e3db7955e0b195699d1c21c61127adde3068d86472b9ebf225ec48813a2e9
languageName: node
linkType: hard
"@heroui/chip@npm:2.2.15":
version: 2.2.15
resolution: "@heroui/chip@npm:2.2.15"
dependencies:
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-icons": "npm:2.1.7"
"@heroui/shared-utils": "npm:2.1.9"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/interactions": "npm:3.25.0"
"@react-aria/utils": "npm:3.28.2"
"@react-types/checkbox": "npm:3.9.3"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/0b2cd9eadfefea77ee2e48e8f98a74935ddd059446fd793f667bee536a4b81a2b476255586e79b8502c5dc14b1607a104b8acb72b9cd7d3ef9e9183c8dc65d27
languageName: node
linkType: hard
"@heroui/code@npm:2.2.14":
version: 2.2.14
resolution: "@heroui/code@npm:2.2.14"
dependencies:
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/system-rsc": "npm:2.3.13"
peerDependencies:
"@heroui/theme": ">=2.4.6"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/d57bd9d2fd3326baeb54da5d0b07b3cdca4cc340c5cd81f83a128b6f76d18cc769545878898c2ff95efcbe6a9025d729c888f7363311b162783561f163a5942a
languageName: node
linkType: hard
"@heroui/date-input@npm:2.3.18":
version: 2.3.18
resolution: "@heroui/date-input@npm:2.3.18"
dependencies:
"@heroui/form": "npm:2.1.18"
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.9"
"@internationalized/date": "npm:3.8.0"
"@react-aria/datepicker": "npm:3.14.2"
"@react-aria/i18n": "npm:3.12.8"
"@react-aria/utils": "npm:3.28.2"
"@react-stately/datepicker": "npm:3.14.0"
"@react-types/datepicker": "npm:3.12.0"
"@react-types/shared": "npm:3.29.0"
peerDependencies:
"@heroui/system": ">=2.4.10"
"@heroui/theme": ">=2.4.9"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/b42039dbc056ea90c0a289444418e2a69bbf21daeb1f245d47e2fb67cca888df69e720a61c899691a94baae99248ebae5938739e0e643ca81ea67384202c3f6c
languageName: node
linkType: hard
"@heroui/date-picker@npm:2.3.19":
version: 2.3.19
resolution: "@heroui/date-picker@npm:2.3.19"
dependencies:
"@heroui/aria-utils": "npm:2.2.16"
"@heroui/button": "npm:2.2.19"
"@heroui/calendar": "npm:2.2.19"
"@heroui/date-input": "npm:2.3.18"
"@heroui/form": "npm:2.1.18"
"@heroui/popover": "npm:2.3.19"
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-icons": "npm:2.1.7"
"@heroui/shared-utils": "npm:2.1.9"
"@internationalized/date": "npm:3.8.0"
"@react-aria/datepicker": "npm:3.14.2"
"@react-aria/i18n": "npm:3.12.8"
"@react-aria/utils": "npm:3.28.2"
"@react-stately/datepicker": "npm:3.14.0"
"@react-stately/overlays": "npm:3.6.15"
"@react-stately/utils": "npm:3.10.6"
"@react-types/datepicker": "npm:3.12.0"
"@react-types/shared": "npm:3.29.0"
peerDependencies:
"@heroui/system": ">=2.4.10"
"@heroui/theme": ">=2.4.9"
framer-motion: ">=11.5.6 || >=12.0.0-alpha.1"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/375d35d03ba6968c0cbd74d406f309fc55a99890564654e636534d29f6088edb86bccfcf390268264eee9503d15ec8579ca103e3cb7f664c3ef6bb32b3b9b338
languageName: node
linkType: hard
"@heroui/divider@npm:2.2.13":
version: 2.2.13
resolution: "@heroui/divider@npm:2.2.13"
dependencies:
"@heroui/react-rsc-utils": "npm:2.1.7"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/system-rsc": "npm:2.3.13"
"@react-types/shared": "npm:3.29.0"
peerDependencies:
"@heroui/theme": ">=2.4.6"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/7681905ec64cc37b93490a4f7d17cfdf594c990d5c85abdd36d3874722f874489b7d7e234e0bd4668d88112e5c73231964b04f2be490954b5bf099449fe5ce5a
languageName: node
linkType: hard
"@heroui/divider@npm:2.2.17":
version: 2.2.17
resolution: "@heroui/divider@npm:2.2.17"
dependencies:
"@heroui/react-rsc-utils": "npm:2.1.9"
"@heroui/system-rsc": "npm:2.3.17"
"@react-types/shared": "npm:3.31.0"
peerDependencies:
"@heroui/theme": ">=2.4.17"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/1ce07b792fd9c14c20535a46d31d56a09c5d5955c0e2cd0c4a451cef0cd996faeeb4c218ccb8e6f25e976674c0b098d9489fb963b349ed3c58f0edaabb4f034e
languageName: node
linkType: hard
"@heroui/dom-animation@npm:2.1.10":
version: 2.1.10
resolution: "@heroui/dom-animation@npm:2.1.10"
peerDependencies:
framer-motion: ">=11.5.6 || >=12.0.0-alpha.1"
checksum: 10c0/dc111d80b4364109f45610cd9f3ff8ed75b92ef97b86f74685d626ac27d9a58d59ab1c8505d53830aad4ebd2fd22587213dcfde9d2d126a4c0e61071b6291300
languageName: node
linkType: hard
"@heroui/dom-animation@npm:2.1.8":
version: 2.1.8
resolution: "@heroui/dom-animation@npm:2.1.8"
peerDependencies:
framer-motion: ">=11.5.6 || >=12.0.0-alpha.1"
checksum: 10c0/731d0baef0fe2dfec9700734f0e0ac5c9ca51e3e6fb0335517e99057049efe831a192d286f0311bd98a484ccf672954b0eabb1cad57cc945f46586a9dde6bd9d
languageName: node
linkType: hard
"@heroui/drawer@npm:2.2.16":
version: 2.2.16
resolution: "@heroui/drawer@npm:2.2.16"
dependencies:
"@heroui/framer-utils": "npm:2.1.15"
"@heroui/modal": "npm:2.2.16"
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.9"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/baf8964787b93effebc5b736e38175417955dbc14935db8cb41afb0f585e298e9b0f9ac103a109f833f0dfdfc4ce1759315d62e78ae557b4d6a25901938c887e
languageName: node
linkType: hard
"@heroui/dropdown@npm:2.3.19":
version: 2.3.19
resolution: "@heroui/dropdown@npm:2.3.19"
dependencies:
"@heroui/aria-utils": "npm:2.2.16"
"@heroui/menu": "npm:2.2.18"
"@heroui/popover": "npm:2.3.19"
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.9"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/menu": "npm:3.18.2"
"@react-aria/utils": "npm:3.28.2"
"@react-stately/menu": "npm:3.9.3"
"@react-types/menu": "npm:3.10.0"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
framer-motion: ">=11.5.6 || >=12.0.0-alpha.1"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/59c0b9b086be578c39478adf645d43341a998d63d0edf09220f783a3128acb59d105939db25d29505b1a9ed8b7eb2cb94e000fc0a136aeb17b416eb0d3ea3c66
languageName: node
linkType: hard
"@heroui/form@npm:2.1.18":
version: 2.1.18
resolution: "@heroui/form@npm:2.1.18"
dependencies:
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/system": "npm:2.4.15"
"@heroui/theme": "npm:2.4.15"
"@react-aria/utils": "npm:3.28.2"
"@react-stately/form": "npm:3.1.3"
"@react-types/form": "npm:3.7.11"
"@react-types/shared": "npm:3.29.0"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
react: ">=18"
react-dom: ">=18"
checksum: 10c0/c25d273c8a27b211663a90ac4c563ceb5e9d082254ea065b8b4e6fa576fd79a4e05937a9f2075746c4c18c2c976f1dd7b91402819c69be7c9e03082533a46403
languageName: node
linkType: hard
"@heroui/form@npm:2.1.24":
version: 2.1.24
resolution: "@heroui/form@npm:2.1.24"
dependencies:
"@heroui/shared-utils": "npm:2.1.10"
"@heroui/system": "npm:2.4.20"
"@heroui/theme": "npm:2.4.20"
"@react-stately/form": "npm:3.2.0"
"@react-types/form": "npm:3.7.14"
"@react-types/shared": "npm:3.31.0"
peerDependencies:
"@heroui/system": ">=2.4.18"
"@heroui/theme": ">=2.4.17"
react: ">=18"
react-dom: ">=18"
checksum: 10c0/86697ad51502ba862caaaa763b5eab3de4a42c13da49799fd7f09ebc276246f33edce468885f2f2453fdb4b2cb390949ec40ef45b3210776bda15e4cc19ed01b
languageName: node
linkType: hard
"@heroui/framer-utils@npm:2.1.15":
version: 2.1.15
resolution: "@heroui/framer-utils@npm:2.1.15"
dependencies:
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/system": "npm:2.4.15"
"@heroui/use-measure": "npm:2.1.7"
peerDependencies:
framer-motion: ">=11.5.6 || >=12.0.0-alpha.1"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/a69a2e809e2f7c719eaf54d58440563c825849ac7c4aecaed77f242b8dbf60b563acffdc6e2e07ad61b7c4f0df1f1e752a2dc3f29d394d7f03e42496a59bb177
languageName: node
linkType: hard
"@heroui/framer-utils@npm:2.1.20":
version: 2.1.20
resolution: "@heroui/framer-utils@npm:2.1.20"
dependencies:
"@heroui/system": "npm:2.4.20"
"@heroui/use-measure": "npm:2.1.8"
peerDependencies:
framer-motion: ">=11.5.6 || >=12.0.0-alpha.1"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/7266ec678720c32204e5db0b6a90d666c7a5700a7c981e12d8f828f01940e5566972ac3d805234c9ea74d177a84f4280d4c80e47831ac54a9a02b9a511acd4c8
languageName: node
linkType: hard
"@heroui/image@npm:2.2.12":
version: 2.2.12
resolution: "@heroui/image@npm:2.2.12"
dependencies:
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/use-image": "npm:2.1.9"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/922275600c716ab4664310e00c42444598c287347d1f69a05aa00b788f01fd37df29a26f10d0974034c5f95b8376a95f50f6eec98032fa67548095210fa01cdc
languageName: node
linkType: hard
"@heroui/input-otp@npm:2.1.18":
version: 2.1.18
resolution: "@heroui/input-otp@npm:2.1.18"
dependencies:
"@heroui/form": "npm:2.1.18"
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.9"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/form": "npm:3.0.15"
"@react-aria/utils": "npm:3.28.2"
"@react-stately/form": "npm:3.1.3"
"@react-stately/utils": "npm:3.10.6"
"@react-types/textfield": "npm:3.12.1"
input-otp: "npm:1.4.1"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.13"
react: ">=18"
react-dom: ">=18"
checksum: 10c0/4c31e675b85cc1f495eecf8ae52831ac2d4bf43b976cdcad1fc229872a5bde40f1b72968a31c860aec829c6d2661f9b77267e8348a2706cd448e621d1dd46f06
languageName: node
linkType: hard
"@heroui/input@npm:2.4.19":
version: 2.4.19
resolution: "@heroui/input@npm:2.4.19"
dependencies:
"@heroui/form": "npm:2.1.18"
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-icons": "npm:2.1.7"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/use-safe-layout-effect": "npm:2.1.7"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/interactions": "npm:3.25.0"
"@react-aria/textfield": "npm:3.17.2"
"@react-aria/utils": "npm:3.28.2"
"@react-stately/utils": "npm:3.10.6"
"@react-types/shared": "npm:3.29.0"
"@react-types/textfield": "npm:3.12.1"
react-textarea-autosize: "npm:^8.5.3"
peerDependencies:
"@heroui/system": ">=2.4.10"
"@heroui/theme": ">=2.4.12"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/17b943518ea5a0bf65719981e0b45f2514ccbdd6de864772e6f9bcca0c2010e43f39fb42972510272518c3a59c46294167932a8e91d4275207c3805ba6aed0ba
languageName: node
linkType: hard
"@heroui/kbd@npm:2.2.15":
version: 2.2.15
resolution: "@heroui/kbd@npm:2.2.15"
dependencies:
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/system-rsc": "npm:2.3.13"
"@react-aria/utils": "npm:3.28.2"
peerDependencies:
"@heroui/theme": ">=2.4.6"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/8c6e28d8503d8d2b2547fae2113000679df1e6d64bc518478f931fb12660dbb1e70ddf47a35ab16784f422ff3801de5c8ce57f5cd92e23c6d521e589c16409db
languageName: node
linkType: hard
"@heroui/link@npm:2.2.16":
version: 2.2.16
resolution: "@heroui/link@npm:2.2.16"
dependencies:
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-icons": "npm:2.1.7"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/use-aria-link": "npm:2.2.14"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/link": "npm:3.8.0"
"@react-aria/utils": "npm:3.28.2"
"@react-types/link": "npm:3.6.0"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/0c4f523215d593d18b64f4234c9e28b237cc6339e56104c858cb163f06d860d084ecaed4d7343157dbf3a8dfc64ffb725246f16e7f879d65f2208a89f247f2fa
languageName: node
linkType: hard
"@heroui/listbox@npm:2.3.18":
version: 2.3.18
resolution: "@heroui/listbox@npm:2.3.18"
dependencies:
"@heroui/aria-utils": "npm:2.2.16"
"@heroui/divider": "npm:2.2.13"
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/use-is-mobile": "npm:2.2.9"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/interactions": "npm:3.25.0"
"@react-aria/listbox": "npm:3.14.3"
"@react-aria/utils": "npm:3.28.2"
"@react-stately/list": "npm:3.12.1"
"@react-types/menu": "npm:3.10.0"
"@react-types/shared": "npm:3.29.0"
"@tanstack/react-virtual": "npm:3.11.3"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/bff30b43e4916feed85c1089694c499d6972426999ffaf94f644e73ca08e12d8f1f98e7a2c4a4bd937f1981fd353e3473730bca9ce34e9d218535b19a787ee3b
languageName: node
linkType: hard
"@heroui/listbox@npm:2.3.23":
version: 2.3.23
resolution: "@heroui/listbox@npm:2.3.23"
dependencies:
"@heroui/aria-utils": "npm:2.2.21"
"@heroui/divider": "npm:2.2.17"
"@heroui/react-utils": "npm:2.1.12"
"@heroui/shared-utils": "npm:2.1.10"
"@heroui/use-is-mobile": "npm:2.2.12"
"@react-aria/focus": "npm:3.21.0"
"@react-aria/interactions": "npm:3.25.4"
"@react-aria/listbox": "npm:3.14.7"
"@react-stately/list": "npm:3.12.4"
"@react-types/shared": "npm:3.31.0"
"@tanstack/react-virtual": "npm:3.11.3"
peerDependencies:
"@heroui/system": ">=2.4.18"
"@heroui/theme": ">=2.4.17"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/395ae59a33eeda2180c02fbacb4c496d3b103d5e07b5d109eafc04f601eddef589bf75a1f4d2e855ba27a7890aff4f9ef856cc4cb594b227a1a350b02bf43e18
languageName: node
linkType: hard
"@heroui/menu@npm:2.2.18":
version: 2.2.18
resolution: "@heroui/menu@npm:2.2.18"
dependencies:
"@heroui/aria-utils": "npm:2.2.16"
"@heroui/divider": "npm:2.2.13"
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/use-is-mobile": "npm:2.2.9"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/interactions": "npm:3.25.0"
"@react-aria/menu": "npm:3.18.2"
"@react-aria/utils": "npm:3.28.2"
"@react-stately/menu": "npm:3.9.3"
"@react-stately/tree": "npm:3.8.9"
"@react-types/menu": "npm:3.10.0"
"@react-types/shared": "npm:3.29.0"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/c589b05d9af83297bf1397ece52fcf305a698a53ef66af58f2cd7dc9f8a609e893bcf85e1fb8bfb743df4b3dcc0a177b7b38c180b2a212747ab5e46ddbc13f1c
languageName: node
linkType: hard
"@heroui/modal@npm:2.2.16":
version: 2.2.16
resolution: "@heroui/modal@npm:2.2.16"
dependencies:
"@heroui/dom-animation": "npm:2.1.8"
"@heroui/framer-utils": "npm:2.1.15"
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-icons": "npm:2.1.7"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/use-aria-button": "npm:2.2.13"
"@heroui/use-aria-modal-overlay": "npm:2.2.12"
"@heroui/use-disclosure": "npm:2.2.11"
"@heroui/use-draggable": "npm:2.1.11"
"@react-aria/dialog": "npm:3.5.24"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/interactions": "npm:3.25.0"
"@react-aria/overlays": "npm:3.27.0"
"@react-aria/utils": "npm:3.28.2"
"@react-stately/overlays": "npm:3.6.15"
"@react-types/overlays": "npm:3.8.14"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
framer-motion: ">=11.5.6 || >=12.0.0-alpha.1"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/c1f96831d8854757faa244407855f2dec9941f40ba3d1fb28cd0de7438b59885548994f6eee0e2a68c0d18b853ac2016306cd33eee0c612a97c84ba48b6d53f3
languageName: node
linkType: hard
"@heroui/navbar@npm:2.2.17":
version: 2.2.17
resolution: "@heroui/navbar@npm:2.2.17"
dependencies:
"@heroui/dom-animation": "npm:2.1.8"
"@heroui/framer-utils": "npm:2.1.15"
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/use-scroll-position": "npm:2.1.7"
"@react-aria/button": "npm:3.13.0"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/interactions": "npm:3.25.0"
"@react-aria/overlays": "npm:3.27.0"
"@react-aria/utils": "npm:3.28.2"
"@react-stately/toggle": "npm:3.8.3"
"@react-stately/utils": "npm:3.10.6"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
framer-motion: ">=11.5.6 || >=12.0.0-alpha.1"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/72b223d9c696b27e957b1ae401679429715a737dd938821ec34bcdc885003673add9d47199776b60bb8d96918d7d2b067f18dbc948de90f6f8c4115e910f9d8a
languageName: node
linkType: hard
"@heroui/number-input@npm:2.0.9":
version: 2.0.9
resolution: "@heroui/number-input@npm:2.0.9"
dependencies:
"@heroui/button": "npm:2.2.19"
"@heroui/form": "npm:2.1.18"
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-icons": "npm:2.1.7"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/use-safe-layout-effect": "npm:2.1.7"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/i18n": "npm:3.12.8"
"@react-aria/interactions": "npm:3.25.0"
"@react-aria/numberfield": "npm:3.11.13"
"@react-aria/utils": "npm:3.28.2"
"@react-stately/numberfield": "npm:3.9.11"
"@react-stately/utils": "npm:3.10.6"
"@react-types/button": "npm:3.12.0"
"@react-types/numberfield": "npm:3.8.10"
"@react-types/shared": "npm:3.29.0"
peerDependencies:
"@heroui/system": ">=2.4.10"
"@heroui/theme": ">=2.4.9"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/2b66932ed402d25f4f06ba9b00cf9115b7ae603885e8672669423676404872bc4f1eb8f2de00876221a903ae947ebf058e68fc09ed8043883185458fab25d650
languageName: node
linkType: hard
"@heroui/pagination@npm:2.2.17":
version: 2.2.17
resolution: "@heroui/pagination@npm:2.2.17"
dependencies:
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-icons": "npm:2.1.7"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/use-intersection-observer": "npm:2.2.11"
"@heroui/use-pagination": "npm:2.2.12"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/i18n": "npm:3.12.8"
"@react-aria/interactions": "npm:3.25.0"
"@react-aria/utils": "npm:3.28.2"
scroll-into-view-if-needed: "npm:3.0.10"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/303307b34007d5ab2320a5ddeafdc3a42702349d50b0317d39fd069650e20e738cb7e1ae5c6ed2b06094196035e65ccc9861e9af1942d1a3e9e0a2cb8570f0dd
languageName: node
linkType: hard
"@heroui/pagination@npm:^2.2.17":
version: 2.2.22
resolution: "@heroui/pagination@npm:2.2.22"
dependencies:
"@heroui/react-utils": "npm:2.1.12"
"@heroui/shared-icons": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.10"
"@heroui/use-intersection-observer": "npm:2.2.14"
"@heroui/use-pagination": "npm:2.2.16"
"@react-aria/focus": "npm:3.21.0"
"@react-aria/i18n": "npm:3.12.11"
"@react-aria/interactions": "npm:3.25.4"
"@react-aria/utils": "npm:3.30.0"
scroll-into-view-if-needed: "npm:3.0.10"
peerDependencies:
"@heroui/system": ">=2.4.18"
"@heroui/theme": ">=2.4.17"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/48d660967b6e0fdca281ee569c95e28834d67be6ec784edc57c9c64fcfc1e1f7035452b93e1d54794e2fa525b7d2b4d3e54cfec03d61678583bcb08b6a109528
languageName: node
linkType: hard
"@heroui/popover@npm:2.3.19":
version: 2.3.19
resolution: "@heroui/popover@npm:2.3.19"
dependencies:
"@heroui/aria-utils": "npm:2.2.16"
"@heroui/button": "npm:2.2.19"
"@heroui/dom-animation": "npm:2.1.8"
"@heroui/framer-utils": "npm:2.1.15"
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/use-aria-button": "npm:2.2.13"
"@heroui/use-safe-layout-effect": "npm:2.1.7"
"@react-aria/dialog": "npm:3.5.24"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/interactions": "npm:3.25.0"
"@react-aria/overlays": "npm:3.27.0"
"@react-aria/utils": "npm:3.28.2"
"@react-stately/overlays": "npm:3.6.15"
"@react-types/button": "npm:3.12.0"
"@react-types/overlays": "npm:3.8.14"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
framer-motion: ">=11.5.6 || >=12.0.0-alpha.1"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/64a250e05e8838475f6fd24d54a9cdebb6ead008f1bf0c88581956532010643b9746c79e5557c933e7ff97956ad528d659ecb833aaea2f7a49dcf5e1a118e052
languageName: node
linkType: hard
"@heroui/popover@npm:2.3.24":
version: 2.3.24
resolution: "@heroui/popover@npm:2.3.24"
dependencies:
"@heroui/aria-utils": "npm:2.2.21"
"@heroui/button": "npm:2.2.24"
"@heroui/dom-animation": "npm:2.1.10"
"@heroui/framer-utils": "npm:2.1.20"
"@heroui/react-utils": "npm:2.1.12"
"@heroui/shared-utils": "npm:2.1.10"
"@heroui/use-aria-button": "npm:2.2.18"
"@heroui/use-aria-overlay": "npm:2.0.2"
"@heroui/use-safe-layout-effect": "npm:2.1.8"
"@react-aria/dialog": "npm:3.5.28"
"@react-aria/focus": "npm:3.21.0"
"@react-aria/overlays": "npm:3.28.0"
"@react-stately/overlays": "npm:3.6.18"
"@react-types/overlays": "npm:3.9.0"
peerDependencies:
"@heroui/system": ">=2.4.18"
"@heroui/theme": ">=2.4.17"
framer-motion: ">=11.5.6 || >=12.0.0-alpha.1"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/a3b8cda2e95c25c120c4fc4955816c3f0ea14294c57f6ab3db5e630c4f1fb9c54b11f4d5ad8fbef3f01a9ff8093c9c61e9840187f038169c9f8831fabb12f811
languageName: node
linkType: hard
"@heroui/progress@npm:2.2.15":
version: 2.2.15
resolution: "@heroui/progress@npm:2.2.15"
dependencies:
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/use-is-mounted": "npm:2.1.7"
"@react-aria/i18n": "npm:3.12.8"
"@react-aria/progress": "npm:3.4.22"
"@react-aria/utils": "npm:3.28.2"
"@react-types/progress": "npm:3.5.11"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/dfbbf675db9da8358687b5a5e79692a853b4f9d2494f2bbc9a4a8d446764faf4e95903de2651698d1888b3a5650a2a2f904a30f3d247e2b141884d5f46b31a1a
languageName: node
linkType: hard
"@heroui/radio@npm:2.3.18":
version: 2.3.18
resolution: "@heroui/radio@npm:2.3.18"
dependencies:
"@heroui/form": "npm:2.1.18"
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.9"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/interactions": "npm:3.25.0"
"@react-aria/radio": "npm:3.11.2"
"@react-aria/utils": "npm:3.28.2"
"@react-aria/visually-hidden": "npm:3.8.22"
"@react-stately/radio": "npm:3.10.12"
"@react-types/radio": "npm:3.8.8"
"@react-types/shared": "npm:3.29.0"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.3"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/79c784535bb0f5873ffb63a9df6e7461d29557828963cf03d809b2915ad739a5048143912163601d3d3bf7ffaa13210db02b65c2ccdbb1550ef2217e967cb66c
languageName: node
linkType: hard
"@heroui/react-rsc-utils@npm:2.1.7":
version: 2.1.7
resolution: "@heroui/react-rsc-utils@npm:2.1.7"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/3828b02a790bba27f289a2262134c4d7db8f91731aa66ba7607a9b4e2d71b460ce3cfadf3b97a552175acd9516b2c4f86852cdb21fa2d3aec409b03beb588003
languageName: node
linkType: hard
"@heroui/react-rsc-utils@npm:2.1.9":
version: 2.1.9
resolution: "@heroui/react-rsc-utils@npm:2.1.9"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/b3b400c4ae701a89d9bd7301d41f49861eb2cf891dd1b6ce5f9b31260197beb9ac947fa434ec26d91d4214f88e1c049c84a0d50846530081de0dd81a01cfdcb2
languageName: node
linkType: hard
"@heroui/react-utils@npm:2.1.10":
version: 2.1.10
resolution: "@heroui/react-utils@npm:2.1.10"
dependencies:
"@heroui/react-rsc-utils": "npm:2.1.7"
"@heroui/shared-utils": "npm:2.1.9"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/d2fda2d81fff7a2e6dce86902a3700cbb292676bd57fa3972567d6c62c14d2d30b28df7a2a30fe684f1bd1520199bf2fdbf1012faba4b7bc584725f683fd5a9e
languageName: node
linkType: hard
"@heroui/react-utils@npm:2.1.12":
version: 2.1.12
resolution: "@heroui/react-utils@npm:2.1.12"
dependencies:
"@heroui/react-rsc-utils": "npm:2.1.9"
"@heroui/shared-utils": "npm:2.1.10"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/4f07dda2eaef3f37d48c11d9ffe3c3415a50ce311c57a41bc2aa49a484d2e2c5314c557553b146976a9f01ca6a32c7a4d4d24fdafd9fd357c8adeb8f04f609d9
languageName: node
linkType: hard
"@heroui/react@npm:^2.7.8":
version: 2.7.8
resolution: "@heroui/react@npm:2.7.8"
dependencies:
"@heroui/accordion": "npm:2.2.16"
"@heroui/alert": "npm:2.2.19"
"@heroui/autocomplete": "npm:2.3.20"
"@heroui/avatar": "npm:2.2.15"
"@heroui/badge": "npm:2.2.12"
"@heroui/breadcrumbs": "npm:2.2.15"
"@heroui/button": "npm:2.2.19"
"@heroui/calendar": "npm:2.2.19"
"@heroui/card": "npm:2.2.18"
"@heroui/checkbox": "npm:2.3.18"
"@heroui/chip": "npm:2.2.15"
"@heroui/code": "npm:2.2.14"
"@heroui/date-input": "npm:2.3.18"
"@heroui/date-picker": "npm:2.3.19"
"@heroui/divider": "npm:2.2.13"
"@heroui/drawer": "npm:2.2.16"
"@heroui/dropdown": "npm:2.3.19"
"@heroui/form": "npm:2.1.18"
"@heroui/framer-utils": "npm:2.1.15"
"@heroui/image": "npm:2.2.12"
"@heroui/input": "npm:2.4.19"
"@heroui/input-otp": "npm:2.1.18"
"@heroui/kbd": "npm:2.2.15"
"@heroui/link": "npm:2.2.16"
"@heroui/listbox": "npm:2.3.18"
"@heroui/menu": "npm:2.2.18"
"@heroui/modal": "npm:2.2.16"
"@heroui/navbar": "npm:2.2.17"
"@heroui/number-input": "npm:2.0.9"
"@heroui/pagination": "npm:2.2.17"
"@heroui/popover": "npm:2.3.19"
"@heroui/progress": "npm:2.2.15"
"@heroui/radio": "npm:2.3.18"
"@heroui/ripple": "npm:2.2.14"
"@heroui/scroll-shadow": "npm:2.3.13"
"@heroui/select": "npm:2.4.19"
"@heroui/skeleton": "npm:2.2.12"
"@heroui/slider": "npm:2.4.16"
"@heroui/snippet": "npm:2.2.20"
"@heroui/spacer": "npm:2.2.14"
"@heroui/spinner": "npm:2.2.16"
"@heroui/switch": "npm:2.2.17"
"@heroui/system": "npm:2.4.15"
"@heroui/table": "npm:2.2.18"
"@heroui/tabs": "npm:2.2.16"
"@heroui/theme": "npm:2.4.15"
"@heroui/toast": "npm:2.0.9"
"@heroui/tooltip": "npm:2.2.16"
"@heroui/user": "npm:2.2.15"
"@react-aria/visually-hidden": "npm:3.8.22"
peerDependencies:
framer-motion: ">=11.5.6 || >=12.0.0-alpha.1"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/574790aff3dfe2a55136a6012ea76106b3504a7d0d6d952d57964203f46c8878ce6f0509eb170b7eaed922dda233316c3d670915cc038f472385f10207d63842
languageName: node
linkType: hard
"@heroui/ripple@npm:2.2.14":
version: 2.2.14
resolution: "@heroui/ripple@npm:2.2.14"
dependencies:
"@heroui/dom-animation": "npm:2.1.8"
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.9"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
framer-motion: ">=11.5.6 || >=12.0.0-alpha.1"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/0cc48c88cd4a6f5806237444cefb13458a24f71cffd344e1aaf288c3096844a04a38b0a93361c5c38ed8806e9f0a04a479b2e053d46e9c66e4fde6e353f0dd95
languageName: node
linkType: hard
"@heroui/ripple@npm:2.2.18":
version: 2.2.18
resolution: "@heroui/ripple@npm:2.2.18"
dependencies:
"@heroui/dom-animation": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.10"
peerDependencies:
"@heroui/system": ">=2.4.18"
"@heroui/theme": ">=2.4.17"
framer-motion: ">=11.5.6 || >=12.0.0-alpha.1"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/7f2e601988132404fb354c14349d071219d24a8d5d41b33a6510a14a0e82f0c9e4331d6194c63dc9d3c90b4f4d9acee0c8c41a7e786ef943c1f6457759f7a891
languageName: node
linkType: hard
"@heroui/scroll-shadow@npm:2.3.13":
version: 2.3.13
resolution: "@heroui/scroll-shadow@npm:2.3.13"
dependencies:
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/use-data-scroll-overflow": "npm:2.2.10"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/13e01555e3a89c5bb5dcced9de5407a7c688e77cb777c9ddfc33c50b83403406f721e8d688ce2cd0b4be314209f6c3f3f4b38c5272b3a56b9b7695bfeb663cd1
languageName: node
linkType: hard
"@heroui/scroll-shadow@npm:2.3.16":
version: 2.3.16
resolution: "@heroui/scroll-shadow@npm:2.3.16"
dependencies:
"@heroui/react-utils": "npm:2.1.12"
"@heroui/shared-utils": "npm:2.1.10"
"@heroui/use-data-scroll-overflow": "npm:2.2.11"
peerDependencies:
"@heroui/system": ">=2.4.18"
"@heroui/theme": ">=2.4.17"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/ba2e48d9c04be58ca75a2f40602313c74de4569daa885b222aeb20520fcba46b7304e118e9a367501eb0cf0a4aa64cd852ae77291ccbd0631e8c3a0e22b5e7a6
languageName: node
linkType: hard
"@heroui/select@npm:2.4.19":
version: 2.4.19
resolution: "@heroui/select@npm:2.4.19"
dependencies:
"@heroui/aria-utils": "npm:2.2.16"
"@heroui/form": "npm:2.1.18"
"@heroui/listbox": "npm:2.3.18"
"@heroui/popover": "npm:2.3.19"
"@heroui/react-utils": "npm:2.1.10"
"@heroui/scroll-shadow": "npm:2.3.13"
"@heroui/shared-icons": "npm:2.1.7"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/spinner": "npm:2.2.16"
"@heroui/use-aria-button": "npm:2.2.13"
"@heroui/use-aria-multiselect": "npm:2.4.12"
"@heroui/use-safe-layout-effect": "npm:2.1.7"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/form": "npm:3.0.15"
"@react-aria/interactions": "npm:3.25.0"
"@react-aria/overlays": "npm:3.27.0"
"@react-aria/utils": "npm:3.28.2"
"@react-aria/visually-hidden": "npm:3.8.22"
"@react-types/shared": "npm:3.29.0"
"@tanstack/react-virtual": "npm:3.11.3"
peerDependencies:
"@heroui/system": ">=2.4.10"
"@heroui/theme": ">=2.4.12"
framer-motion: ">=11.5.6 || >=12.0.0-alpha.1"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/95e13635d8aa72d47896db804fe9cbcfe240b2b9dfa32225aef2864274046e5e212cd31227c536b0dae0a067d576441b979c7f78a59995e5ed9ef28efb5565b4
languageName: node
linkType: hard
"@heroui/select@npm:^2.4.19":
version: 2.4.25
resolution: "@heroui/select@npm:2.4.25"
dependencies:
"@heroui/aria-utils": "npm:2.2.21"
"@heroui/form": "npm:2.1.24"
"@heroui/listbox": "npm:2.3.23"
"@heroui/popover": "npm:2.3.24"
"@heroui/react-utils": "npm:2.1.12"
"@heroui/scroll-shadow": "npm:2.3.16"
"@heroui/shared-icons": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.10"
"@heroui/spinner": "npm:2.2.21"
"@heroui/use-aria-button": "npm:2.2.18"
"@heroui/use-aria-multiselect": "npm:2.4.17"
"@heroui/use-form-reset": "npm:2.0.1"
"@heroui/use-safe-layout-effect": "npm:2.1.8"
"@react-aria/focus": "npm:3.21.0"
"@react-aria/form": "npm:3.1.0"
"@react-aria/interactions": "npm:3.25.4"
"@react-aria/overlays": "npm:3.28.0"
"@react-aria/visually-hidden": "npm:3.8.26"
"@react-types/shared": "npm:3.31.0"
peerDependencies:
"@heroui/system": ">=2.4.18"
"@heroui/theme": ">=2.4.17"
framer-motion: ">=11.5.6 || >=12.0.0-alpha.1"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/8dd27c690f96196e33e7070e7b624398e43ecd90afdde2a3048533f997fe15cc36d0129d992cac82399a46b0d69a155adce20ef121145830ec647d12a03b5834
languageName: node
linkType: hard
"@heroui/shared-icons@npm:2.1.10":
version: 2.1.10
resolution: "@heroui/shared-icons@npm:2.1.10"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/69525f7e85364bc202981ca2d3e8c321435bf153b14b158577bc55e61c41be6e1962b951c61a1aba6b6adf7954ddd712f2330e5846612179520387cd045c9878
languageName: node
linkType: hard
"@heroui/shared-icons@npm:2.1.7":
version: 2.1.7
resolution: "@heroui/shared-icons@npm:2.1.7"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/22ce7fca8a565e032f6140817a3c3e668aa5445892ae9f52e42b639aa8175307bc5b3eb878107de8d3bdfddd15f9f151e2f6effe96271eb6cdb7f54ff823a267
languageName: node
linkType: hard
"@heroui/shared-utils@npm:2.1.10":
version: 2.1.10
resolution: "@heroui/shared-utils@npm:2.1.10"
checksum: 10c0/d8a1d27ea9fb18c7ae828f3b52b0fef2b19ebd2b2f3506f356a2359270d7420bd9b5d04daadf502759d7d8050f8c6a7e3294470ba59ea89af5f7a53d3e6a5c9a
languageName: node
linkType: hard
"@heroui/shared-utils@npm:2.1.9":
version: 2.1.9
resolution: "@heroui/shared-utils@npm:2.1.9"
checksum: 10c0/336f641c48fdab0b1633f0bab4ce559de95a4cc994c0287741dbfce6050d47cf8ec13130ba94671cd7aecba8771a2e14d368d3e5f299aedbeecdae1dddf873f1
languageName: node
linkType: hard
"@heroui/skeleton@npm:2.2.12":
version: 2.2.12
resolution: "@heroui/skeleton@npm:2.2.12"
dependencies:
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.9"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/a5fef406ba03755f1c7ada1f5e0d65399338a1276a53e60b0711b945c18df3037f03e90bb0b9c69f330ece1a1233bad37e34d28392bb80f7f7423ec538bb58ad
languageName: node
linkType: hard
"@heroui/slider@npm:2.4.16":
version: 2.4.16
resolution: "@heroui/slider@npm:2.4.16"
dependencies:
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/tooltip": "npm:2.2.16"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/i18n": "npm:3.12.8"
"@react-aria/interactions": "npm:3.25.0"
"@react-aria/slider": "npm:3.7.18"
"@react-aria/utils": "npm:3.28.2"
"@react-aria/visually-hidden": "npm:3.8.22"
"@react-stately/slider": "npm:3.6.3"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/4139f3d629a2a0e719a65495720a9abf1547b1a9200de190b1cfd73027681db1d6d7eca41919a228d96174b14586eb5beac27ccd1bcf645413f445cc7eb6536f
languageName: node
linkType: hard
"@heroui/snippet@npm:2.2.20":
version: 2.2.20
resolution: "@heroui/snippet@npm:2.2.20"
dependencies:
"@heroui/button": "npm:2.2.19"
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-icons": "npm:2.1.7"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/tooltip": "npm:2.2.16"
"@heroui/use-clipboard": "npm:2.1.8"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/utils": "npm:3.28.2"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
framer-motion: ">=11.5.6 || >=12.0.0-alpha.1"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/fa0abe5f1d58929e9e899b7d35bacaa7c6692f8a9f4146e96bc609c25e9da37f05c64a31760b9d3afe6a4e4d8037989041b5d19fab5a6377c89226c1264e47e1
languageName: node
linkType: hard
"@heroui/spacer@npm:2.2.14":
version: 2.2.14
resolution: "@heroui/spacer@npm:2.2.14"
dependencies:
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/system-rsc": "npm:2.3.13"
peerDependencies:
"@heroui/theme": ">=2.4.6"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/541b77d1f991d3fee9ad020c5ab69ed03d01e703b2a907b5e06cf573010b189f8ac9e3c2802c0c2777342ba84018fe106a742d3440121cdc1e0364bbaba67166
languageName: node
linkType: hard
"@heroui/spacer@npm:2.2.18":
version: 2.2.18
resolution: "@heroui/spacer@npm:2.2.18"
dependencies:
"@heroui/react-utils": "npm:2.1.12"
"@heroui/shared-utils": "npm:2.1.10"
"@heroui/system-rsc": "npm:2.3.17"
peerDependencies:
"@heroui/theme": ">=2.4.17"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/a3aa66035d8c7609891bba06c86be9fde383d3455bbc5059fa98b09bbbd1e4b5779e988c45273df966fee273c5ace2e18faf78cf0d10d9f9086bc202fdd09612
languageName: node
linkType: hard
"@heroui/spinner@npm:2.2.16":
version: 2.2.16
resolution: "@heroui/spinner@npm:2.2.16"
dependencies:
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/system": "npm:2.4.15"
"@heroui/system-rsc": "npm:2.3.13"
peerDependencies:
"@heroui/theme": ">=2.4.6"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/a912aa476b73e795d69facfbdc18264f47322ff80cbdcd5f7275ca1f7480a18773272558342d161231d10f31597f20663516db741e46458b0363f62efd80d557
languageName: node
linkType: hard
"@heroui/spinner@npm:2.2.21":
version: 2.2.21
resolution: "@heroui/spinner@npm:2.2.21"
dependencies:
"@heroui/shared-utils": "npm:2.1.10"
"@heroui/system": "npm:2.4.20"
"@heroui/system-rsc": "npm:2.3.17"
peerDependencies:
"@heroui/theme": ">=2.4.17"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/8ae63caffa2ea0b767550acb1d9c055da9758fa5dc510cb148c2152ba311b94b13e4979bbdd2e04d095204323f860d1a93e32cdd2b5ba1037bf774afbc5fa6d6
languageName: node
linkType: hard
"@heroui/switch@npm:2.2.17":
version: 2.2.17
resolution: "@heroui/switch@npm:2.2.17"
dependencies:
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/use-safe-layout-effect": "npm:2.1.7"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/interactions": "npm:3.25.0"
"@react-aria/switch": "npm:3.7.2"
"@react-aria/utils": "npm:3.28.2"
"@react-aria/visually-hidden": "npm:3.8.22"
"@react-stately/toggle": "npm:3.8.3"
"@react-types/shared": "npm:3.29.0"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.3"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/0fbd89e0b61731af2fa98caa47911e1fccf2275f731832a15cce4d5986ee7f0a291f1f0a9301386b8320726347454ddf0cf62208a236016c4455cf77fe27ee3c
languageName: node
linkType: hard
"@heroui/system-rsc@npm:2.3.13":
version: 2.3.13
resolution: "@heroui/system-rsc@npm:2.3.13"
dependencies:
"@react-types/shared": "npm:3.29.0"
clsx: "npm:^1.2.1"
peerDependencies:
"@heroui/theme": ">=2.4.6"
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/987cc02de926e5bea64bf6a931bd936101fcef63c5626f90f4af76baaf7aeeffea983e39b0a54c9502db0070df36e1458acdc229b604461e891abe387e13334a
languageName: node
linkType: hard
"@heroui/system-rsc@npm:2.3.17":
version: 2.3.17
resolution: "@heroui/system-rsc@npm:2.3.17"
dependencies:
"@react-types/shared": "npm:3.31.0"
clsx: "npm:^1.2.1"
peerDependencies:
"@heroui/theme": ">=2.4.17"
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/b3ec31d33e03d8af80e3c7bd1b7657df3d71677c4cd9036e0dcf84be5a4c1b1ac82960769ea17c57c19d037118a22db5ec9c056ea3264091e5f90f5784d61d64
languageName: node
linkType: hard
"@heroui/system@npm:2.4.15":
version: 2.4.15
resolution: "@heroui/system@npm:2.4.15"
dependencies:
"@heroui/react-utils": "npm:2.1.10"
"@heroui/system-rsc": "npm:2.3.13"
"@internationalized/date": "npm:3.8.0"
"@react-aria/i18n": "npm:3.12.8"
"@react-aria/overlays": "npm:3.27.0"
"@react-aria/utils": "npm:3.28.2"
"@react-stately/utils": "npm:3.10.6"
"@react-types/datepicker": "npm:3.12.0"
peerDependencies:
framer-motion: ">=11.5.6 || >=12.0.0-alpha.1"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/03c7891651d5785769ab1e3f1b19761eef813d51a0d488434e5d8bd7c1191d98867177b5a9f1aa552faba516175f201e04e4f165bb99ae3c45fd281882e06e51
languageName: node
linkType: hard
"@heroui/system@npm:2.4.20, @heroui/system@npm:^2.4.15":
version: 2.4.20
resolution: "@heroui/system@npm:2.4.20"
dependencies:
"@heroui/react-utils": "npm:2.1.12"
"@heroui/system-rsc": "npm:2.3.17"
"@react-aria/i18n": "npm:3.12.11"
"@react-aria/overlays": "npm:3.28.0"
"@react-aria/utils": "npm:3.30.0"
peerDependencies:
framer-motion: ">=11.5.6 || >=12.0.0-alpha.1"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/82e6d94b1161c6683af00203b4e1ff5a871d6bc2cc30f025b4e67dcdacd6b87c70494cd596ab40a5fc77523eeb9b3d859c337da145f19391af393c12a8ec88b1
languageName: node
linkType: hard
"@heroui/table@npm:2.2.18":
version: 2.2.18
resolution: "@heroui/table@npm:2.2.18"
dependencies:
"@heroui/checkbox": "npm:2.3.18"
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-icons": "npm:2.1.7"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/spacer": "npm:2.2.14"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/interactions": "npm:3.25.0"
"@react-aria/table": "npm:3.17.2"
"@react-aria/utils": "npm:3.28.2"
"@react-aria/visually-hidden": "npm:3.8.22"
"@react-stately/table": "npm:3.14.1"
"@react-stately/virtualizer": "npm:4.3.2"
"@react-types/grid": "npm:3.3.1"
"@react-types/table": "npm:3.12.0"
"@tanstack/react-virtual": "npm:3.11.3"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/0c93a9e1dcd6c83ab7d7a90e489aa73b56d3d24624e15eaa16edd62c98d30959f8bf82c8da8224b7fb5e914c2b8d3f388f682e1b76b7692187ee7a5351794795
languageName: node
linkType: hard
"@heroui/table@npm:^2.2.18":
version: 2.2.24
resolution: "@heroui/table@npm:2.2.24"
dependencies:
"@heroui/checkbox": "npm:2.3.24"
"@heroui/react-utils": "npm:2.1.12"
"@heroui/shared-icons": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.10"
"@heroui/spacer": "npm:2.2.18"
"@react-aria/focus": "npm:3.21.0"
"@react-aria/interactions": "npm:3.25.4"
"@react-aria/table": "npm:3.17.6"
"@react-aria/visually-hidden": "npm:3.8.26"
"@react-stately/table": "npm:3.14.4"
"@react-stately/virtualizer": "npm:4.4.2"
"@react-types/grid": "npm:3.3.4"
"@react-types/table": "npm:3.13.2"
"@tanstack/react-virtual": "npm:3.11.3"
peerDependencies:
"@heroui/system": ">=2.4.18"
"@heroui/theme": ">=2.4.17"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/02c16d47b5b373b11ad32a6af78c9ef7104e1d77515eb751d490fa7966f5fe04f189e123692d4003c96375e0f8a9b99f6d6cd22891b49c56ef84272f40c25c9c
languageName: node
linkType: hard
"@heroui/tabs@npm:2.2.16":
version: 2.2.16
resolution: "@heroui/tabs@npm:2.2.16"
dependencies:
"@heroui/aria-utils": "npm:2.2.16"
"@heroui/framer-utils": "npm:2.1.15"
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/use-is-mounted": "npm:2.1.7"
"@heroui/use-update-effect": "npm:2.1.7"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/interactions": "npm:3.25.0"
"@react-aria/tabs": "npm:3.10.2"
"@react-aria/utils": "npm:3.28.2"
"@react-stately/tabs": "npm:3.8.1"
"@react-types/shared": "npm:3.29.0"
"@react-types/tabs": "npm:3.3.14"
scroll-into-view-if-needed: "npm:3.0.10"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
framer-motion: ">=11.5.6 || >=12.0.0-alpha.1"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/dc5272be69a9c2c784b34c61586148904d9884d8c1073fcf0f3bfd302ce421f28328ebd344c671e1612cb97be4ffa079eed66e5740356f4a2416ef34c02dc96a
languageName: node
linkType: hard
"@heroui/theme@npm:2.4.15":
version: 2.4.15
resolution: "@heroui/theme@npm:2.4.15"
dependencies:
"@heroui/shared-utils": "npm:2.1.9"
clsx: "npm:^1.2.1"
color: "npm:^4.2.3"
color2k: "npm:^2.0.3"
deepmerge: "npm:4.3.1"
flat: "npm:^5.0.2"
tailwind-merge: "npm:2.5.4"
tailwind-variants: "npm:0.3.0"
peerDependencies:
tailwindcss: ">=3.4.0"
checksum: 10c0/c139f84c3027bb8835a3e5eb8ad21414c3b009bf63b938a78c8c03a07dd72baec8b6360e3257cefaa5c474369648c43eac3f886b686c0ba5a755ac6fc9d6e564
languageName: node
linkType: hard
"@heroui/theme@npm:2.4.20, @heroui/theme@npm:^2.4.15":
version: 2.4.20
resolution: "@heroui/theme@npm:2.4.20"
dependencies:
"@heroui/shared-utils": "npm:2.1.10"
clsx: "npm:^1.2.1"
color: "npm:^4.2.3"
color2k: "npm:^2.0.3"
deepmerge: "npm:4.3.1"
flat: "npm:^5.0.2"
tailwind-merge: "npm:3.3.1"
tailwind-variants: "npm:2.0.1"
peerDependencies:
tailwindcss: ">=4.0.0"
checksum: 10c0/a1ea366123892d42ce99d78a1f2da52b62e872d0b37c105032b2b6c77e9af48faf6263585160e00a895fa628838ad24684bfb99d8f364673513affe7bde5761c
languageName: node
linkType: hard
"@heroui/toast@npm:2.0.9":
version: 2.0.9
resolution: "@heroui/toast@npm:2.0.9"
dependencies:
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-icons": "npm:2.1.7"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/spinner": "npm:2.2.16"
"@heroui/use-is-mobile": "npm:2.2.9"
"@react-aria/interactions": "npm:3.25.0"
"@react-aria/toast": "npm:3.0.2"
"@react-aria/utils": "npm:3.28.2"
"@react-stately/toast": "npm:3.1.0"
"@react-stately/utils": "npm:3.10.6"
peerDependencies:
"@heroui/system": ">=2.4.10"
"@heroui/theme": ">=2.4.12"
framer-motion: ">=11.5.6 || >=12.0.0-alpha.1"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/e1aae6d2a37eac8c24eda8ba6ea91650ed0fed4bc0cf57388f803de5fbc32f985a23a9f7565355292bd3b483762f093693e8f359bfa555859b240a85a32d2cab
languageName: node
linkType: hard
"@heroui/tooltip@npm:2.2.16":
version: 2.2.16
resolution: "@heroui/tooltip@npm:2.2.16"
dependencies:
"@heroui/aria-utils": "npm:2.2.16"
"@heroui/dom-animation": "npm:2.1.8"
"@heroui/framer-utils": "npm:2.1.15"
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.9"
"@heroui/use-safe-layout-effect": "npm:2.1.7"
"@react-aria/interactions": "npm:3.25.0"
"@react-aria/overlays": "npm:3.27.0"
"@react-aria/tooltip": "npm:3.8.2"
"@react-aria/utils": "npm:3.28.2"
"@react-stately/tooltip": "npm:3.5.3"
"@react-types/overlays": "npm:3.8.14"
"@react-types/tooltip": "npm:3.4.16"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
framer-motion: ">=11.5.6 || >=12.0.0-alpha.1"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/e532156bec180bc409f2eae97ac2a7e1a152071ed0118a0c1be7b93b544ca17d6a52af59c72ff12326cc5e66d9e76dd9e5741abc4cee2c6521c0204f6bb78e93
languageName: node
linkType: hard
"@heroui/use-aria-accordion@npm:2.2.11":
version: 2.2.11
resolution: "@heroui/use-aria-accordion@npm:2.2.11"
dependencies:
"@react-aria/button": "npm:3.13.0"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/selection": "npm:3.24.0"
"@react-aria/utils": "npm:3.28.2"
"@react-stately/tree": "npm:3.8.9"
"@react-types/accordion": "npm:3.0.0-alpha.26"
"@react-types/shared": "npm:3.29.0"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/763f615920b326ac2c83ac1ef6897eff84044ef5394b81c699233f60828c4d39bf0b6292f906070cc641c0cb6d9cc0d64d18439050bbac8b145fab34487b57ed
languageName: node
linkType: hard
"@heroui/use-aria-button@npm:2.2.13":
version: 2.2.13
resolution: "@heroui/use-aria-button@npm:2.2.13"
dependencies:
"@heroui/shared-utils": "npm:2.1.9"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/interactions": "npm:3.25.0"
"@react-aria/utils": "npm:3.28.2"
"@react-types/button": "npm:3.12.0"
"@react-types/shared": "npm:3.29.0"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/0ffd637d848da7c213043e41a85f654a271363e524bd9441bbdd0232b2fded44ac7d9e218ca504bd52d7f958e3c691d2bcd2665a89a45cb7beb15cbcba9a9fa4
languageName: node
linkType: hard
"@heroui/use-aria-button@npm:2.2.18":
version: 2.2.18
resolution: "@heroui/use-aria-button@npm:2.2.18"
dependencies:
"@react-aria/focus": "npm:3.21.0"
"@react-aria/interactions": "npm:3.25.4"
"@react-aria/utils": "npm:3.30.0"
"@react-types/button": "npm:3.13.0"
"@react-types/shared": "npm:3.31.0"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/66d83ca40df7423f203a145fdf7fc90bb19a2949fc6da9a0bd64158c52751648f14ea1a549d32b3df650ccc139352d970c3853f80d7b29a57ae1420829d73a7f
languageName: node
linkType: hard
"@heroui/use-aria-link@npm:2.2.14":
version: 2.2.14
resolution: "@heroui/use-aria-link@npm:2.2.14"
dependencies:
"@heroui/shared-utils": "npm:2.1.9"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/interactions": "npm:3.25.0"
"@react-aria/utils": "npm:3.28.2"
"@react-types/link": "npm:3.6.0"
"@react-types/shared": "npm:3.29.0"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/1aea64c46e5ac96b2f223633306925a60c8879bf077ec837f0bb36c77d57c10880971af9ca5efeb9c2f64eae04a5bad871de5b59fdd384c1b0222bde14a43e4f
languageName: node
linkType: hard
"@heroui/use-aria-modal-overlay@npm:2.2.12":
version: 2.2.12
resolution: "@heroui/use-aria-modal-overlay@npm:2.2.12"
dependencies:
"@react-aria/overlays": "npm:3.27.0"
"@react-aria/utils": "npm:3.28.2"
"@react-stately/overlays": "npm:3.6.15"
"@react-types/shared": "npm:3.29.0"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/4c2538fae6c8899e476312630100d818e1242f61324c571177f6d2937c0da98b4bada70b8223f0d7fe455f7102971f44c027f183f8b5a8b6ee928f7bc8c10990
languageName: node
linkType: hard
"@heroui/use-aria-multiselect@npm:2.4.12":
version: 2.4.12
resolution: "@heroui/use-aria-multiselect@npm:2.4.12"
dependencies:
"@react-aria/i18n": "npm:3.12.8"
"@react-aria/interactions": "npm:3.25.0"
"@react-aria/label": "npm:3.7.17"
"@react-aria/listbox": "npm:3.14.3"
"@react-aria/menu": "npm:3.18.2"
"@react-aria/selection": "npm:3.24.0"
"@react-aria/utils": "npm:3.28.2"
"@react-stately/form": "npm:3.1.3"
"@react-stately/list": "npm:3.12.1"
"@react-stately/menu": "npm:3.9.3"
"@react-types/button": "npm:3.12.0"
"@react-types/overlays": "npm:3.8.14"
"@react-types/select": "npm:3.9.11"
"@react-types/shared": "npm:3.29.0"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/3c7a1a8058cbc9930f5f93dfff459e29e611d634f8d33ec71489bb6f052ad50430adcdf7a5739af2e07f10260236d83c99eac4c27ea1a1f57583a8f1a9c65287
languageName: node
linkType: hard
"@heroui/use-aria-multiselect@npm:2.4.17":
version: 2.4.17
resolution: "@heroui/use-aria-multiselect@npm:2.4.17"
dependencies:
"@react-aria/i18n": "npm:3.12.11"
"@react-aria/interactions": "npm:3.25.4"
"@react-aria/label": "npm:3.7.20"
"@react-aria/listbox": "npm:3.14.7"
"@react-aria/menu": "npm:3.19.0"
"@react-aria/selection": "npm:3.25.0"
"@react-aria/utils": "npm:3.30.0"
"@react-stately/form": "npm:3.2.0"
"@react-stately/list": "npm:3.12.4"
"@react-stately/menu": "npm:3.9.6"
"@react-types/button": "npm:3.13.0"
"@react-types/overlays": "npm:3.9.0"
"@react-types/shared": "npm:3.31.0"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/aebe94a9f15efa2a30f7bfffa78c8186183be7e471ca1341cdf3991cb9a7f5211f56e817b2b32d74baba7161497090b46105cf124e819c65f3c30aa920728e20
languageName: node
linkType: hard
"@heroui/use-aria-overlay@npm:2.0.2":
version: 2.0.2
resolution: "@heroui/use-aria-overlay@npm:2.0.2"
dependencies:
"@react-aria/focus": "npm:3.21.0"
"@react-aria/interactions": "npm:3.25.4"
"@react-aria/overlays": "npm:3.28.0"
"@react-types/shared": "npm:3.31.0"
peerDependencies:
react: ">=18"
react-dom: ">=18"
checksum: 10c0/ca58f0f153a406f7877a32ae986891458db1a90ac6ffbd44962f872decc9e1fb5283a0ab0af5725bdc88cc6c9c6f43869633de8ccf7007ab0e8799fdf24aec60
languageName: node
linkType: hard
"@heroui/use-callback-ref@npm:2.1.7":
version: 2.1.7
resolution: "@heroui/use-callback-ref@npm:2.1.7"
dependencies:
"@heroui/use-safe-layout-effect": "npm:2.1.7"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/8a22fda2c4defd01f328b8c82e0dbe4e91efa027884a36604fa495a9c82a7c39208dfac4d80a3e31360a599868a4ccf3f759ba592660f5fadc369fb8e98fbae2
languageName: node
linkType: hard
"@heroui/use-callback-ref@npm:2.1.8":
version: 2.1.8
resolution: "@heroui/use-callback-ref@npm:2.1.8"
dependencies:
"@heroui/use-safe-layout-effect": "npm:2.1.8"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/a1ab39bed0b9f58e890b9f3c6f9a58049d13510c618f8685ebceb60655a29969babe09c44a4480c086b69c5014058688801319f8a534197a71f000da6e05f440
languageName: node
linkType: hard
"@heroui/use-clipboard@npm:2.1.8, @heroui/use-clipboard@npm:^2.1.8":
version: 2.1.8
resolution: "@heroui/use-clipboard@npm:2.1.8"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/43ef0ff48b6dc0eceba1ed825d51d1b2e0de789d8e6d21723c49958a6b7cbb84294758bcf140fd4d7b74ce0ce12dc1631fef99804084276370dd37374ebd0f8b
languageName: node
linkType: hard
"@heroui/use-data-scroll-overflow@npm:2.2.10":
version: 2.2.10
resolution: "@heroui/use-data-scroll-overflow@npm:2.2.10"
dependencies:
"@heroui/shared-utils": "npm:2.1.9"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/feddf1308a443e3e39a3fc6302a7b6b90725b05f989d17cece569f01677ecacde3b07f43059427e7bbe195fea18f5f72cbf07ba5c7f0a598be6c395596e90710
languageName: node
linkType: hard
"@heroui/use-data-scroll-overflow@npm:2.2.11":
version: 2.2.11
resolution: "@heroui/use-data-scroll-overflow@npm:2.2.11"
dependencies:
"@heroui/shared-utils": "npm:2.1.10"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/ef060aef99fda153f24c44958c20ec94884ed27bcba78b3136bd4c163a105f3290f3aaa2b0758881230f1aeb7c72f39eda87d67331da943af47042c691c44a75
languageName: node
linkType: hard
"@heroui/use-disclosure@npm:2.2.11":
version: 2.2.11
resolution: "@heroui/use-disclosure@npm:2.2.11"
dependencies:
"@heroui/use-callback-ref": "npm:2.1.7"
"@react-aria/utils": "npm:3.28.2"
"@react-stately/utils": "npm:3.10.6"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/246e9e8f5cad81d98e78da90206ab9ef5419b62683d42f837ce6664f37eb82523f03a29c95ba073eeddfcd98ac92a6fdf84011443707ab245222cefb05a034a7
languageName: node
linkType: hard
"@heroui/use-draggable@npm:2.1.11":
version: 2.1.11
resolution: "@heroui/use-draggable@npm:2.1.11"
dependencies:
"@react-aria/interactions": "npm:3.25.0"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/da0d1732fbc4e964ea1483cb73f4e9383d71a70801fd67f4c72911159a6565b35df52d91ba31dc61c97d4d716ccead5a24e4d81fccb90c6d53677501f5500e97
languageName: node
linkType: hard
"@heroui/use-form-reset@npm:2.0.1":
version: 2.0.1
resolution: "@heroui/use-form-reset@npm:2.0.1"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/6c8ae0171b86cdf64cc6450005bdda9b0a944ba705aef0a2e42c9ca9f605353caa20a157ad445fef5f8402d25d140e31acd8a4e8fd147a7e802740a83577f996
languageName: node
linkType: hard
"@heroui/use-image@npm:2.1.9":
version: 2.1.9
resolution: "@heroui/use-image@npm:2.1.9"
dependencies:
"@heroui/react-utils": "npm:2.1.10"
"@heroui/use-safe-layout-effect": "npm:2.1.7"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/538d83457503dadd6ba1ff664623288aa9880013382c9567be28389a8ecb49ad36628c27cdf8b1051804a542d94ced8cde668a79c66e332097562303128a349d
languageName: node
linkType: hard
"@heroui/use-intersection-observer@npm:2.2.11":
version: 2.2.11
resolution: "@heroui/use-intersection-observer@npm:2.2.11"
dependencies:
"@react-aria/interactions": "npm:3.25.0"
"@react-aria/ssr": "npm:3.9.8"
"@react-aria/utils": "npm:3.28.2"
"@react-types/shared": "npm:3.29.0"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/63092962929cd57b9779718c3bbf34a3abf644bd45af0a26a9b33356cfd293881e7925705af823bba1cb6e731ff866356aa9b800b1cba13e34a7308445498183
languageName: node
linkType: hard
"@heroui/use-intersection-observer@npm:2.2.14":
version: 2.2.14
resolution: "@heroui/use-intersection-observer@npm:2.2.14"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/dd291622142b93406d7faa1f881af469de2700905fb23e6d1b0f53c327c95cba6a67169f3beffb4c718a00ba0ef512e2977e2b5580c66d23ce1dd52b450bd51a
languageName: node
linkType: hard
"@heroui/use-is-mobile@npm:2.2.12":
version: 2.2.12
resolution: "@heroui/use-is-mobile@npm:2.2.12"
dependencies:
"@react-aria/ssr": "npm:3.9.10"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/aa8229eee8da564804d03edbaef35d6bf65425535237ba5ff12ec44890e367795b8f74a2ebd720fd1a77161758e34817d9281bfcbfb37e7fa54e699f12ce6715
languageName: node
linkType: hard
"@heroui/use-is-mobile@npm:2.2.9":
version: 2.2.9
resolution: "@heroui/use-is-mobile@npm:2.2.9"
dependencies:
"@react-aria/ssr": "npm:3.9.8"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/0ed3f8ea8f132d5e11a89e9e82c003ab8c808613e5f954ea9c703289d5d5f906a8ab950ca85979caac581aff9dc866ad9f98f8b277d9b2b030976710d35b7b7b
languageName: node
linkType: hard
"@heroui/use-is-mounted@npm:2.1.7":
version: 2.1.7
resolution: "@heroui/use-is-mounted@npm:2.1.7"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/33ed9df764c93f0d257a2e25019e8d188878e60026a760b29d48ec66dbf713fb1094cd7d48e3355c4f1ad337682f335004167fb11a1fc6c592dcf7ad91ed6554
languageName: node
linkType: hard
"@heroui/use-measure@npm:2.1.7":
version: 2.1.7
resolution: "@heroui/use-measure@npm:2.1.7"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/fcd6f28fb2e7a67d7c175af44b077e78555fa5a7e768acc559ca63fc626adecd7491e18febd71732c13d6c305a5470c20c5a1a31e233966d39440d3bd2bfb45c
languageName: node
linkType: hard
"@heroui/use-measure@npm:2.1.8":
version: 2.1.8
resolution: "@heroui/use-measure@npm:2.1.8"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/4e0f86c51718c5cfe8eccd8160e4a0fbeb3315b29643c1364eec09d6a78fb8d2dd865b192c3433dd25696b5b38d085c927c2d2c8f744b02beb854ec70195e8f5
languageName: node
linkType: hard
"@heroui/use-pagination@npm:2.2.12":
version: 2.2.12
resolution: "@heroui/use-pagination@npm:2.2.12"
dependencies:
"@heroui/shared-utils": "npm:2.1.9"
"@react-aria/i18n": "npm:3.12.8"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/cc9bbd9a1d6299ab2f0abcd74a4cad257378040b75ea1ee92a9557fc27367038b58714217e973efa0675cd90f12424537af88f1c91cf0cfb366c20972731a00d
languageName: node
linkType: hard
"@heroui/use-pagination@npm:2.2.16":
version: 2.2.16
resolution: "@heroui/use-pagination@npm:2.2.16"
dependencies:
"@heroui/shared-utils": "npm:2.1.10"
"@react-aria/i18n": "npm:3.12.11"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/ca756f8c3a069ee1f72f0a45992c990cc73442d2888caec0468cb73e7a01c547652a3781218d0449dd625a9dbd56dbb78ddccdb6e90126f3c6f6d1257bf24161
languageName: node
linkType: hard
"@heroui/use-safe-layout-effect@npm:2.1.7":
version: 2.1.7
resolution: "@heroui/use-safe-layout-effect@npm:2.1.7"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/6950b89adae4c17a55f9365cab8b3a317b644eefdb935a1785de78c2700d459e920752fd78520a92ffd6371d7634ca9abcb32c51f3b41744f74b027bdd9eb7f6
languageName: node
linkType: hard
"@heroui/use-safe-layout-effect@npm:2.1.8":
version: 2.1.8
resolution: "@heroui/use-safe-layout-effect@npm:2.1.8"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/f29195426b0941f9f5c8a91840121e753a9927fa8ae3675249751c7911ac8aa1caf1426cbf2ae06a3afea18509ee87669c2d0030ec9c59e34e4bde60af097fb1
languageName: node
linkType: hard
"@heroui/use-scroll-position@npm:2.1.7":
version: 2.1.7
resolution: "@heroui/use-scroll-position@npm:2.1.7"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/313640216f8c99d75a645dde822a3481dc7aa8be632ccf84340e24c6c4fa9a5bc6e8df7eb1cb8d3ae79b5382c0cd9756c2dc32ca6e6b449afe20357693dfeac2
languageName: node
linkType: hard
"@heroui/use-update-effect@npm:2.1.7":
version: 2.1.7
resolution: "@heroui/use-update-effect@npm:2.1.7"
peerDependencies:
react: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/ebed1e6a364ab9637148ce72ec2bc967220702b6191a96935ca542a4b153f77b76e4f1972bc358780b8e918def0e59069fd6c68d79c32320b8d2a44af5b8cdce
languageName: node
linkType: hard
"@heroui/user@npm:2.2.15":
version: 2.2.15
resolution: "@heroui/user@npm:2.2.15"
dependencies:
"@heroui/avatar": "npm:2.2.15"
"@heroui/react-utils": "npm:2.1.10"
"@heroui/shared-utils": "npm:2.1.9"
"@react-aria/focus": "npm:3.20.2"
"@react-aria/utils": "npm:3.28.2"
peerDependencies:
"@heroui/system": ">=2.4.7"
"@heroui/theme": ">=2.4.6"
react: ">=18 || >=19.0.0-rc.0"
react-dom: ">=18 || >=19.0.0-rc.0"
checksum: 10c0/e277447cc645f634f151a39dd940ff0808ef6c0ba1b2161955660af2ad3357f082bef6baa229409b213cd1b606e97ad2b6d4f9949ec1508facbbaf1221e396e1
languageName: node
linkType: hard
"@iconify/react@npm:^5.1.0":
version: 5.2.0
resolution: "@iconify/react@npm:5.2.0"
dependencies:
"@iconify/types": "npm:^2.0.0"
peerDependencies:
react: ">=16"
checksum: 10c0/e63102e6408506058fc8a6a37681a8037bc9796c35ea9d334a8d741d5c0d89e72ce75f5bb6181c42c507d0252018ba5b8a118de87651efe1cc890899dc9f48bd
languageName: node
linkType: hard
"@iconify/types@npm:^2.0.0":
version: 2.0.0
resolution: "@iconify/types@npm:2.0.0"
checksum: 10c0/65a3be43500c7ccacf360e136d00e1717f050b7b91da644e94370256ac66f582d59212bdb30d00788aab4fc078262e91c95b805d1808d654b72f6d2072a7e4b2
languageName: node
linkType: hard
"@icons/material@npm:^0.2.4":
version: 0.2.4
resolution: "@icons/material@npm:0.2.4"
peerDependencies:
react: "*"
checksum: 10c0/133518adf91010704b716e7671fc28bcc3c461dc4f4a56ad3a73a955b9993dfaa22494579e9377247fd3318baebe8e4ae7962c01bffeaca0044722c09baa9d73
languageName: node
linkType: hard
"@internationalized/date@npm:3.8.0":
version: 3.8.0
resolution: "@internationalized/date@npm:3.8.0"
dependencies:
"@swc/helpers": "npm:^0.5.0"
checksum: 10c0/7ac0cae2f1832fe2f2950e22208812ed8bf2845dd903ec93bd3aa024ca020124e137638b11bb5817b92abde1daa3f881cc81d62db0b20f5db2d9e07ab0cd9e01
languageName: node
linkType: hard
"@internationalized/date@npm:^3.8.0, @internationalized/date@npm:^3.8.1":
version: 3.8.1
resolution: "@internationalized/date@npm:3.8.1"
dependencies:
"@swc/helpers": "npm:^0.5.0"
checksum: 10c0/22374a28e803c1d8399954f9e7b5f4b0de384871f4b09f865d10e0fe0a16d1df9bea663e3fe903b9c63e419ff528eef4f3eb23557f8b86d10fc7fa4fe0823de2
languageName: node
linkType: hard
"@internationalized/date@npm:^3.8.2, @internationalized/date@npm:^3.9.0":
version: 3.9.0
resolution: "@internationalized/date@npm:3.9.0"
dependencies:
"@swc/helpers": "npm:^0.5.0"
checksum: 10c0/8f2bf54c407aa95ab9922759c27f19bd9185bc6c4bde936fb5cc7a99bf764de8483102a61d53afa0598eefa11711617d3c05a65e8a5cb8bfac10c2c0800e488a
languageName: node
linkType: hard
"@internationalized/message@npm:^3.1.7":
version: 3.1.7
resolution: "@internationalized/message@npm:3.1.7"
dependencies:
"@swc/helpers": "npm:^0.5.0"
intl-messageformat: "npm:^10.1.0"
checksum: 10c0/0e3d46c97e790e34074f2589cbbe220bac8da453bf6d5d5da5d545b8a3989d37dc02d5209296f3cb900cea5a1220658821c7fe04fd00b2a27c446fcc6f062b1a
languageName: node
linkType: hard
"@internationalized/message@npm:^3.1.8":
version: 3.1.8
resolution: "@internationalized/message@npm:3.1.8"
dependencies:
"@swc/helpers": "npm:^0.5.0"
intl-messageformat: "npm:^10.1.0"
checksum: 10c0/91019d66d62ab6733fa46ed495fac6878bcc98f082e51be9fd0e4b5836a4df0f488c8dcd218f2e566c713e59cc68ef3aa5fc45e5b9bca8cca458d0990765b77a
languageName: node
linkType: hard
"@internationalized/number@npm:^3.6.1, @internationalized/number@npm:^3.6.2":
version: 3.6.2
resolution: "@internationalized/number@npm:3.6.2"
dependencies:
"@swc/helpers": "npm:^0.5.0"
checksum: 10c0/40d1ce69582ddd46437144ff7e95e45c90e18838b2e41771deac2058d0f98169aa0e10a285ff9f1a59f575ce06bd3f495355a5591259d92a535956a4755374b8
languageName: node
linkType: hard
"@internationalized/number@npm:^3.6.4, @internationalized/number@npm:^3.6.5":
version: 3.6.5
resolution: "@internationalized/number@npm:3.6.5"
dependencies:
"@swc/helpers": "npm:^0.5.0"
checksum: 10c0/f87d710863a8dbf057aac311193c82f3c42e862abdd99e5b71034f1022926036552620eab5dd00c23e975f28b9e41e830cb342ba0264436749d9cdc5ae031d44
languageName: node
linkType: hard
"@internationalized/string@npm:^3.2.6":
version: 3.2.6
resolution: "@internationalized/string@npm:3.2.6"
dependencies:
"@swc/helpers": "npm:^0.5.0"
checksum: 10c0/8ed556697fee4aa2a115ea9d44075e8be8a7f80c76ebfcc6a4f14681175c4e59438f7ba049748d9c9cd0b46c7927b731d7c1f7fa53aaaf58b4c46dbd9f471b61
languageName: node
linkType: hard
"@internationalized/string@npm:^3.2.7":
version: 3.2.7
resolution: "@internationalized/string@npm:3.2.7"
dependencies:
"@swc/helpers": "npm:^0.5.0"
checksum: 10c0/8f7bea379ce047026ef20d535aa1bd7612a5e5a5108d1e514965696a46bce34e38111411943b688d00dae2c81eae7779ae18343961310696d32ebb463a19b94a
languageName: node
linkType: hard
"@isaacs/cliui@npm:^8.0.2":
version: 8.0.2
resolution: "@isaacs/cliui@npm:8.0.2"
dependencies:
string-width: "npm:^5.1.2"
string-width-cjs: "npm:string-width@^4.2.0"
strip-ansi: "npm:^7.0.1"
strip-ansi-cjs: "npm:strip-ansi@^6.0.1"
wrap-ansi: "npm:^8.1.0"
wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0"
checksum: 10c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e
languageName: node
linkType: hard
"@isaacs/fs-minipass@npm:^4.0.0":
version: 4.0.1
resolution: "@isaacs/fs-minipass@npm:4.0.1"
dependencies:
minipass: "npm:^7.0.4"
checksum: 10c0/c25b6dc1598790d5b55c0947a9b7d111cfa92594db5296c3b907e2f533c033666f692a3939eadac17b1c7c40d362d0b0635dc874cbfe3e70db7c2b07cc97a5d2
languageName: node
linkType: hard
"@jridgewell/gen-mapping@npm:^0.3.2":
version: 0.3.8
resolution: "@jridgewell/gen-mapping@npm:0.3.8"
dependencies:
"@jridgewell/set-array": "npm:^1.2.1"
"@jridgewell/sourcemap-codec": "npm:^1.4.10"
"@jridgewell/trace-mapping": "npm:^0.3.24"
checksum: 10c0/c668feaf86c501d7c804904a61c23c67447b2137b813b9ce03eca82cb9d65ac7006d766c218685d76e3d72828279b6ee26c347aa1119dab23fbaf36aed51585a
languageName: node
linkType: hard
"@jridgewell/resolve-uri@npm:^3.1.0":
version: 3.1.2
resolution: "@jridgewell/resolve-uri@npm:3.1.2"
checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e
languageName: node
linkType: hard
"@jridgewell/set-array@npm:^1.2.1":
version: 1.2.1
resolution: "@jridgewell/set-array@npm:1.2.1"
checksum: 10c0/2a5aa7b4b5c3464c895c802d8ae3f3d2b92fcbe84ad12f8d0bfbb1f5ad006717e7577ee1fd2eac00c088abe486c7adb27976f45d2941ff6b0b92b2c3302c60f4
languageName: node
linkType: hard
"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14":
version: 1.5.0
resolution: "@jridgewell/sourcemap-codec@npm:1.5.0"
checksum: 10c0/2eb864f276eb1096c3c11da3e9bb518f6d9fc0023c78344cdc037abadc725172c70314bdb360f2d4b7bffec7f5d657ce006816bc5d4ecb35e61b66132db00c18
languageName: node
linkType: hard
"@jridgewell/trace-mapping@npm:^0.3.24":
version: 0.3.25
resolution: "@jridgewell/trace-mapping@npm:0.3.25"
dependencies:
"@jridgewell/resolve-uri": "npm:^3.1.0"
"@jridgewell/sourcemap-codec": "npm:^1.4.14"
checksum: 10c0/3d1ce6ebc69df9682a5a8896b414c6537e428a1d68b02fcc8363b04284a8ca0df04d0ee3013132252ab14f2527bc13bea6526a912ecb5658f0e39fd2860b4df4
languageName: node
linkType: hard
"@kepler.gl/actions@npm:3.2.0, @kepler.gl/actions@npm:^3.2.0":
version: 3.2.0
resolution: "@kepler.gl/actions@npm:3.2.0"
dependencies:
"@deck.gl/core": "npm:^8.9.27"
"@kepler.gl/cloud-providers": "npm:3.2.0"
"@kepler.gl/constants": "npm:3.2.0"
"@kepler.gl/layers": "npm:3.2.0"
"@kepler.gl/processors": "npm:3.2.0"
"@kepler.gl/table": "npm:3.2.0"
"@kepler.gl/types": "npm:3.2.0"
"@kepler.gl/utils": "npm:3.2.0"
"@reduxjs/toolkit": "npm:^1.7.2"
"@types/lodash": "npm:4.17.5"
"@types/react-redux": "npm:^7.1.23"
"@types/redux-actions": "npm:^2.6.2"
lodash: "npm:4.17.21"
react-palm: "npm:^3.3.8"
react-redux: "npm:^8.0.5"
redux: "npm:^4.2.1"
redux-actions: "npm:^2.2.1"
checksum: 10c0/1c0445a3041f3a4bd0eaa6da29db1b60ac1d34d2d3345cabe50218a6f04aeb27216462bceeb0e57051dede7f6b4c8b195c2c4fad178a2fe4f2e50fcb02bfd27e
languageName: node
linkType: hard
"@kepler.gl/ai-assistant@npm:^3.2.0":
version: 3.2.0
resolution: "@kepler.gl/ai-assistant@npm:3.2.0"
dependencies:
"@ai-sdk/anthropic": "npm:^1.2.11"
"@ai-sdk/deepseek": "npm:^0.2.14"
"@ai-sdk/google": "npm:^1.2.18"
"@ai-sdk/xai": "npm:^1.2.16"
"@kepler.gl/components": "npm:3.2.0"
"@kepler.gl/constants": "npm:3.2.0"
"@kepler.gl/layers": "npm:3.2.0"
"@kepler.gl/table": "npm:3.2.0"
"@kepler.gl/types": "npm:3.2.0"
"@kepler.gl/utils": "npm:3.2.0"
"@openassistant/core": "npm:^0.5.13"
"@openassistant/duckdb": "npm:^0.5.13"
"@openassistant/echarts": "npm:^0.5.13"
"@openassistant/geoda": "npm:^0.5.13"
"@openassistant/osm": "npm:^0.5.13"
"@openassistant/plots": "npm:^0.5.13"
"@openassistant/tables": "npm:^0.5.13"
"@openassistant/ui": "npm:^0.5.13"
"@openassistant/utils": "npm:^0.5.13"
color-interpolate: "npm:^1.0.5"
global: "npm:^4.3.0"
ollama-ai-provider-v2: "npm:^0.0.5"
react-intl: "npm:^6.3.0"
usehooks-ts: "npm:^3.1.0"
checksum: 10c0/cd7a59c236fdda1b2cf18c348441d4213660ad79350b130d80aa97b13899b61ae75aa3e09b1afd781c183eceb3bb0222f6be11ba6d4f49d299972c0c0191d228
languageName: node
linkType: hard
"@kepler.gl/cloud-providers@npm:3.2.0, @kepler.gl/cloud-providers@npm:^3.2.0":
version: 3.2.0
resolution: "@kepler.gl/cloud-providers@npm:3.2.0"
dependencies:
"@kepler.gl/types": "npm:3.2.0"
react: "npm:^18.2.0"
checksum: 10c0/ada8e1ba12e4416a9a3466cca559b7bb116a5a1fa029ad018e86b73d14fdd67e071d0ac841badea49d919a58d66ed0b3cede9954d7551057e0834412e6c7183d
languageName: node
linkType: hard
"@kepler.gl/common-utils@npm:3.2.0":
version: 3.2.0
resolution: "@kepler.gl/common-utils@npm:3.2.0"
dependencies:
"@kepler.gl/constants": "npm:3.2.0"
"@kepler.gl/types": "npm:3.2.0"
d3-array: "npm:^2.8.0"
global: "npm:^4.3.0"
h3-js: "npm:^3.1.0"
type-analyzer: "npm:0.4.0"
checksum: 10c0/96e63931a4886aa5cc6ad11fd210f41ce2e64ba4e7479cb7f4558646f8c60e69d64e574bb5b28e637544f31967ff85df204f8154ee8411a0d4cde2b19a799cea
languageName: node
linkType: hard
"@kepler.gl/components@npm:3.2.0, @kepler.gl/components@npm:^3.2.0":
version: 3.2.0
resolution: "@kepler.gl/components@npm:3.2.0"
dependencies:
"@deck.gl/core": "npm:^8.9.27"
"@deck.gl/react": "npm:^8.9.27"
"@dnd-kit/core": "npm:^6.1.0"
"@dnd-kit/modifiers": "npm:^7.0.0"
"@dnd-kit/sortable": "npm:^8.0.0"
"@dnd-kit/utilities": "npm:^3.2.2"
"@emotion/is-prop-valid": "npm:^1.2.1"
"@floating-ui/react": "npm:0.25.1"
"@kepler.gl/actions": "npm:3.2.0"
"@kepler.gl/cloud-providers": "npm:3.2.0"
"@kepler.gl/common-utils": "npm:3.2.0"
"@kepler.gl/constants": "npm:3.2.0"
"@kepler.gl/effects": "npm:3.2.0"
"@kepler.gl/layers": "npm:3.2.0"
"@kepler.gl/localization": "npm:3.2.0"
"@kepler.gl/processors": "npm:3.2.0"
"@kepler.gl/reducers": "npm:3.2.0"
"@kepler.gl/schemas": "npm:3.2.0"
"@kepler.gl/styles": "npm:3.2.0"
"@kepler.gl/table": "npm:3.2.0"
"@kepler.gl/types": "npm:3.2.0"
"@kepler.gl/utils": "npm:3.2.0"
"@loaders.gl/mvt": "npm:^4.3.2"
"@loaders.gl/pmtiles": "npm:^4.3.2"
"@loaders.gl/wms": "npm:4.3.2"
"@mapbox/mapbox-sdk": "npm:^0.15.3"
"@nebula.gl/edit-modes": "npm:1.0.2-alpha.1"
"@tippyjs/react": "npm:^4.2.0"
"@types/classnames": "npm:^2.3.1"
"@types/d3-array": "npm:^2.8.0"
"@types/d3-brush": "npm:^3.0.1"
"@types/d3-scale": "npm:^3.2.2"
"@types/d3-selection": "npm:^3.0.2"
"@types/exenv": "npm:^1.2.0"
"@types/lodash": "npm:4.17.5"
"@types/react": "npm:^18.0.28"
"@types/react-copy-to-clipboard": "npm:^5.0.2"
"@types/react-dom": "npm:^18.0.11"
"@types/react-lifecycles-compat": "npm:^3.0.1"
"@types/react-map-gl": "npm:^6.1.3"
"@types/react-modal": "npm:^3.16.3"
"@types/react-redux": "npm:^7.1.23"
"@types/react-virtualized": "npm:^9.21.30"
"@types/react-vis": "npm:1.11.7"
"@types/styled-components": "npm:^5.1.32"
classnames: "npm:^2.2.1"
copy-to-clipboard: "npm:^3.3.1"
d3-array: "npm:^2.8.0"
d3-axis: "npm:^2.0.0"
d3-brush: "npm:^2.1.0"
d3-color: "npm:^2.0.0"
d3-format: "npm:^2.0.0"
d3-scale: "npm:^3.2.3"
d3-selection: "npm:^2.0.0"
exenv: "npm:^1.2.2"
fuzzy: "npm:^0.1.3"
global: "npm:^4.3.0"
lodash: "npm:4.17.21"
mapbox-gl: "npm:1.13.1"
maplibre-gl: "npm:^3.6.2"
markdown-to-jsx: "npm:^7.7.6"
mjolnir.js: "npm:^2.7.0"
moment: "npm:^2.10.6"
moment-timezone: "npm:^0.5.35"
prop-types: "npm:^15.6.0"
react: "npm:^18.2.0"
react-color: "npm:^2.19.3"
react-copy-to-clipboard: "npm:^5.0.2"
react-date-picker: "npm:^10.2.0"
react-dom: "npm:^18.2.0"
react-intl: "npm:^6.3.0"
react-json-pretty: "npm:^2.2.0"
react-lifecycles-compat: "npm:^3.0.4"
react-map-gl: "npm:^7.1.6"
react-modal: "npm:^3.12.1"
react-redux: "npm:^8.0.5"
react-sortable-hoc: "npm:^1.8.3"
react-time-picker: "npm:^6.2.0"
react-tooltip: "npm:^4.2.17"
react-virtualized: "npm:^9.22.5"
react-vis: "npm:1.11.7"
redux: "npm:^4.2.1"
reselect: "npm:^4.1.0"
styled-components: "npm:6.1.8"
suncalc: "npm:^1.9.0"
viewport-mercator-project: "npm:^6.0.0"
checksum: 10c0/4c3da0e6e2045a05d569fdac044da95be244303e5a4bb195bf6b031476b3db66ab66f34d8b665359c773c444a7447cd0fda956164c67659660bb917de07e57ca
languageName: node
linkType: hard
"@kepler.gl/constants@npm:3.2.0, @kepler.gl/constants@npm:^3.2.0":
version: 3.2.0
resolution: "@kepler.gl/constants@npm:3.2.0"
dependencies:
"@kepler.gl/types": "npm:3.2.0"
"@types/d3-scale": "npm:^3.2.2"
"@types/keymirror": "npm:^0.1.1"
chroma-js: "npm:2.1.2"
colorbrewer: "npm:^1.5.0"
d3-array: "npm:^2.8.0"
d3-color: "npm:^2.0.0"
d3-scale: "npm:^3.2.3"
d3-scale-chromatic: "npm:2.0.0"
d3-time: "npm:^2.0.0"
global: "npm:^4.3.0"
keymirror: "npm:^0.1.1"
checksum: 10c0/c90a238f346baadbd64f65f8e2521cbbcb5ef7501a1b28ee09c549a2ed5e6596192171cdd1b818153a8a93edc5d876aab65f1b7c0d42b234f421a2831b4cfe36
languageName: node
linkType: hard
"@kepler.gl/deckgl-arrow-layers@npm:3.2.0":
version: 3.2.0
resolution: "@kepler.gl/deckgl-arrow-layers@npm:3.2.0"
dependencies:
"@geoarrow/geoarrow-js": "npm:^0.3.0"
"@kepler.gl/constants": "npm:^3.2.0"
"@math.gl/core": "npm:^4.0.0"
"@math.gl/polygon": "npm:^4.0.0"
"@math.gl/types": "npm:^4.0.0"
apache-arrow: "npm:>=15"
threads: "npm:^1.7.0"
peerDependencies:
"@deck.gl/aggregation-layers": ^8.9.27
"@deck.gl/core": ^8.9.27
"@deck.gl/geo-layers": ^8.9.27
"@deck.gl/layers": ^8.9.27
checksum: 10c0/1b92da41c5fea81105d012d5175ebde238d4e1dbb6ca52ad639974338a8439a0c4895883a21075edc03a7e0129430a4bea969459dc67b56e24eaeec1253822f0
languageName: node
linkType: hard
"@kepler.gl/deckgl-layers@npm:3.2.0":
version: 3.2.0
resolution: "@kepler.gl/deckgl-layers@npm:3.2.0"
dependencies:
"@danmarshall/deckgl-typings": "npm:4.9.22"
"@deck.gl/aggregation-layers": "npm:^8.9.27"
"@deck.gl/core": "npm:^8.9.27"
"@deck.gl/geo-layers": "npm:^8.9.27"
"@deck.gl/layers": "npm:^8.9.27"
"@kepler.gl/constants": "npm:3.2.0"
"@kepler.gl/types": "npm:3.2.0"
"@kepler.gl/utils": "npm:3.2.0"
"@loaders.gl/wms": "npm:4.3.2"
"@luma.gl/constants": "npm:^8.5.20"
"@luma.gl/core": "npm:^8.5.20"
"@mapbox/geo-viewport": "npm:^0.4.1"
"@mapbox/vector-tile": "npm:^1.3.1"
"@math.gl/web-mercator": "npm:^3.6.2"
"@types/d3-array": "npm:^2.8.0"
"@types/geojson": "npm:^7946.0.8"
"@types/lodash": "npm:4.17.5"
"@types/supercluster": "npm:^7.1.0"
d3-array: "npm:^2.8.0"
global: "npm:^4.3.0"
lodash: "npm:4.17.21"
pbf: "npm:^3.1.0"
supercluster: "npm:^7.1.0"
viewport-mercator-project: "npm:^6.0.0"
checksum: 10c0/23fdd68d8be7fc05b6e5e2e1baf6ff3f111382f7c097323179a84df72105658a6bc6882c86199d26b4dcb8654fe53abb8fce973d0cc75cb7bef1defeade7c47c
languageName: node
linkType: hard
"@kepler.gl/duckdb@npm:^3.2.0":
version: 3.2.0
resolution: "@kepler.gl/duckdb@npm:3.2.0"
dependencies:
"@duckdb/duckdb-wasm": "npm:^1.28.0"
"@kepler.gl/common-utils": "npm:3.2.0"
"@kepler.gl/constants": "npm:3.2.0"
"@kepler.gl/processors": "npm:3.2.0"
"@kepler.gl/table": "npm:3.2.0"
"@kepler.gl/types": "npm:3.2.0"
"@monaco-editor/react": "npm:^4.6.0"
"@radix-ui/react-collapsible": "npm:^1.1.0"
apache-arrow: "npm:>=15.0.0"
monaco-editor: "npm:^0.52.0"
react-resizable-panels: "npm:^2.1.7"
checksum: 10c0/3cf7a69b9249ad721f7dc1aaafd17893579786a3ce6de499760d92ca0e9c4ea6b78919e898a1acbcbc79b78a82eb0df72593462364267660964a198fbd56b945
languageName: node
linkType: hard
"@kepler.gl/effects@npm:3.2.0":
version: 3.2.0
resolution: "@kepler.gl/effects@npm:3.2.0"
dependencies:
"@deck.gl/core": "npm:^8.9.27"
"@kepler.gl/common-utils": "npm:3.2.0"
"@kepler.gl/constants": "npm:3.2.0"
"@kepler.gl/types": "npm:3.2.0"
"@kepler.gl/utils": "npm:3.2.0"
"@luma.gl/core": "npm:^8.5.20"
"@luma.gl/shadertools": "npm:^8.5.20"
moment-timezone: "npm:^0.5.35"
suncalc: "npm:^1.9.0"
checksum: 10c0/771dbae6c5d728f4f4e8c32ff65e110ce27bc6e331db22a896156e318de3848b02503342fb87c9f417f5c4240d7b0a286eca41b984bf08f6308f0685c014d575
languageName: node
linkType: hard
"@kepler.gl/layers@npm:3.2.0":
version: 3.2.0
resolution: "@kepler.gl/layers@npm:3.2.0"
dependencies:
"@danmarshall/deckgl-typings": "npm:4.9.22"
"@deck.gl/core": "npm:^8.9.27"
"@deck.gl/extensions": "npm:^8.9.27"
"@deck.gl/geo-layers": "npm:^8.9.27"
"@deck.gl/layers": "npm:^8.9.27"
"@deck.gl/mesh-layers": "npm:^8.9.27"
"@kepler.gl/common-utils": "npm:3.2.0"
"@kepler.gl/constants": "npm:3.2.0"
"@kepler.gl/deckgl-arrow-layers": "npm:3.2.0"
"@kepler.gl/deckgl-layers": "npm:3.2.0"
"@kepler.gl/localization": "npm:3.2.0"
"@kepler.gl/table": "npm:3.2.0"
"@kepler.gl/types": "npm:3.2.0"
"@kepler.gl/utils": "npm:3.2.0"
"@loaders.gl/arrow": "npm:^4.3.2"
"@loaders.gl/core": "npm:^4.3.2"
"@loaders.gl/gis": "npm:^4.3.2"
"@loaders.gl/gltf": "npm:^4.3.2"
"@loaders.gl/mvt": "npm:^4.3.2"
"@loaders.gl/parquet": "npm:^4.3.2"
"@loaders.gl/pmtiles": "npm:^4.3.2"
"@loaders.gl/schema": "npm:^4.3.2"
"@loaders.gl/wkt": "npm:^4.3.2"
"@luma.gl/constants": "npm:^8.5.20"
"@mapbox/geojson-normalize": "npm:0.0.1"
"@nebula.gl/edit-modes": "npm:1.0.2-alpha.1"
"@nebula.gl/layers": "npm:1.0.2-alpha.1"
"@turf/bbox": "npm:^6.0.1"
"@turf/boolean-within": "npm:^6.0.1"
"@turf/center": "npm:^6.0.1"
"@turf/helpers": "npm:^6.1.4"
"@types/geojson": "npm:^7946.0.8"
"@types/keymirror": "npm:^0.1.1"
"@types/lodash": "npm:4.17.5"
"@types/styled-components": "npm:^5.1.32"
apache-arrow: "npm:>=15.0.0"
buffer: "npm:6.0.3"
d3-array: "npm:^2.8.0"
d3-shape: "npm:^1.2.0"
global: "npm:^4.3.0"
keymirror: "npm:^0.1.1"
lodash: "npm:4.17.21"
long: "npm:^4.0.0"
markdown-to-jsx: "npm:^7.7.6"
prop-types: "npm:^15.6.0"
react: "npm:^18.2.0"
react-intl: "npm:^6.3.0"
reselect: "npm:^4.1.0"
s2-geometry: "npm:^1.2.10"
styled-components: "npm:6.1.8"
type-analyzer: "npm:0.4.0"
viewport-mercator-project: "npm:^6.0.0"
checksum: 10c0/715eca5ed3aabaf70c532cd9b4e4952a1b6823957fbe3a52ecba7b58bebbd5715f6eefe1c697165cda4484b32c5b6efa0684fb7f5c6a5406116b900fd7d22f42
languageName: node
linkType: hard
"@kepler.gl/localization@npm:3.2.0":
version: 3.2.0
resolution: "@kepler.gl/localization@npm:3.2.0"
dependencies:
react: "npm:^18.2.0"
react-intl: "npm:^6.3.0"
redux: "npm:^4.2.1"
checksum: 10c0/a602f7e75b7861a575828c9edd7377796118600b0a0a138ada4a9c3beaec57427f78d70095f748ba9448c26030689cf748a0fd72c7803295cc6b4d80bc6061c8
languageName: node
linkType: hard
"@kepler.gl/processors@npm:3.2.0, @kepler.gl/processors@npm:^3.2.0":
version: 3.2.0
resolution: "@kepler.gl/processors@npm:3.2.0"
dependencies:
"@danmarshall/deckgl-typings": "npm:4.9.22"
"@kepler.gl/common-utils": "npm:3.2.0"
"@kepler.gl/constants": "npm:3.2.0"
"@kepler.gl/schemas": "npm:3.2.0"
"@kepler.gl/table": "npm:3.2.0"
"@kepler.gl/types": "npm:3.2.0"
"@kepler.gl/utils": "npm:3.2.0"
"@loaders.gl/arrow": "npm:^4.3.2"
"@loaders.gl/core": "npm:^4.3.2"
"@loaders.gl/csv": "npm:^4.3.2"
"@loaders.gl/gis": "npm:^4.3.2"
"@loaders.gl/json": "npm:^4.3.2"
"@loaders.gl/loader-utils": "npm:^4.3.2"
"@loaders.gl/parquet": "npm:^4.3.2"
"@loaders.gl/schema": "npm:^4.3.2"
"@loaders.gl/wkt": "npm:^4.3.2"
"@mapbox/geojson-normalize": "npm:0.0.1"
"@nebula.gl/edit-modes": "npm:1.0.2-alpha.1"
"@turf/helpers": "npm:^6.1.4"
apache-arrow: "npm:>=15.0.0"
d3-dsv: "npm:^2.0.0"
type-analyzer: "npm:0.4.0"
checksum: 10c0/e34a7cd1ffa2eec9667e67e437b6f1c3ff6b990a4c605e476359cca39b36a04e6645c322d499753d11bd0dacfe9fdcd45a8607c8f3b0ed69e27055b43c2fbf24
languageName: node
linkType: hard
"@kepler.gl/reducers@npm:3.2.0, @kepler.gl/reducers@npm:^3.2.0":
version: 3.2.0
resolution: "@kepler.gl/reducers@npm:3.2.0"
dependencies:
"@kepler.gl/actions": "npm:3.2.0"
"@kepler.gl/cloud-providers": "npm:3.2.0"
"@kepler.gl/common-utils": "npm:3.2.0"
"@kepler.gl/constants": "npm:3.2.0"
"@kepler.gl/deckgl-arrow-layers": "npm:3.2.0"
"@kepler.gl/deckgl-layers": "npm:3.2.0"
"@kepler.gl/effects": "npm:3.2.0"
"@kepler.gl/layers": "npm:3.2.0"
"@kepler.gl/localization": "npm:3.2.0"
"@kepler.gl/processors": "npm:3.2.0"
"@kepler.gl/schemas": "npm:3.2.0"
"@kepler.gl/table": "npm:3.2.0"
"@kepler.gl/tasks": "npm:3.2.0"
"@kepler.gl/types": "npm:3.2.0"
"@kepler.gl/utils": "npm:3.2.0"
"@loaders.gl/loader-utils": "npm:^4.3.2"
"@mapbox/geo-viewport": "npm:^0.4.1"
"@math.gl/web-mercator": "npm:^3.6.2"
"@turf/bbox": "npm:^6.0.1"
"@turf/bbox-polygon": "npm:^6.0.1"
"@turf/boolean-within": "npm:^6.0.1"
"@types/lodash": "npm:4.17.5"
"@types/redux-actions": "npm:^2.6.2"
copy-to-clipboard: "npm:^3.3.1"
d3-color: "npm:^2.0.0"
d3-dsv: "npm:^2.0.0"
deepmerge: "npm:^4.2.2"
global: "npm:^4.3.0"
lodash: "npm:4.17.21"
react-palm: "npm:^3.3.8"
redux: "npm:^4.2.1"
redux-actions: "npm:^2.2.1"
reselect: "npm:^4.1.0"
checksum: 10c0/7ff864731cf64a6422b11ab7ae83bbf50e9aa86f74be63d69121167eff1f33e20622045721ea411e66f903d304a38e74159b549a157bfe77694aed848552aeef
languageName: node
linkType: hard
"@kepler.gl/schemas@npm:3.2.0, @kepler.gl/schemas@npm:^3.2.0":
version: 3.2.0
resolution: "@kepler.gl/schemas@npm:3.2.0"
dependencies:
"@kepler.gl/common-utils": "npm:3.2.0"
"@kepler.gl/constants": "npm:3.2.0"
"@kepler.gl/layers": "npm:3.2.0"
"@kepler.gl/table": "npm:3.2.0"
"@kepler.gl/types": "npm:3.2.0"
"@kepler.gl/utils": "npm:3.2.0"
"@loaders.gl/loader-utils": "npm:^4.3.2"
"@types/keymirror": "npm:^0.1.1"
"@types/lodash": "npm:4.17.5"
apache-arrow: "npm:>=15.0.0"
global: "npm:^4.3.0"
keymirror: "npm:^0.1.1"
lodash: "npm:4.17.21"
checksum: 10c0/7809bb356d2faa0591f5f79928aaa563effc9867dff7863ec7755dd85436fac83bb93fc910095121e4052c459cf882eb26df2f1884bd2f5d6a7e3d252920bbd1
languageName: node
linkType: hard
"@kepler.gl/styles@npm:3.2.0, @kepler.gl/styles@npm:^3.2.0":
version: 3.2.0
resolution: "@kepler.gl/styles@npm:3.2.0"
dependencies:
"@kepler.gl/constants": "npm:3.2.0"
"@types/styled-components": "npm:^5.1.32"
styled-components: "npm:6.1.8"
checksum: 10c0/5bf5f69323b8cef6bf258b2bbf1bd705df5dfe4a3b32c2948e4884845a84dc3469a214b2e9d2aafafc56f77d606f0edc8c19af62ec848a0409d2b645874b1111
languageName: node
linkType: hard
"@kepler.gl/table@npm:3.2.0":
version: 3.2.0
resolution: "@kepler.gl/table@npm:3.2.0"
dependencies:
"@kepler.gl/common-utils": "npm:3.2.0"
"@kepler.gl/constants": "npm:3.2.0"
"@kepler.gl/types": "npm:3.2.0"
"@kepler.gl/utils": "npm:3.2.0"
"@loaders.gl/mvt": "npm:^4.3.2"
"@loaders.gl/pmtiles": "npm:^4.3.2"
"@types/d3-array": "npm:^2.8.0"
"@types/lodash": "npm:4.17.5"
d3-array: "npm:^2.8.0"
global: "npm:^4.3.0"
lodash: "npm:4.17.21"
moment: "npm:^2.10.6"
react-palm: "npm:^3.3.8"
type-analyzer: "npm:0.4.0"
checksum: 10c0/4207b74600234d4dd413838ed1111b6e1104a68bfe2a37c286125e19d80b2b152eeecd907806d3d0cb75f9b3f37cd03e95c0122acc13679105ca23b8873fe1b4
languageName: node
linkType: hard
"@kepler.gl/tasks@npm:3.2.0":
version: 3.2.0
resolution: "@kepler.gl/tasks@npm:3.2.0"
dependencies:
"@kepler.gl/processors": "npm:3.2.0"
react-palm: "npm:^3.3.8"
checksum: 10c0/d2fd9d43c5d3993c73959c24a490a8518b56959659eb6cebc8856aed9d86605fdb10335f6153bb0515e8559818fe59e8cf323acac803c52147d7d325480746d3
languageName: node
linkType: hard
"@kepler.gl/types@npm:3.2.0":
version: 3.2.0
resolution: "@kepler.gl/types@npm:3.2.0"
checksum: 10c0/7001e640fd548047e356259c2e88905776c01246cc664af28d4fe68ed98aa07b6e5337ce61d7ce113ec48626b93e3dba1d4f5a69105c7bc73352d4bfc308b451
languageName: node
linkType: hard
"@kepler.gl/utils@npm:3.2.0, @kepler.gl/utils@npm:^3.2.0":
version: 3.2.0
resolution: "@kepler.gl/utils@npm:3.2.0"
dependencies:
"@deck.gl/core": "npm:^8.9.27"
"@kepler.gl/common-utils": "npm:3.2.0"
"@kepler.gl/constants": "npm:3.2.0"
"@kepler.gl/types": "npm:3.2.0"
"@loaders.gl/arrow": "npm:^4.3.2"
"@luma.gl/constants": "npm:^8.5.20"
"@luma.gl/core": "npm:^8.5.20"
"@mapbox/geo-viewport": "npm:^0.4.1"
"@turf/boolean-within": "npm:^6.0.1"
"@turf/helpers": "npm:^6.1.4"
"@types/d3-array": "npm:^2.8.0"
"@types/keymirror": "npm:^0.1.1"
"@types/lodash": "npm:4.17.5"
apache-arrow: "npm:>=15.0.0"
d3-array: "npm:^2.8.0"
d3-color: "npm:^2.0.0"
d3-format: "npm:^2.0.0"
d3-interpolate: "npm:^2.0.1"
decimal.js: "npm:^10.2.0"
global: "npm:^4.3.0"
h3-js: "npm:^3.1.0"
keymirror: "npm:^0.1.1"
lodash: "npm:4.17.21"
mapbox-gl: "npm:^1.13.1"
maplibre-gl: "npm:^3.6.2"
maplibregl-mapbox-request-transformer: "npm:^0.0.2"
mini-svg-data-uri: "npm:^1.0.3"
moment: "npm:^2.10.6"
moment-timezone: "npm:^0.5.35"
react: "npm:^18.2.0"
react-map-gl: "npm:^7.1.6"
resize-observer-polyfill: "npm:^1.5.1"
suncalc: "npm:^1.9.0"
type-analyzer: "npm:0.4.0"
viewport-mercator-project: "npm:^6.0.0"
checksum: 10c0/f7631a3944f826bea655f1dc6b755063cc9df718d745b2b56acae1c6f861c8cb71c6433ffcc0fc9fafac622954026c4856f6723ab8e263ebd2950e0f51a65a8c
languageName: node
linkType: hard
"@langchain/core@npm:^0.3.38":
version: 0.3.53
resolution: "@langchain/core@npm:0.3.53"
dependencies:
"@cfworker/json-schema": "npm:^4.0.2"
ansi-styles: "npm:^5.0.0"
camelcase: "npm:6"
decamelize: "npm:1.2.0"
js-tiktoken: "npm:^1.0.12"
langsmith: "npm:^0.3.16"
mustache: "npm:^4.2.0"
p-queue: "npm:^6.6.2"
p-retry: "npm:4"
uuid: "npm:^10.0.0"
zod: "npm:^3.22.4"
zod-to-json-schema: "npm:^3.22.3"
checksum: 10c0/006e2ef11354d85dc9cd3529f8ec747bbe8e7e8bdf57bff8a0949155e04186563848f0047469f406702d3c69d1d9acb776a95303ee94183227dbebcd75383fbd
languageName: node
linkType: hard
"@loaders.gl/3d-tiles@npm:^3.4.13":
version: 3.4.15
resolution: "@loaders.gl/3d-tiles@npm:3.4.15"
dependencies:
"@loaders.gl/draco": "npm:3.4.15"
"@loaders.gl/gltf": "npm:3.4.15"
"@loaders.gl/loader-utils": "npm:3.4.15"
"@loaders.gl/math": "npm:3.4.15"
"@loaders.gl/tiles": "npm:3.4.15"
"@math.gl/core": "npm:^3.5.1"
"@math.gl/geospatial": "npm:^3.5.1"
long: "npm:^5.2.1"
peerDependencies:
"@loaders.gl/core": ^3.4.0
checksum: 10c0/5826642c7dda7277d536705de59b6cb562e6c6f70852fd8b59feaab37c298768d95a9a982756536142c990b711fa4e37c4f6b160bdb6bec30ae9ea4f0f8a0770
languageName: node
linkType: hard
"@loaders.gl/arrow@npm:4.3.2, @loaders.gl/arrow@npm:^4.3.2":
version: 4.3.2
resolution: "@loaders.gl/arrow@npm:4.3.2"
dependencies:
"@loaders.gl/gis": "npm:4.3.2"
"@loaders.gl/loader-utils": "npm:4.3.2"
"@loaders.gl/schema": "npm:4.3.2"
"@loaders.gl/wkt": "npm:4.3.2"
"@loaders.gl/worker-utils": "npm:4.3.2"
"@math.gl/polygon": "npm:^4.1.0"
apache-arrow: "npm:>= 15.0.0"
peerDependencies:
"@loaders.gl/core": ^4.3.0
checksum: 10c0/009a3cb32fbdcda3806211a4ceab8ac4037c37b93a67e8da361c23005885ae24190132cac4ca67580dfcf513a0a24642b30f23acd1df9d136505eec3475aba76
languageName: node
linkType: hard
"@loaders.gl/bson@npm:4.3.2":
version: 4.3.2
resolution: "@loaders.gl/bson@npm:4.3.2"
dependencies:
"@loaders.gl/gis": "npm:4.3.2"
"@loaders.gl/loader-utils": "npm:4.3.2"
"@loaders.gl/schema": "npm:4.3.2"
"@types/bson": "npm:4.2.0"
bson: "npm:4.2.0"
peerDependencies:
"@loaders.gl/core": ^4.3.0
checksum: 10c0/0b3a9bde4d53db3ba8918e432ff65e35e8c1f98a0b6b84d2c8da55b98055562dc09769933aeb988bdca8349c15baaba484a55790259fcc72ed54c0b076d1acd9
languageName: node
linkType: hard
"@loaders.gl/compression@npm:4.3.2":
version: 4.3.2
resolution: "@loaders.gl/compression@npm:4.3.2"
dependencies:
"@loaders.gl/loader-utils": "npm:4.3.2"
"@loaders.gl/worker-utils": "npm:4.3.2"
"@types/brotli": "npm:^1.3.0"
"@types/pako": "npm:^1.0.1"
brotli: "npm:^1.3.2"
fflate: "npm:0.7.4"
lz4js: "npm:^0.2.0"
lzo-wasm: "npm:^0.0.4"
pako: "npm:1.0.11"
snappyjs: "npm:^0.6.1"
zstd-codec: "npm:^0.1"
peerDependencies:
"@loaders.gl/core": ^4.3.0
dependenciesMeta:
brotli:
optional: true
lz4js:
optional: true
zstd-codec:
optional: true
checksum: 10c0/0fa9ee1d9a57707e069b66966396999e54a23188d94f5dcd98b7409c0654c0cff396971f835d59e368b5e6e55c8517af8cc58c59bd3f7d5e22065779f0aee97a
languageName: node
linkType: hard
"@loaders.gl/core@npm:^3.4.13":
version: 3.4.15
resolution: "@loaders.gl/core@npm:3.4.15"
dependencies:
"@babel/runtime": "npm:^7.3.1"
"@loaders.gl/loader-utils": "npm:3.4.15"
"@loaders.gl/worker-utils": "npm:3.4.15"
"@probe.gl/log": "npm:^3.5.0"
checksum: 10c0/7ab7fc7faf818d0ae77515ebcecf5c6ac5cc632c808fbd877fb80094ebdf5c32d472696a6eba8532e7041c6d80b19bf370405f772bd8f97a7a97fe92b2621ddd
languageName: node
linkType: hard
"@loaders.gl/core@npm:^4.3.2":
version: 4.3.2
resolution: "@loaders.gl/core@npm:4.3.2"
dependencies:
"@loaders.gl/loader-utils": "npm:4.3.2"
"@loaders.gl/schema": "npm:4.3.2"
"@loaders.gl/worker-utils": "npm:4.3.2"
"@probe.gl/log": "npm:^4.0.2"
checksum: 10c0/3dbc564707996f376221e49f6ceaa53c8ce1b8026af591cbdce5c6eb87ffaeddc5e4174c0f4c4f2b589c5c586a4fa0045b6891d196ea3a6929d9a8ce1a6ae9e5
languageName: node
linkType: hard
"@loaders.gl/core@npm:^4.3.3":
version: 4.3.3
resolution: "@loaders.gl/core@npm:4.3.3"
dependencies:
"@loaders.gl/loader-utils": "npm:4.3.3"
"@loaders.gl/schema": "npm:4.3.3"
"@loaders.gl/worker-utils": "npm:4.3.3"
"@probe.gl/log": "npm:^4.0.2"
checksum: 10c0/edaf68a70fb5d2b10cf57f932d5274e66d91927edc29413499ba1852fa19fc137c97b281c447b1a0558f8212c5be276d6574d0fef4caf96b3b8a1373519fb266
languageName: node
linkType: hard
"@loaders.gl/csv@npm:^4.3.2":
version: 4.3.2
resolution: "@loaders.gl/csv@npm:4.3.2"
dependencies:
"@loaders.gl/loader-utils": "npm:4.3.2"
"@loaders.gl/schema": "npm:4.3.2"
d3-dsv: "npm:^1.2.0"
peerDependencies:
"@loaders.gl/core": ^4.3.0
checksum: 10c0/69fb75b0957b4765b0d70dfa2519aa41fcb0da428574d3ab92192db783c140acc4fa417555856456e46258bd087edbac0f9072a1e2f98f9cae1f9c2aaa616185
languageName: node
linkType: hard
"@loaders.gl/draco@npm:3.4.15":
version: 3.4.15
resolution: "@loaders.gl/draco@npm:3.4.15"
dependencies:
"@babel/runtime": "npm:^7.3.1"
"@loaders.gl/loader-utils": "npm:3.4.15"
"@loaders.gl/schema": "npm:3.4.15"
"@loaders.gl/worker-utils": "npm:3.4.15"
draco3d: "npm:1.5.5"
checksum: 10c0/11105aaa5f98329b99c97cbb2dde07250318f9086c9e0592a582d620ea4a4f7d8a37e9d234dd0db849f0ae87423f18223692075c420ecfe7d0ff3667b2bcab59
languageName: node
linkType: hard
"@loaders.gl/draco@npm:4.3.3":
version: 4.3.3
resolution: "@loaders.gl/draco@npm:4.3.3"
dependencies:
"@loaders.gl/loader-utils": "npm:4.3.3"
"@loaders.gl/schema": "npm:4.3.3"
"@loaders.gl/worker-utils": "npm:4.3.3"
draco3d: "npm:1.5.7"
peerDependencies:
"@loaders.gl/core": ^4.3.0
checksum: 10c0/ae55555cfffbd0087713bcf5770cafb42029c1f3757d44bffb5dd751c7eaf9f63d6103a68f052bac35ca5391eb7763128aa945332ecf92e437d4bfd0686bc5a1
languageName: node
linkType: hard
"@loaders.gl/gis@npm:3.4.15, @loaders.gl/gis@npm:^3.4.13":
version: 3.4.15
resolution: "@loaders.gl/gis@npm:3.4.15"
dependencies:
"@loaders.gl/loader-utils": "npm:3.4.15"
"@loaders.gl/schema": "npm:3.4.15"
"@mapbox/vector-tile": "npm:^1.3.1"
"@math.gl/polygon": "npm:^3.5.1"
pbf: "npm:^3.2.1"
checksum: 10c0/ac011ce792a5f1e2ead127b85532db5710db0ea123157fc65457e56de5dd45ab16baed2c8356ff7ee84db1873e02a7477ff41b2f9cb56b3089a64b20ca39c806
languageName: node
linkType: hard
"@loaders.gl/gis@npm:4.3.2":
version: 4.3.2
resolution: "@loaders.gl/gis@npm:4.3.2"
dependencies:
"@loaders.gl/loader-utils": "npm:4.3.2"
"@loaders.gl/schema": "npm:4.3.2"
"@mapbox/vector-tile": "npm:^1.3.1"
"@math.gl/polygon": "npm:^4.1.0"
pbf: "npm:^3.2.1"
peerDependencies:
"@loaders.gl/core": ^4.3.0
checksum: 10c0/b8c643bc9bddeaf3a34b6ea162a36bd7f1943898a326e441a52e6340f248e7fe1be3a031945b0fb46f004a3a0578e25cf7435d54fab5cdb92597aefc1083a43d
languageName: node
linkType: hard
"@loaders.gl/gis@npm:4.3.3, @loaders.gl/gis@npm:^4.3.2":
version: 4.3.3
resolution: "@loaders.gl/gis@npm:4.3.3"
dependencies:
"@loaders.gl/loader-utils": "npm:4.3.3"
"@loaders.gl/schema": "npm:4.3.3"
"@mapbox/vector-tile": "npm:^1.3.1"
"@math.gl/polygon": "npm:^4.1.0"
pbf: "npm:^3.2.1"
peerDependencies:
"@loaders.gl/core": ^4.3.0
checksum: 10c0/a8577630c38690ccc83e125010d5cb3c8f9e4f05ead1772b3c48e1803a087c1d4e50613bab025dd38f01780c1db80c2f391c61c14912eda67de8b2359be9fc87
languageName: node
linkType: hard
"@loaders.gl/gis@npm:^4.3.3":
version: 4.3.4
resolution: "@loaders.gl/gis@npm:4.3.4"
dependencies:
"@loaders.gl/loader-utils": "npm:4.3.4"
"@loaders.gl/schema": "npm:4.3.4"
"@mapbox/vector-tile": "npm:^1.3.1"
"@math.gl/polygon": "npm:^4.1.0"
pbf: "npm:^3.2.1"
peerDependencies:
"@loaders.gl/core": ^4.3.0
checksum: 10c0/45a8a957d29502d50db40b5f17cb7df58eccbea56c4fad31d92b2cce08b7e06b7abc5cd1f9ac1d498091386fd61d588167530099d010424c21dc7f1ca76850f9
languageName: node
linkType: hard
"@loaders.gl/gltf@npm:3.4.15, @loaders.gl/gltf@npm:^3.4.13":
version: 3.4.15
resolution: "@loaders.gl/gltf@npm:3.4.15"
dependencies:
"@loaders.gl/draco": "npm:3.4.15"
"@loaders.gl/images": "npm:3.4.15"
"@loaders.gl/loader-utils": "npm:3.4.15"
"@loaders.gl/textures": "npm:3.4.15"
"@math.gl/core": "npm:^3.5.1"
checksum: 10c0/ac06fd23872b91af49b1916cc23bb4ff75112c5be6d6cc36d3d8464fe386b8774f1573752ca421fa5f96d4d4378214109da86a2cdd834641d460a0944160fe1d
languageName: node
linkType: hard
"@loaders.gl/gltf@npm:^4.3.2":
version: 4.3.3
resolution: "@loaders.gl/gltf@npm:4.3.3"
dependencies:
"@loaders.gl/draco": "npm:4.3.3"
"@loaders.gl/images": "npm:4.3.3"
"@loaders.gl/loader-utils": "npm:4.3.3"
"@loaders.gl/schema": "npm:4.3.3"
"@loaders.gl/textures": "npm:4.3.3"
"@math.gl/core": "npm:^4.1.0"
peerDependencies:
"@loaders.gl/core": ^4.3.0
checksum: 10c0/4e2dfc2f6c5ba08d2287cc4f8d508d0225767c6bc0535ed55413cc5e1c7a6aca02798909fcb22cbc8e36e26f4618979d9fd914b078d0459eaab80d937203d943
languageName: node
linkType: hard
"@loaders.gl/images@npm:3.4.15, @loaders.gl/images@npm:^3.4.13":
version: 3.4.15
resolution: "@loaders.gl/images@npm:3.4.15"
dependencies:
"@loaders.gl/loader-utils": "npm:3.4.15"
checksum: 10c0/861db0e3a0dd4da84a5c211459662900a546df9abcdddae47aa21f133247b5d623035654e23d0cf84fd5251b4ea265d93c7f4c44f9636019b2b9d3819fe3e1ca
languageName: node
linkType: hard
"@loaders.gl/images@npm:4.3.2":
version: 4.3.2
resolution: "@loaders.gl/images@npm:4.3.2"
dependencies:
"@loaders.gl/loader-utils": "npm:4.3.2"
peerDependencies:
"@loaders.gl/core": ^4.3.0
checksum: 10c0/2fc2f32880436dbf28d14b642fe2007b41372951b65248e5c5c4dd1bc631236af387b0561b4f5fb2ad85fe72852be79b26c91fa206980aa8d57465d21ba332b3
languageName: node
linkType: hard
"@loaders.gl/images@npm:4.3.3":
version: 4.3.3
resolution: "@loaders.gl/images@npm:4.3.3"
dependencies:
"@loaders.gl/loader-utils": "npm:4.3.3"
peerDependencies:
"@loaders.gl/core": ^4.3.0
checksum: 10c0/9b6dbcce46b687532bd8d6b73bd24b3e315ead3ed5601e0b46e9a0232300405dc14a67e9e7e5aa7abcd25e104f475ec7ddf27a136b8eccc3e57043be9b07b4d8
languageName: node
linkType: hard
"@loaders.gl/json@npm:^4.3.2":
version: 4.3.2
resolution: "@loaders.gl/json@npm:4.3.2"
dependencies:
"@loaders.gl/gis": "npm:4.3.2"
"@loaders.gl/loader-utils": "npm:4.3.2"
"@loaders.gl/schema": "npm:4.3.2"
peerDependencies:
"@loaders.gl/core": ^4.3.0
checksum: 10c0/10101cb63e0fc210e7a61234aff331c4f4a992eee58a88e6379a663bfd881a6e8cead9600b2fecf7500143d45063d9a082d59592246e1aab72cf15b4fa1555a9
languageName: node
linkType: hard
"@loaders.gl/loader-utils@npm:3.4.15, @loaders.gl/loader-utils@npm:^3.4.13":
version: 3.4.15
resolution: "@loaders.gl/loader-utils@npm:3.4.15"
dependencies:
"@babel/runtime": "npm:^7.3.1"
"@loaders.gl/worker-utils": "npm:3.4.15"
"@probe.gl/stats": "npm:^3.5.0"
checksum: 10c0/ccf5b03f84dc5b6ee310edb6dacfb4d35087a79d411cbafee1f50c6cd7b58caec115dbece3536e226c7a7057252c416380cf9bd85ea0a58c54527bcda6c958e5
languageName: node
linkType: hard
"@loaders.gl/loader-utils@npm:4.3.2":
version: 4.3.2
resolution: "@loaders.gl/loader-utils@npm:4.3.2"
dependencies:
"@loaders.gl/schema": "npm:4.3.2"
"@loaders.gl/worker-utils": "npm:4.3.2"
"@probe.gl/log": "npm:^4.0.2"
"@probe.gl/stats": "npm:^4.0.2"
peerDependencies:
"@loaders.gl/core": ^4.3.0
checksum: 10c0/bbaeb362c63b760569323c50ad3a695737fdc93f5ef68c594aa35668ebb35a8332f53cd0cb74c49cc5cf026b9fad4f889c2efde0dc294a269c10c6b304ec5f0c
languageName: node
linkType: hard
"@loaders.gl/loader-utils@npm:4.3.3, @loaders.gl/loader-utils@npm:^4.3.2":
version: 4.3.3
resolution: "@loaders.gl/loader-utils@npm:4.3.3"
dependencies:
"@loaders.gl/schema": "npm:4.3.3"
"@loaders.gl/worker-utils": "npm:4.3.3"
"@probe.gl/log": "npm:^4.0.2"
"@probe.gl/stats": "npm:^4.0.2"
peerDependencies:
"@loaders.gl/core": ^4.3.0
checksum: 10c0/5da26b94b9c9b260bf4da211c3daee801f3f810c56ca81aec75979134c9d4e46ffeb4c74a896605529f2a7858797ad9dd383f3058b7a2dd864e3b0d602209059
languageName: node
linkType: hard
"@loaders.gl/loader-utils@npm:4.3.4":
version: 4.3.4
resolution: "@loaders.gl/loader-utils@npm:4.3.4"
dependencies:
"@loaders.gl/schema": "npm:4.3.4"
"@loaders.gl/worker-utils": "npm:4.3.4"
"@probe.gl/log": "npm:^4.0.2"
"@probe.gl/stats": "npm:^4.0.2"
peerDependencies:
"@loaders.gl/core": ^4.3.0
checksum: 10c0/f303500f8f0c5313cf7c8bd2e63bba3a885cc9db95ec66ba195f52453800f7da45accf458a53d50ef380983dc2ebdd1067c6bcc2118dc5f79963fa7a09c542ec
languageName: node
linkType: hard
"@loaders.gl/math@npm:3.4.15":
version: 3.4.15
resolution: "@loaders.gl/math@npm:3.4.15"
dependencies:
"@loaders.gl/images": "npm:3.4.15"
"@loaders.gl/loader-utils": "npm:3.4.15"
"@math.gl/core": "npm:^3.5.1"
checksum: 10c0/5f101b1e9a041b9613215cde9a90a64dfe7cca34f86c93c57f6a6930385fa8b4f7536a21761cd7fde019fd8dc98eee568bef5a6d16c964d1aac695e5ce1fd8c9
languageName: node
linkType: hard
"@loaders.gl/mvt@npm:4.3.3, @loaders.gl/mvt@npm:^4.3.2":
version: 4.3.3
resolution: "@loaders.gl/mvt@npm:4.3.3"
dependencies:
"@loaders.gl/gis": "npm:4.3.3"
"@loaders.gl/images": "npm:4.3.3"
"@loaders.gl/loader-utils": "npm:4.3.3"
"@loaders.gl/schema": "npm:4.3.3"
"@math.gl/polygon": "npm:^4.1.0"
"@probe.gl/stats": "npm:^4.0.0"
pbf: "npm:^3.2.1"
peerDependencies:
"@loaders.gl/core": ^4.3.0
checksum: 10c0/438061e08d1ca414d798a9414ba71637bfd0a8c1f1175bb4fb19f67553820d275aef664a47d94de6e5b11210be3d6f92cb6c0e2d84caa6a674d7b6c35a94f475
languageName: node
linkType: hard
"@loaders.gl/mvt@npm:^3.4.13":
version: 3.4.15
resolution: "@loaders.gl/mvt@npm:3.4.15"
dependencies:
"@loaders.gl/gis": "npm:3.4.15"
"@loaders.gl/loader-utils": "npm:3.4.15"
"@loaders.gl/schema": "npm:3.4.15"
"@math.gl/polygon": "npm:^3.5.1"
pbf: "npm:^3.2.1"
checksum: 10c0/d4d2c07eb5fdcfe1d3e1c4faac0b744757982171c63e810fabba5af6bbc022ebedeee13e8883d25c5a8d4c8f5ddd91e39a66af0528aeb4263684047178d08ee3
languageName: node
linkType: hard
"@loaders.gl/parquet@npm:^4.3.2":
version: 4.3.2
resolution: "@loaders.gl/parquet@npm:4.3.2"
dependencies:
"@loaders.gl/arrow": "npm:4.3.2"
"@loaders.gl/bson": "npm:4.3.2"
"@loaders.gl/compression": "npm:4.3.2"
"@loaders.gl/gis": "npm:4.3.2"
"@loaders.gl/loader-utils": "npm:4.3.2"
"@loaders.gl/schema": "npm:4.3.2"
"@loaders.gl/wkt": "npm:4.3.2"
"@probe.gl/log": "npm:^4.0.9"
async-mutex: "npm:^0.2.2"
base64-js: "npm:^1.3.1"
brotli: "npm:^1.3.2"
ieee754: "npm:^1.2.1"
int53: "npm:^0.2.4"
lz4js: "npm:^0.2.0"
node-int64: "npm:^0.4.0"
object-stream: "npm:0.0.1"
parquet-wasm: "npm:^0.6.1"
snappyjs: "npm:^0.6.0"
thrift: "npm:^0.19.0"
util: "npm:^0.12.5"
varint: "npm:^6.0.0"
zstd-codec: "npm:^0.1"
peerDependencies:
"@loaders.gl/core": ^4.3.0
apache-arrow: ">= 15.0.0"
checksum: 10c0/5a0996df63a24a1e32b8275fa20f9cfa6018eaae55757b9a43c80f9f8e72e8728617d67c7df54c203df0a558de50ca7f3143f7f6aea4c064ab61cb1b2297335e
languageName: node
linkType: hard
"@loaders.gl/pmtiles@npm:^4.3.2":
version: 4.3.3
resolution: "@loaders.gl/pmtiles@npm:4.3.3"
dependencies:
"@loaders.gl/images": "npm:4.3.3"
"@loaders.gl/loader-utils": "npm:4.3.3"
"@loaders.gl/mvt": "npm:4.3.3"
"@loaders.gl/schema": "npm:4.3.3"
pmtiles: "npm:^3.0.4"
peerDependencies:
"@loaders.gl/core": ^4.3.0
checksum: 10c0/2b77243fcb3f3b61d795ce5344774feeb604b2d419384ca366a52797739d9614ced381df4d3cde30b0e2c4e5914fd9803b634d1fef785ee15a2d22950ac0148c
languageName: node
linkType: hard
"@loaders.gl/schema@npm:3.4.15, @loaders.gl/schema@npm:^3.4.13":
version: 3.4.15
resolution: "@loaders.gl/schema@npm:3.4.15"
dependencies:
"@types/geojson": "npm:^7946.0.7"
checksum: 10c0/651b62681c2122d926c3faa5d1bf51550734474c41ab4d118b48fd56959126cf90c4d47522f6bd1ecbd418fc44ef859bd6cecf341eb1470fb3f07acab23e495e
languageName: node
linkType: hard
"@loaders.gl/schema@npm:4.3.2":
version: 4.3.2
resolution: "@loaders.gl/schema@npm:4.3.2"
dependencies:
"@types/geojson": "npm:^7946.0.7"
peerDependencies:
"@loaders.gl/core": ^4.3.0
checksum: 10c0/6ba7f1b60b1c746f71a62e0dc627a13e1f7ebedb338630ce8b00972ef8c67dae614bc698be35618f4bc02c7d2536b2e686329af6076ed22ddddaf2269fc5efd1
languageName: node
linkType: hard
"@loaders.gl/schema@npm:4.3.3, @loaders.gl/schema@npm:^4.1.0-alpha.4, @loaders.gl/schema@npm:^4.3.2, @loaders.gl/schema@npm:^4.3.3":
version: 4.3.3
resolution: "@loaders.gl/schema@npm:4.3.3"
dependencies:
"@types/geojson": "npm:^7946.0.7"
peerDependencies:
"@loaders.gl/core": ^4.3.0
checksum: 10c0/abc83524fd03f0964a8964e4338667ef9a5de367301cbc73587564b764b7e33e6777f6b61ce8939300fac973f63eca3ccca5353da6384a53504428aedd37d918
languageName: node
linkType: hard
"@loaders.gl/schema@npm:4.3.4":
version: 4.3.4
resolution: "@loaders.gl/schema@npm:4.3.4"
dependencies:
"@types/geojson": "npm:^7946.0.7"
peerDependencies:
"@loaders.gl/core": ^4.3.0
checksum: 10c0/8a1a8d7c3a1c553d02086519252ed37d9311643a1eecae0a037a7c6498fee6c07829054bbdcfd24f040f062857f5a9daa0da4f9d83b773e28723b6281e71ad9c
languageName: node
linkType: hard
"@loaders.gl/terrain@npm:^3.4.13":
version: 3.4.15
resolution: "@loaders.gl/terrain@npm:3.4.15"
dependencies:
"@babel/runtime": "npm:^7.3.1"
"@loaders.gl/images": "npm:3.4.15"
"@loaders.gl/loader-utils": "npm:3.4.15"
"@loaders.gl/schema": "npm:3.4.15"
"@mapbox/martini": "npm:^0.2.0"
checksum: 10c0/50ab91120631e71b8c387476a6b458ed41547db157117716e2d7cc6be855f0f7b54f5c2a3907a02444656f6e109619ff074b70153d5a7a60c94fbebf092ae432
languageName: node
linkType: hard
"@loaders.gl/textures@npm:3.4.15":
version: 3.4.15
resolution: "@loaders.gl/textures@npm:3.4.15"
dependencies:
"@loaders.gl/images": "npm:3.4.15"
"@loaders.gl/loader-utils": "npm:3.4.15"
"@loaders.gl/schema": "npm:3.4.15"
"@loaders.gl/worker-utils": "npm:3.4.15"
ktx-parse: "npm:^0.0.4"
texture-compressor: "npm:^1.0.2"
checksum: 10c0/60362028f6500ac5e01a7a745726e14f80577c837a07f882adbe9b7aa30a39aea21c334f4c228b037ce51ce5a1bf68ef2f305853d779b654651a10a8c907ea68
languageName: node
linkType: hard
"@loaders.gl/textures@npm:4.3.3":
version: 4.3.3
resolution: "@loaders.gl/textures@npm:4.3.3"
dependencies:
"@loaders.gl/images": "npm:4.3.3"
"@loaders.gl/loader-utils": "npm:4.3.3"
"@loaders.gl/schema": "npm:4.3.3"
"@loaders.gl/worker-utils": "npm:4.3.3"
"@math.gl/types": "npm:^4.1.0"
ktx-parse: "npm:^0.7.0"
texture-compressor: "npm:^1.0.2"
peerDependencies:
"@loaders.gl/core": ^4.3.0
checksum: 10c0/fe8fc9788d3314e9958d87a3da1808c35b657dbf58b5fc7b47ba3fb1de7b41faadc15c01e664e4936884000892aaebed9daa3529d663864467108d9ea6aab032
languageName: node
linkType: hard
"@loaders.gl/tiles@npm:3.4.15, @loaders.gl/tiles@npm:^3.4.13":
version: 3.4.15
resolution: "@loaders.gl/tiles@npm:3.4.15"
dependencies:
"@loaders.gl/loader-utils": "npm:3.4.15"
"@loaders.gl/math": "npm:3.4.15"
"@math.gl/core": "npm:^3.5.1"
"@math.gl/culling": "npm:^3.5.1"
"@math.gl/geospatial": "npm:^3.5.1"
"@math.gl/web-mercator": "npm:^3.5.1"
"@probe.gl/stats": "npm:^3.5.0"
peerDependencies:
"@loaders.gl/core": ^3.4.0
checksum: 10c0/fe5437895ef80379112fb336bd8c875993350be83d194ec7c83098dfc6d985c37026342eb75e7c5e5ae89e36fcfbb8c55a32ba79fe168ae2e5b2e291fffbb3c1
languageName: node
linkType: hard
"@loaders.gl/wkt@npm:4.3.2":
version: 4.3.2
resolution: "@loaders.gl/wkt@npm:4.3.2"
dependencies:
"@loaders.gl/gis": "npm:4.3.2"
"@loaders.gl/loader-utils": "npm:4.3.2"
"@loaders.gl/schema": "npm:4.3.2"
peerDependencies:
"@loaders.gl/core": ^4.3.0
checksum: 10c0/dc9809948be2dc1fa2b4da322a9c5ad63501b260c2c76ea0a694944aaddf09e6c8586e0999e4073fa039f6e801b9a6e8b3654ffa56d7e5b32a9ccebb938d9b9e
languageName: node
linkType: hard
"@loaders.gl/wkt@npm:^4.3.2":
version: 4.3.3
resolution: "@loaders.gl/wkt@npm:4.3.3"
dependencies:
"@loaders.gl/gis": "npm:4.3.3"
"@loaders.gl/loader-utils": "npm:4.3.3"
"@loaders.gl/schema": "npm:4.3.3"
peerDependencies:
"@loaders.gl/core": ^4.3.0
checksum: 10c0/5b50ca01f6934730107b5ea02f2bda0cadc7f05878c999294573b946bc1ec6d4e10ec73ad7f5f8d09354498b60fb312b82166332b79bcee416e69184124da6a4
languageName: node
linkType: hard
"@loaders.gl/wms@npm:4.3.2":
version: 4.3.2
resolution: "@loaders.gl/wms@npm:4.3.2"
dependencies:
"@loaders.gl/images": "npm:4.3.2"
"@loaders.gl/loader-utils": "npm:4.3.2"
"@loaders.gl/schema": "npm:4.3.2"
"@loaders.gl/xml": "npm:4.3.2"
"@turf/rewind": "npm:^5.1.5"
deep-strict-equal: "npm:^0.2.0"
peerDependencies:
"@loaders.gl/core": ^4.3.0
checksum: 10c0/6ab4e3afb91aa65a53eaee88e0538fa91e422b7c23ee38a94f86f76940cbd193d1ca6effebfbe082ecde63c2f8cc1076a92074be6dbd7ff20ff6cd3dbe8aec94
languageName: node
linkType: hard
"@loaders.gl/wms@npm:^3.4.13":
version: 3.4.15
resolution: "@loaders.gl/wms@npm:3.4.15"
dependencies:
"@babel/runtime": "npm:^7.3.1"
"@loaders.gl/images": "npm:3.4.15"
"@loaders.gl/loader-utils": "npm:3.4.15"
"@loaders.gl/schema": "npm:3.4.15"
"@loaders.gl/xml": "npm:3.4.15"
"@turf/rewind": "npm:^5.1.5"
deep-strict-equal: "npm:^0.2.0"
lerc: "npm:^4.0.1"
checksum: 10c0/c3266c8c8d43ae1ba1dd02a536687aa38ab8cc9c50b87cd1473aef4d69fc1eb893f752f5466a638559d54fbd63a4b7fa0fc157eab34a5d37101cf874b9f532ad
languageName: node
linkType: hard
"@loaders.gl/worker-utils@npm:3.4.15":
version: 3.4.15
resolution: "@loaders.gl/worker-utils@npm:3.4.15"
dependencies:
"@babel/runtime": "npm:^7.3.1"
checksum: 10c0/158d5aac65e62e002085cf556e896ef177b6bd0760470c08e556d32e67eadef24b72ca826b55396929007702c664127558c8fe8e5d90569ac9485081ac2772b5
languageName: node
linkType: hard
"@loaders.gl/worker-utils@npm:4.3.2":
version: 4.3.2
resolution: "@loaders.gl/worker-utils@npm:4.3.2"
peerDependencies:
"@loaders.gl/core": ^4.3.0
checksum: 10c0/53a2b595f6e85786fb7233e28239dc49b52fb08278d93c85a3f01d9315dcd9404aa0d3458ec586768a43894d7ba1a32e14f10e11a8308dc1c6baed63a06bd8da
languageName: node
linkType: hard
"@loaders.gl/worker-utils@npm:4.3.3":
version: 4.3.3
resolution: "@loaders.gl/worker-utils@npm:4.3.3"
peerDependencies:
"@loaders.gl/core": ^4.3.0
checksum: 10c0/d20a666966ce7f0116cf0ec51318152c78342cedb3cc1c0594784bcad65bb94f50929f5b722d8d2842e90eef08e6278bb58c0e028151b9e6076007040ba56fca
languageName: node
linkType: hard
"@loaders.gl/worker-utils@npm:4.3.4":
version: 4.3.4
resolution: "@loaders.gl/worker-utils@npm:4.3.4"
peerDependencies:
"@loaders.gl/core": ^4.3.0
checksum: 10c0/2ed330bcdfc4d18dea3c5d86ec92d76cd4b4c8f93277e2553c744982fec27ec6041d8f0b33076043d85242d608087e11640eb0a2a4d40b1e02480e1fc938ab12
languageName: node
linkType: hard
"@loaders.gl/xml@npm:3.4.15":
version: 3.4.15
resolution: "@loaders.gl/xml@npm:3.4.15"
dependencies:
"@babel/runtime": "npm:^7.3.1"
"@loaders.gl/loader-utils": "npm:3.4.15"
"@loaders.gl/schema": "npm:3.4.15"
fast-xml-parser: "npm:^4.2.5"
checksum: 10c0/70034a653b3917afa54ba96ce5b7c438e42b41c2130bb91e53966e1ac919739fad055a1a9a84fb0b1ff1765a9bf910c0f55e291595dbb1357731abad522a9558
languageName: node
linkType: hard
"@loaders.gl/xml@npm:4.3.2":
version: 4.3.2
resolution: "@loaders.gl/xml@npm:4.3.2"
dependencies:
"@loaders.gl/loader-utils": "npm:4.3.2"
"@loaders.gl/schema": "npm:4.3.2"
fast-xml-parser: "npm:^4.2.5"
peerDependencies:
"@loaders.gl/core": ^4.3.0
checksum: 10c0/9b0a702fd6d98c4c4f9f26c94cd926fbd6f154b7020d73af93aea2dd93c65bf3cea161053e97269734a2fc80fe85b5288b52b28fea46b74041a0f296798ea39e
languageName: node
linkType: hard
"@luma.gl/constants@npm:8.5.21, @luma.gl/constants@npm:^8.5.20, @luma.gl/constants@npm:^8.5.21":
version: 8.5.21
resolution: "@luma.gl/constants@npm:8.5.21"
checksum: 10c0/c444920f69eeaf2bc6c569d90871b1fbcd6e85b24c57d6ea11005ee69ca4e1afdf995bf1a38dd5af060c56490247bd42c802ce0c98c665a87a66ccac17c3ec10
languageName: node
linkType: hard
"@luma.gl/core@npm:8.5.21":
version: 8.5.21
resolution: "@luma.gl/core@npm:8.5.21"
dependencies:
"@babel/runtime": "npm:^7.0.0"
"@luma.gl/constants": "npm:8.5.21"
"@luma.gl/engine": "npm:8.5.21"
"@luma.gl/gltools": "npm:8.5.21"
"@luma.gl/shadertools": "npm:8.5.21"
"@luma.gl/webgl": "npm:8.5.21"
checksum: 10c0/4ea497838abc7eddf9aa4aa4ff1b1a087e95eedf55258ac30913e8b61f65f439cb7eb548ee74ee90aca202e0577098341f847e2e732e5da312dc376446bb7b65
languageName: node
linkType: hard
"@luma.gl/engine@npm:8.5.21":
version: 8.5.21
resolution: "@luma.gl/engine@npm:8.5.21"
dependencies:
"@babel/runtime": "npm:^7.0.0"
"@luma.gl/constants": "npm:8.5.21"
"@luma.gl/gltools": "npm:8.5.21"
"@luma.gl/shadertools": "npm:8.5.21"
"@luma.gl/webgl": "npm:8.5.21"
"@math.gl/core": "npm:^3.5.0"
"@probe.gl/env": "npm:^3.5.0"
"@probe.gl/stats": "npm:^3.5.0"
"@types/offscreencanvas": "npm:^2019.7.0"
checksum: 10c0/e2089447bdcd8425173eb81ad8fdd4b5ce2292d40c13fdd3ba45df79458be84312927d9392ee3f1984c4fa6df11c9ae9a12a2c17faaed205275b5b4303ebe9b9
languageName: node
linkType: hard
"@luma.gl/experimental@npm:^8.5.21":
version: 8.5.21
resolution: "@luma.gl/experimental@npm:8.5.21"
dependencies:
"@luma.gl/constants": "npm:8.5.21"
"@math.gl/core": "npm:^3.5.0"
earcut: "npm:^2.0.6"
peerDependencies:
"@loaders.gl/gltf": ^3.0.0
"@loaders.gl/images": ^3.0.0
"@luma.gl/engine": ^8.4.0
"@luma.gl/gltools": ^8.4.0
"@luma.gl/shadertools": ^8.4.0
"@luma.gl/webgl": ^8.4.0
checksum: 10c0/ed65e12b71fbabca9dccaf237b5d185eb7303491a92a9b8c438f9f8d1d551fe8ac615503bb86fd46c8d2244e9a7fc0b57e4c6254622f3d537d33c4ae329fe6a3
languageName: node
linkType: hard
"@luma.gl/gltools@npm:8.5.21":
version: 8.5.21
resolution: "@luma.gl/gltools@npm:8.5.21"
dependencies:
"@babel/runtime": "npm:^7.0.0"
"@luma.gl/constants": "npm:8.5.21"
"@probe.gl/env": "npm:^3.5.0"
"@probe.gl/log": "npm:^3.5.0"
"@types/offscreencanvas": "npm:^2019.7.0"
checksum: 10c0/fa9f57d3c7d364c7754b3ac3f6349c3096ca424802b38bfeb57eb16858e09408515cb59aef681591fab366f4801680e83fe5ba6f7f0f5f73d86ab5f1e1e2c683
languageName: node
linkType: hard
"@luma.gl/shadertools@npm:8.5.21, @luma.gl/shadertools@npm:^8.5.20, @luma.gl/shadertools@npm:^8.5.21":
version: 8.5.21
resolution: "@luma.gl/shadertools@npm:8.5.21"
dependencies:
"@babel/runtime": "npm:^7.0.0"
"@math.gl/core": "npm:^3.5.0"
checksum: 10c0/e5b72b4ef292f33c664c2961d5476fd3c8d971c23e3d6b95d08f6988e39c53421f25cf549206271ebe75d282d0dffa2e198f40e2932f47f16e8f1a6727e5c916
languageName: node
linkType: hard
"@luma.gl/webgl@npm:8.5.21":
version: 8.5.21
resolution: "@luma.gl/webgl@npm:8.5.21"
dependencies:
"@babel/runtime": "npm:^7.0.0"
"@luma.gl/constants": "npm:8.5.21"
"@luma.gl/gltools": "npm:8.5.21"
"@probe.gl/env": "npm:^3.5.0"
"@probe.gl/stats": "npm:^3.5.0"
checksum: 10c0/f4e75f2b95ec0019cf3d3fbb8312bfe6efaa0b787689fb8b35745e2000ccfc1bfdb77239ac13c134e430bec65dba4fb11bb3dd12afc0e9bf451f13cefa971e73
languageName: node
linkType: hard
"@mapbox/fusspot@npm:^0.4.0":
version: 0.4.0
resolution: "@mapbox/fusspot@npm:0.4.0"
dependencies:
is-plain-obj: "npm:^1.1.0"
xtend: "npm:^4.0.1"
checksum: 10c0/521af958fca8fb5c7f958713318c4035dd0da27888d3082f5e6993699b4b738a0f31e4a656bf551243a778e3726e0b5a3d37898a4d288eee68ad9bac69661050
languageName: node
linkType: hard
"@mapbox/geo-viewport@npm:^0.4.1":
version: 0.4.1
resolution: "@mapbox/geo-viewport@npm:0.4.1"
dependencies:
"@mapbox/sphericalmercator": "npm:~1.1.0"
checksum: 10c0/a2fc2cac2c35b4abcb1bf3d6fd4c11234d8c896267b1829d17856ccad246ed174be2230c6d4f8036b72e32438b181e749ee758f072ba2844ceac54c0e19c0148
languageName: node
linkType: hard
"@mapbox/geojson-normalize@npm:0.0.1":
version: 0.0.1
resolution: "@mapbox/geojson-normalize@npm:0.0.1"
bin:
geojson-normalize: geojson-normalize
checksum: 10c0/c51e7fa1462a9152493e2b639ce0b50d4c59ed8615f79c6be509312e4db2f29741cae50ecba1b8e290ce50c50f00c892039df3a5306d15712e51a6a28fcd4ecf
languageName: node
linkType: hard
"@mapbox/geojson-rewind@npm:^0.5.0, @mapbox/geojson-rewind@npm:^0.5.2":
version: 0.5.2
resolution: "@mapbox/geojson-rewind@npm:0.5.2"
dependencies:
get-stream: "npm:^6.0.1"
minimist: "npm:^1.2.6"
bin:
geojson-rewind: geojson-rewind
checksum: 10c0/631f89ba5b656cb1e02197c242b231f98da0afb96815fa26481497176d6bd5f2aac77af4950da91c954094694acbc26382bd3d38146705737e8ff06442d95a12
languageName: node
linkType: hard
"@mapbox/geojson-types@npm:^1.0.2":
version: 1.0.2
resolution: "@mapbox/geojson-types@npm:1.0.2"
checksum: 10c0/aa0a2cb95a358d8756ab5aa70356bcbd6f554a4571703a88a09e7db6580061d6ef4054db5fe3ecb2817c383b8b5433746a8f46712dc606b32063f73b154f99fc
languageName: node
linkType: hard
"@mapbox/jsonlint-lines-primitives@npm:^2.0.2, @mapbox/jsonlint-lines-primitives@npm:~2.0.2":
version: 2.0.2
resolution: "@mapbox/jsonlint-lines-primitives@npm:2.0.2"
checksum: 10c0/5814e42fc453700132f93ea742aabcef9a3c98d9bf17d4c1106f82d1dcd91bbc93052e66e29014323b9b2a41b020c743d897e4a96cc4ed2f734482d587d8c2b2
languageName: node
linkType: hard
"@mapbox/mapbox-gl-supported@npm:^1.5.0":
version: 1.5.0
resolution: "@mapbox/mapbox-gl-supported@npm:1.5.0"
peerDependencies:
mapbox-gl: ">=0.32.1 <2.0.0"
checksum: 10c0/5b7712e8b546e598dc5152632504cad53081211b64ddc4447825840ddca703275bc36599167b9550ab906ca8a9554936bcdae562073fdef24b8d38d78ee262fb
languageName: node
linkType: hard
"@mapbox/mapbox-sdk@npm:^0.15.3":
version: 0.15.6
resolution: "@mapbox/mapbox-sdk@npm:0.15.6"
dependencies:
"@mapbox/fusspot": "npm:^0.4.0"
"@mapbox/parse-mapbox-token": "npm:^0.2.0"
"@mapbox/polyline": "npm:^1.0.0"
eventemitter3: "npm:^3.1.0"
form-data: "npm:^3.0.0"
got: "npm:^11.8.5"
is-plain-obj: "npm:^1.1.0"
xtend: "npm:^4.0.1"
checksum: 10c0/ea94cdc9b5ba8ce8b603685b92aa63c0a8a848f4a59103d323ae228149784b87d808165ff6929045a7cfdf31c853a4d99f91cf228ea19359c21d348ff169b106
languageName: node
linkType: hard
"@mapbox/martini@npm:^0.2.0":
version: 0.2.0
resolution: "@mapbox/martini@npm:0.2.0"
checksum: 10c0/6d74edcdb9bc2d5243a0f3a42b6e92dce5a6f9c92481d3478246ca1aabe61adf8bfbd965b32271d81493e2ce49bab9671e19c9fd9e23d8f6f98ffd437f212b6c
languageName: node
linkType: hard
"@mapbox/parse-mapbox-token@npm:^0.2.0":
version: 0.2.0
resolution: "@mapbox/parse-mapbox-token@npm:0.2.0"
dependencies:
base-64: "npm:^0.1.0"
checksum: 10c0/86c6c397cdbaee0eb298e70efce4c09ecfc62a502dcecd88b7a1edfa57136b03fbf7bd485bc0e959af5dea6324e394530819ca7105a77d1e2a12355a9a9ab17f
languageName: node
linkType: hard
"@mapbox/point-geometry@npm:0.1.0, @mapbox/point-geometry@npm:^0.1.0, @mapbox/point-geometry@npm:~0.1.0":
version: 0.1.0
resolution: "@mapbox/point-geometry@npm:0.1.0"
checksum: 10c0/e4d861908574cb3165f5ad37b000416ebc90a2d6b3e0073191e6b6dc5074a6159d84ac5114d78557399bb429134f0d05bfb529e7902d1cb2b36d722b72ab662c
languageName: node
linkType: hard
"@mapbox/polyline@npm:^1.0.0":
version: 1.2.1
resolution: "@mapbox/polyline@npm:1.2.1"
dependencies:
meow: "npm:^9.0.0"
bin:
polyline: bin/polyline.bin.js
checksum: 10c0/b0defde6b2436db4d48c167310c96a83e17bf8d3300e4202ae5169371adad779897f27430d1be6b6def9da695dfb9e4bca505f21754f43105a4cf9fd98871a28
languageName: node
linkType: hard
"@mapbox/sphericalmercator@npm:~1.1.0":
version: 1.1.0
resolution: "@mapbox/sphericalmercator@npm:1.1.0"
bin:
bbox: bin/bbox.js
to4326: bin/to4326.js
to900913: bin/to900913.js
xyz: bin/xyz.js
checksum: 10c0/06b0a78efe81c33cc28254cc1c26a8a106bce6a997882a52749bf768a66e00ea8b263dea80c77daff22751ebcc7f190e486f23da94ca84a327f0e16c79d83dba
languageName: node
linkType: hard
"@mapbox/tiny-sdf@npm:^1.1.1":
version: 1.2.5
resolution: "@mapbox/tiny-sdf@npm:1.2.5"
checksum: 10c0/de0252388a628ddb491c986c715f0b63ca6a74f5dac16d3e51eb75a21935a31e34fba5db47c81cc59a462d782021fc68b2e3cc119b2d6cabe15d31e311674d6c
languageName: node
linkType: hard
"@mapbox/tiny-sdf@npm:^2.0.5, @mapbox/tiny-sdf@npm:^2.0.6":
version: 2.0.6
resolution: "@mapbox/tiny-sdf@npm:2.0.6"
checksum: 10c0/cb272578a30c88d6694937af9b084106aa251e92c71089e7d57b0df8152fd0ce0598d5816182a4cd478dc40b188ea680cb6d53f4385107719424beabe7ed4e13
languageName: node
linkType: hard
"@mapbox/unitbezier@npm:^0.0.0":
version: 0.0.0
resolution: "@mapbox/unitbezier@npm:0.0.0"
checksum: 10c0/af1943ebeb7532317a5cedfc38d0e580b7bd76cc5c43988df65541d377f3e3fa7d68c201dda20f5239213a4bc81ec5d13146354107196ffc4f14d6f39b8343b5
languageName: node
linkType: hard
"@mapbox/unitbezier@npm:^0.0.1":
version: 0.0.1
resolution: "@mapbox/unitbezier@npm:0.0.1"
checksum: 10c0/97f39d4fbdf9579d0a1a8be0d536eb113a805d36459e774014f488a7ca6cc9dcfc77ab7a2ebe5af395ad50da6efb4dbf2566de0db3f62b6b8675cddbace8f86a
languageName: node
linkType: hard
"@mapbox/vector-tile@npm:^1.3.1":
version: 1.3.1
resolution: "@mapbox/vector-tile@npm:1.3.1"
dependencies:
"@mapbox/point-geometry": "npm:~0.1.0"
checksum: 10c0/ffb271b95c383923768295e72bdf95e428efb906434b864ea04d3853a8373cf0de19f039bd6615f7cf018fbfb4dbf4599f27ebaa86c2b7b09f7d69187f8d7da1
languageName: node
linkType: hard
"@mapbox/whoots-js@npm:^3.1.0":
version: 3.1.0
resolution: "@mapbox/whoots-js@npm:3.1.0"
checksum: 10c0/fe9e959a9049bcbc2c05d9d1156e050191ad697a1bd95e41cdfa069051ff1d6f2930ced234a8d68d5a0bf78091feab30d76497418ec800d90f0aac8691fe4fd4
languageName: node
linkType: hard
"@maplibre/maplibre-gl-style-spec@npm:^19.2.1, @maplibre/maplibre-gl-style-spec@npm:^19.3.3":
version: 19.3.3
resolution: "@maplibre/maplibre-gl-style-spec@npm:19.3.3"
dependencies:
"@mapbox/jsonlint-lines-primitives": "npm:~2.0.2"
"@mapbox/unitbezier": "npm:^0.0.1"
json-stringify-pretty-compact: "npm:^3.0.0"
minimist: "npm:^1.2.8"
rw: "npm:^1.3.3"
sort-object: "npm:^3.0.3"
bin:
gl-style-format: dist/gl-style-format.mjs
gl-style-migrate: dist/gl-style-migrate.mjs
gl-style-validate: dist/gl-style-validate.mjs
checksum: 10c0/ef315bf9c4e5ebce0d76a7722e53c3e4192b92ea405c95392f61655f551a112bbc17fd00c7c62a16eeb57cdb79a2145e385c4eaf2ca7f50222d2540c9e7e0a7a
languageName: node
linkType: hard
"@math.gl/core@npm:3.6.3, @math.gl/core@npm:^3.5.0, @math.gl/core@npm:^3.5.1, @math.gl/core@npm:^3.6.2":
version: 3.6.3
resolution: "@math.gl/core@npm:3.6.3"
dependencies:
"@babel/runtime": "npm:^7.12.0"
"@math.gl/types": "npm:3.6.3"
gl-matrix: "npm:^3.4.0"
checksum: 10c0/f26b1f5b6f65061190ef087d0c418c020ba6b8391ebe4ac5ba830b900d4a531d84e2099b05583e44893b45dcfc7faae3e3966c6d1629801d013643cddc42120e
languageName: node
linkType: hard
"@math.gl/core@npm:4.0.1, @math.gl/core@npm:^4.0.0":
version: 4.0.1
resolution: "@math.gl/core@npm:4.0.1"
dependencies:
"@math.gl/types": "npm:4.0.1"
checksum: 10c0/f3c8bfec6c66f0036949a037d565788b99e42edec15d6f3033159901ba1ad3166c9d7208bb33b51abfcbf7a74475e79b941834b47b2577aa2411b8372d07afd6
languageName: node
linkType: hard
"@math.gl/core@npm:4.1.0, @math.gl/core@npm:^4.1.0":
version: 4.1.0
resolution: "@math.gl/core@npm:4.1.0"
dependencies:
"@math.gl/types": "npm:4.1.0"
checksum: 10c0/495934dc2be0b60cd6ff2cc16a0215608c9254919db741a0074b6b41cef9a0543c7f790eda7d529afa102d2937490608ef75fcc64c789ef2876ae750fd0ed3d6
languageName: node
linkType: hard
"@math.gl/culling@npm:^3.5.1, @math.gl/culling@npm:^3.6.2":
version: 3.6.3
resolution: "@math.gl/culling@npm:3.6.3"
dependencies:
"@babel/runtime": "npm:^7.12.0"
"@math.gl/core": "npm:3.6.3"
gl-matrix: "npm:^3.4.0"
checksum: 10c0/c589e5c1a0b51d2661e4d311e9fb6b2ff18f8a496f186b08c31a2e655f3b9e4d1641b6e285fe795deb9e4e5a07632d2df9b31a3984b57d559b214804c4607e52
languageName: node
linkType: hard
"@math.gl/geospatial@npm:^3.5.1":
version: 3.6.3
resolution: "@math.gl/geospatial@npm:3.6.3"
dependencies:
"@babel/runtime": "npm:^7.12.0"
"@math.gl/core": "npm:3.6.3"
gl-matrix: "npm:^3.4.0"
checksum: 10c0/67238ec94ea453d3c2c3bcf64508967402d822546d6fdd7eb43afece420e46a6c2a30e073bcf1d672df021bb08ab230d3733f7d07382a325629e65adcca04852
languageName: node
linkType: hard
"@math.gl/polygon@npm:^3.5.1, @math.gl/polygon@npm:^3.6.2":
version: 3.6.3
resolution: "@math.gl/polygon@npm:3.6.3"
dependencies:
"@math.gl/core": "npm:3.6.3"
checksum: 10c0/a4d7a81ed6a2f8dafabaeefb1c9216064ab48b50a5774128b47fa197b58aa4afcf7f4f8279a2fe5a1e5e45b97299b604ae0b1c47ceb029702c3a5ecd6e70452f
languageName: node
linkType: hard
"@math.gl/polygon@npm:^4.0.0":
version: 4.0.1
resolution: "@math.gl/polygon@npm:4.0.1"
dependencies:
"@math.gl/core": "npm:4.0.1"
checksum: 10c0/ebbd5e698d643078b711e09ebe8750c6a46e7f541b98effffd335bb055f7579792f39a2afd731bf574ddd35025dc1bf2792b1266037a6310cbeae5be3a847d71
languageName: node
linkType: hard
"@math.gl/polygon@npm:^4.1.0":
version: 4.1.0
resolution: "@math.gl/polygon@npm:4.1.0"
dependencies:
"@math.gl/core": "npm:4.1.0"
checksum: 10c0/0fcfb489c5613ddff6dd0cbea65084e10fa9a3523fb87a36a4fdf10057d12d2a99f1ebd93da6e72b45db0783fb8cd9cff704765473372a8db580faaf50c85ab5
languageName: node
linkType: hard
"@math.gl/sun@npm:^3.6.2":
version: 3.6.3
resolution: "@math.gl/sun@npm:3.6.3"
dependencies:
"@babel/runtime": "npm:^7.12.0"
checksum: 10c0/d6453e73c378a1bfaf5a619e752a584b6873f0d733892ae942e2756aef2471ce126420e17f3caaf32571b4f0d45d7b98d62f81652dddb88a893c8452ec8159e4
languageName: node
linkType: hard
"@math.gl/types@npm:3.6.3":
version: 3.6.3
resolution: "@math.gl/types@npm:3.6.3"
checksum: 10c0/93beb933ba9a1671c03f728e829ba3653be5ad362d8648aeba7422043bfd323839f08374d85dd7cd03758e0487a84ce0c9f80379eeb19c02d92e0b669a14d294
languageName: node
linkType: hard
"@math.gl/types@npm:4.0.1":
version: 4.0.1
resolution: "@math.gl/types@npm:4.0.1"
checksum: 10c0/1488cd0ac119ae21de42ca86e4fee6703962ba620c84257fcdeda63962afd1749868a68e490c41338edc2470c2795b90f1cf9c2006bb0fa079a27fde1508c0f8
languageName: node
linkType: hard
"@math.gl/types@npm:4.1.0, @math.gl/types@npm:^4.0.0, @math.gl/types@npm:^4.1.0":
version: 4.1.0
resolution: "@math.gl/types@npm:4.1.0"
checksum: 10c0/3c4dfa5ac5c9e2cef24d31f56b89c1dde785a5d70fd1a7030386346cb7dd4fa2cce5ba983b89842c1971492e30870dd22a078d64893f9c66887e38367bf992fa
languageName: node
linkType: hard
"@math.gl/web-mercator@npm:^3.5.1, @math.gl/web-mercator@npm:^3.5.5, @math.gl/web-mercator@npm:^3.6.2":
version: 3.6.3
resolution: "@math.gl/web-mercator@npm:3.6.3"
dependencies:
"@babel/runtime": "npm:^7.12.0"
gl-matrix: "npm:^3.4.0"
checksum: 10c0/95a1267261e03fa0194ec5ac5f3f8c3a13e1182cf3865d4d3bbd669706d42bd067335d1812df2e844c63c1f0f21c50e08af2b90168f2db1d3fa3ba2087f59703
languageName: node
linkType: hard
"@monaco-editor/loader@npm:^1.4.0":
version: 1.4.0
resolution: "@monaco-editor/loader@npm:1.4.0"
dependencies:
state-local: "npm:^1.0.6"
peerDependencies:
monaco-editor: ">= 0.21.0 < 1"
checksum: 10c0/68938350adf2f42363a801d87f5d00c87d397d4cba7041141af10a9216bd35c85209b4723a26d56cb32e68eef61471deda2a450f8892891118fbdce7fa1d987d
languageName: node
linkType: hard
"@monaco-editor/react@npm:^4.6.0":
version: 4.6.0
resolution: "@monaco-editor/react@npm:4.6.0"
dependencies:
"@monaco-editor/loader": "npm:^1.4.0"
peerDependencies:
monaco-editor: ">= 0.25.0 < 1"
react: ^16.8.0 || ^17.0.0 || ^18.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
checksum: 10c0/231e9a9b66a530db326f6732de0ebffcce6b79dcfaf4948923d78b9a3d5e2a04b7a06e1f85bbbca45a5ae15c107a124e4c5c46cabadc20a498fb5f2d05f7f379
languageName: node
linkType: hard
"@nebula.gl/edit-modes@npm:1.0.2-alpha.1":
version: 1.0.2-alpha.1
resolution: "@nebula.gl/edit-modes@npm:1.0.2-alpha.1"
dependencies:
"@turf/along": "npm:>=6.3.0"
"@turf/area": "npm:>=4.0.0"
"@turf/bbox": "npm:>=4.0.0"
"@turf/bbox-polygon": "npm:>=4.0.0"
"@turf/bearing": "npm:>=4.0.0"
"@turf/boolean-point-in-polygon": "npm:>=4.0.0"
"@turf/buffer": "npm:>=4.0.0"
"@turf/center": "npm:>=4.0.0"
"@turf/centroid": "npm:>=4.0.0"
"@turf/circle": "npm:>=4.0.0"
"@turf/destination": "npm:>=4.0.0"
"@turf/difference": "npm:>=4.0.0"
"@turf/distance": "npm:>=4.0.0"
"@turf/ellipse": "npm:>=4.0.0"
"@turf/helpers": "npm:>=4.0.0"
"@turf/intersect": "npm:>=4.0.0"
"@turf/line-intersect": "npm:>=4.0.0"
"@turf/nearest-point-on-line": "npm:>=4.0.0"
"@turf/point-to-line-distance": "npm:>=4.0.0"
"@turf/polygon-to-line": "npm:>=4.0.0"
"@turf/rewind": "npm:>=4.0.0"
"@turf/transform-rotate": "npm:>=4.0.0"
"@turf/transform-scale": "npm:>=4.0.0"
"@turf/transform-translate": "npm:>=4.0.0"
"@turf/union": "npm:>=4.0.0"
geojson: "npm:0.5.0"
lodash.throttle: "npm:^4.1.1"
viewport-mercator-project: "npm:>=6.0.0"
checksum: 10c0/4a96eb463c3c2cb43f1d8caa123f1571d95f4d1d79e25c45bf038b40f2c7b1839756dc4610fbf5afa23d9c6989e32233e6b11f5cadec2babb12c419d9629e79c
languageName: node
linkType: hard
"@nebula.gl/layers@npm:1.0.2-alpha.1":
version: 1.0.2-alpha.1
resolution: "@nebula.gl/layers@npm:1.0.2-alpha.1"
dependencies:
"@danmarshall/deckgl-typings": "npm:4.9.12"
"@nebula.gl/edit-modes": "npm:1.0.2-alpha.1"
"@turf/bbox": "npm:>=4.0.0"
"@turf/bbox-polygon": "npm:>=4.0.0"
"@turf/bearing": "npm:>=4.0.0"
"@turf/boolean-point-in-polygon": "npm:>=4.0.0"
"@turf/buffer": "npm:>=4.0.0"
"@turf/center": "npm:>=4.0.0"
"@turf/centroid": "npm:>=4.0.0"
"@turf/circle": "npm:>=4.0.0"
"@turf/destination": "npm:>=4.0.0"
"@turf/difference": "npm:>=4.0.0"
"@turf/distance": "npm:>=4.0.0"
"@turf/ellipse": "npm:>=4.0.0"
"@turf/helpers": "npm:>=4.0.0"
"@turf/intersect": "npm:>=4.0.0"
"@turf/line-intersect": "npm:>=4.0.0"
"@turf/nearest-point-on-line": "npm:>=4.0.0"
"@turf/point-to-line-distance": "npm:>=4.0.0"
"@turf/polygon-to-line": "npm:>=4.0.0"
"@turf/transform-rotate": "npm:>=4.0.0"
"@turf/transform-scale": "npm:>=4.0.0"
"@turf/transform-translate": "npm:>=4.0.0"
"@turf/union": "npm:>=4.0.0"
cubic-hermite-spline: "npm:^1.0.1"
geojson-types: "npm:^2.0.1"
global: "npm:>=4.3.0"
h3-js: "npm:^3.6.4"
viewport-mercator-project: "npm:>=6.0.0"
peerDependencies:
"@deck.gl/core": ^8.6.0
"@deck.gl/extensions": ^8.6.0
"@deck.gl/geo-layers": ^8.6.0
"@deck.gl/layers": ^8.6.0
"@deck.gl/mesh-layers": ^8.6.0
"@luma.gl/constants": ^8.5.10
"@luma.gl/core": ^8.5.10
checksum: 10c0/52041841f9ac09e61006200e41f14658faf306c65f671e9ad702da87bcbe36ebc9f279291b536f887d8c60c9ee41f091eec6f0a8948b473b76cecad6325e2c30
languageName: node
linkType: hard
"@nodelib/fs.scandir@npm:2.1.5":
version: 2.1.5
resolution: "@nodelib/fs.scandir@npm:2.1.5"
dependencies:
"@nodelib/fs.stat": "npm:2.0.5"
run-parallel: "npm:^1.1.9"
checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb
languageName: node
linkType: hard
"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2":
version: 2.0.5
resolution: "@nodelib/fs.stat@npm:2.0.5"
checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d
languageName: node
linkType: hard
"@nodelib/fs.walk@npm:^1.2.3":
version: 1.2.8
resolution: "@nodelib/fs.walk@npm:1.2.8"
dependencies:
"@nodelib/fs.scandir": "npm:2.1.5"
fastq: "npm:^1.6.0"
checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1
languageName: node
linkType: hard
"@npmcli/agent@npm:^3.0.0":
version: 3.0.0
resolution: "@npmcli/agent@npm:3.0.0"
dependencies:
agent-base: "npm:^7.1.0"
http-proxy-agent: "npm:^7.0.0"
https-proxy-agent: "npm:^7.0.1"
lru-cache: "npm:^10.0.1"
socks-proxy-agent: "npm:^8.0.3"
checksum: 10c0/efe37b982f30740ee77696a80c196912c274ecd2cb243bc6ae7053a50c733ce0f6c09fda085145f33ecf453be19654acca74b69e81eaad4c90f00ccffe2f9271
languageName: node
linkType: hard
"@npmcli/fs@npm:^4.0.0":
version: 4.0.0
resolution: "@npmcli/fs@npm:4.0.0"
dependencies:
semver: "npm:^7.3.5"
checksum: 10c0/c90935d5ce670c87b6b14fab04a965a3b8137e585f8b2a6257263bd7f97756dd736cb165bb470e5156a9e718ecd99413dccc54b1138c1a46d6ec7cf325982fe5
languageName: node
linkType: hard
"@openassistant/core@npm:0.5.13, @openassistant/core@npm:^0.5.13":
version: 0.5.13
resolution: "@openassistant/core@npm:0.5.13"
dependencies:
"@ai-sdk/openai": "npm:^1.3.21"
"@ai-sdk/react": "npm:^1.2.11"
"@ai-sdk/ui-utils": "npm:^1.2.10"
"@langchain/core": "npm:^0.3.38"
ai: "npm:^4.3.13"
openai: "npm:^4.93.0"
openai-zod-functions: "npm:^0.1.2"
zod: "npm:^3.24.4"
zod-to-json-schema: "npm:^3.24.1"
peerDependencies:
"@ai-sdk/anthropic": ^1.1.14
"@ai-sdk/deepseek": ^0.1.8
"@ai-sdk/google": ^1.1.8
"@ai-sdk/xai": ^1.1.8
ollama-ai-provider-v2: ^0.0.5
react: ">=18.2"
peerDependenciesMeta:
"@ai-sdk/anthropic":
optional: true
"@ai-sdk/deepseek":
optional: true
"@ai-sdk/google":
optional: true
"@ai-sdk/xai":
optional: true
ollama-ai-provider-v2:
optional: true
checksum: 10c0/46cf0831dd170b125b5ac1754b7ebbcff84f11158574dc51602f1b6ddf02953411d9a500440775f07f2e7fca8707d3295eb5d69676ac561d6d893c35d5b665f0
languageName: node
linkType: hard
"@openassistant/core@npm:0.5.18, @openassistant/core@npm:^0.5.17":
version: 0.5.18
resolution: "@openassistant/core@npm:0.5.18"
dependencies:
"@ai-sdk/openai": "npm:^1.3.21"
"@ai-sdk/react": "npm:^1.2.11"
"@ai-sdk/ui-utils": "npm:^1.2.10"
"@langchain/core": "npm:^0.3.38"
ai: "npm:^4.3.19"
openai: "npm:^4.93.0"
openai-zod-functions: "npm:^0.1.2"
zod: "npm:^3.24.4"
zod-to-json-schema: "npm:^3.24.1"
peerDependencies:
"@ai-sdk/amazon-bedrock": ^1.1.6
"@ai-sdk/anthropic": ^1.1.14
"@ai-sdk/deepseek": ^0.1.8
"@ai-sdk/google": ^1.1.8
"@ai-sdk/xai": ^1.1.8
ollama-ai-provider-v2: ^0.0.6
react: ">=18.2"
peerDependenciesMeta:
"@ai-sdk/amazon-bedrock":
optional: true
"@ai-sdk/anthropic":
optional: true
"@ai-sdk/deepseek":
optional: true
"@ai-sdk/google":
optional: true
"@ai-sdk/xai":
optional: true
ollama-ai-provider-v2:
optional: true
checksum: 10c0/3e370d3f574ae3eaa0cdbf0658812f2d5b9bacb92ee8645fc18cd29c9d0b6e0dd5d66c2377eb2d0b26382d8b9fe42ed320ad43f8b2610c068fdf1a3907098aa6
languageName: node
linkType: hard
"@openassistant/duckdb@npm:^0.5.13":
version: 0.5.18
resolution: "@openassistant/duckdb@npm:0.5.18"
dependencies:
"@duckdb/duckdb-wasm": "npm:^1.29.0"
"@openassistant/utils": "npm:0.5.18"
apache-arrow: "npm:^17.0.0"
zod: "npm:^3.24.4"
peerDependencies:
react: ">=18.2"
react-dom: ">=18.2"
checksum: 10c0/e9735bd9aff0a2ae2f145d783b38e06ba17af35c5978e266b51b845489b85b9e4f5a0f09f5a3d5700299c9d265fb216e9f6e4640d5be621a9fbcfd986086d487
languageName: node
linkType: hard
"@openassistant/echarts@npm:^0.5.13":
version: 0.5.18
resolution: "@openassistant/echarts@npm:0.5.18"
dependencies:
"@heroui/react": "npm:^2.7.8"
"@iconify/react": "npm:^5.1.0"
"@openassistant/hooks": "npm:0.5.18"
"@openassistant/plots": "npm:0.5.18"
"@openassistant/utils": "npm:0.5.18"
echarts: "npm:^5.5.1"
echarts-for-react: "npm:^3.0.2"
framer-motion: "npm:^12.12.1"
tailwindcss: "npm:^3.4.17"
peerDependencies:
react: ">=18.2"
react-dom: ">=18.2"
checksum: 10c0/80bf54c0329c8b670156c22de099967002811e2865b21413d12fc3395931f6d8a3bdebe8d64ce581c939f8f556ac9d64f1cb29ed292318cf36e37addc4fc2d69
languageName: node
linkType: hard
"@openassistant/geoda@npm:^0.5.13":
version: 0.5.18
resolution: "@openassistant/geoda@npm:0.5.18"
dependencies:
"@geoda/core": "npm:^0.0.22"
"@geoda/lisa": "npm:^0.0.22"
"@geoda/regression": "npm:^0.0.22"
"@loaders.gl/core": "npm:^4.3.3"
"@loaders.gl/gis": "npm:^4.3.3"
"@loaders.gl/schema": "npm:^4.3.3"
"@openassistant/plots": "npm:0.5.18"
"@openassistant/utils": "npm:0.5.18"
"@turf/bbox": "npm:^7.2.0"
peerDependencies:
react: ">=18.2"
react-dom: ">=18.2"
checksum: 10c0/79b909e1a2fae13b813ac1e8499699c4d0ead00586b6ba76eda7c34d75bc2375db592df6587ed4963b732152794a00b7b682e0273c5d7213953d437d8fee2766
languageName: node
linkType: hard
"@openassistant/hooks@npm:0.5.18":
version: 0.5.18
resolution: "@openassistant/hooks@npm:0.5.18"
peerDependencies:
react: ">=18.2"
react-dom: ">=18.2"
checksum: 10c0/2b34551f2c538135f4f6fec3f6744dda0d9b46f63848c418554c802bdd3466183be9a87618fdd1bd4fde81e9155c33f6f2f5c444471e058405cbf10e5ce3a213
languageName: node
linkType: hard
"@openassistant/osm@npm:^0.5.13":
version: 0.5.18
resolution: "@openassistant/osm@npm:0.5.18"
dependencies:
"@openassistant/utils": "npm:0.5.18"
zip3: "npm:^1.0.4"
zod: "npm:^3.24.4"
checksum: 10c0/58a902102e1eb61d4b2dc53bc98c0827b07cffd672a2bf19d342c3fa9cf234adfd3e0f5803bd06be95dd4a2c89c80bd97f74a79dd7db68471286fdbfc552f36b
languageName: node
linkType: hard
"@openassistant/plots@npm:0.5.18, @openassistant/plots@npm:^0.5.13":
version: 0.5.18
resolution: "@openassistant/plots@npm:0.5.18"
dependencies:
"@openassistant/utils": "npm:0.5.18"
d3-array: "npm:^3.2.4"
jstat: "npm:^1.9.6"
simple-statistics: "npm:^7.8.7"
zod: "npm:^3.24.4"
peerDependencies:
react: ">=18.2"
react-dom: ">=18.2"
checksum: 10c0/319a6bff1df4551814d880220b2d45596e865142d61a6ccefa9133e005b300fdec7149aeb3d7efced7857037db5eb88461b42cb10a83693acd5dd25597d35a9c
languageName: node
linkType: hard
"@openassistant/tables@npm:^0.5.13":
version: 0.5.18
resolution: "@openassistant/tables@npm:0.5.18"
dependencies:
"@duckdb/duckdb-wasm": "npm:1.29.0"
"@heroui/button": "npm:^2.2.19"
"@heroui/checkbox": "npm:^2.3.18"
"@heroui/pagination": "npm:^2.2.17"
"@heroui/select": "npm:^2.4.19"
"@heroui/system": "npm:^2.4.15"
"@heroui/table": "npm:^2.2.18"
"@heroui/theme": "npm:^2.4.15"
"@iconify/react": "npm:^5.1.0"
apache-arrow: "npm:^17.0.0"
framer-motion: "npm:^12.12.1"
tailwindcss: "npm:^3.4.17"
peerDependencies:
react: ">=18.2"
react-dom: ">=18.2"
checksum: 10c0/d3874133ac8ff9ab0268dfc145e74cdbb87cea25d2def177e79b859301d5d9908d4806e9a4ab527def3f632fb3461f06d15996ddebf1b8a582fc4104f7487e46
languageName: node
linkType: hard
"@openassistant/ui@npm:^0.5.13":
version: 0.5.13
resolution: "@openassistant/ui@npm:0.5.13"
dependencies:
"@ai-sdk/ui-utils": "npm:^1.2.11"
"@heroui/react": "npm:^2.7.8"
"@heroui/use-clipboard": "npm:^2.1.8"
"@iconify/react": "npm:^5.1.0"
"@openassistant/core": "npm:0.5.13"
"@openassistant/utils": "npm:0.5.13"
ai: "npm:^4.3.16"
framer-motion: "npm:^11.15.0"
html2canvas: "npm:^1.4.1"
next-themes: "npm:^0.4.4"
react-audio-voice-recorder: "npm:^2.2.0"
react-markdown: "npm:^10.0.0"
remark-gfm: "npm:^4.0.1"
tailwindcss: "npm:^3.4.17"
peerDependencies:
react: ">=18.2"
react-dom: ">=18.2"
checksum: 10c0/06aea41b8e1e026728f9b51518c67fea7bd5fcacbe800b8df69bd7449ef66fd929dc234cba884f9f9249acd509a213375caad1a0c94a132fa0f6473f6c42e04d
languageName: node
linkType: hard
"@openassistant/ui@npm:^0.5.17":
version: 0.5.18
resolution: "@openassistant/ui@npm:0.5.18"
dependencies:
"@ai-sdk/ui-utils": "npm:^1.2.11"
"@heroui/react": "npm:^2.7.8"
"@heroui/use-clipboard": "npm:^2.1.8"
"@iconify/react": "npm:^5.1.0"
"@openassistant/core": "npm:0.5.18"
"@openassistant/utils": "npm:0.5.18"
ai: "npm:^4.3.19"
framer-motion: "npm:^11.15.0"
html2canvas: "npm:^1.4.1"
next-themes: "npm:^0.4.4"
react-audio-voice-recorder: "npm:^2.2.0"
react-markdown: "npm:^10.0.0"
remark-gfm: "npm:^4.0.1"
tailwindcss: "npm:^3.4.17"
peerDependencies:
react: ">=18.2"
react-dom: ">=18.2"
checksum: 10c0/d0ddada031f21e24396d0f060b629495506207b6fc875e72fd389be5a2fb6a61fc7424a924eb0709453e35e830ae5b063bb420a4edab721d303a6e0b01794b7e
languageName: node
linkType: hard
"@openassistant/utils@npm:0.5.13":
version: 0.5.13
resolution: "@openassistant/utils@npm:0.5.13"
dependencies:
zod: "npm:^3.24.4"
checksum: 10c0/3f28b04cc9d75ada1721cb4292ce4fb97acd500710db4c54b84ab74367182b31674489fa6f22c22d6d0e97649d28a73076b9c163485c80e1c29f711fea18319c
languageName: node
linkType: hard
"@openassistant/utils@npm:0.5.18, @openassistant/utils@npm:^0.5.13":
version: 0.5.18
resolution: "@openassistant/utils@npm:0.5.18"
dependencies:
zod: "npm:^3.24.4"
checksum: 10c0/51ca502e44829131c8739d2c0f66bc7b4e8ee07effa356ea9a964561b5aeeb74cb9c81641eb134fca22fa063d7b6ffa096d24e50aefdb351fa08a5cbe5915490
languageName: node
linkType: hard
"@opentelemetry/api@npm:1.9.0":
version: 1.9.0
resolution: "@opentelemetry/api@npm:1.9.0"
checksum: 10c0/9aae2fe6e8a3a3eeb6c1fdef78e1939cf05a0f37f8a4fae4d6bf2e09eb1e06f966ece85805626e01ba5fab48072b94f19b835449e58b6d26720ee19a58298add
languageName: node
linkType: hard
"@pkgjs/parseargs@npm:^0.11.0":
version: 0.11.0
resolution: "@pkgjs/parseargs@npm:0.11.0"
checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd
languageName: node
linkType: hard
"@popperjs/core@npm:^2.9.0":
version: 2.11.8
resolution: "@popperjs/core@npm:2.11.8"
checksum: 10c0/4681e682abc006d25eb380d0cf3efc7557043f53b6aea7a5057d0d1e7df849a00e281cd8ea79c902a35a414d7919621fc2ba293ecec05f413598e0b23d5a1e63
languageName: node
linkType: hard
"@probe.gl/env@npm:3.6.0, @probe.gl/env@npm:^3.5.0":
version: 3.6.0
resolution: "@probe.gl/env@npm:3.6.0"
dependencies:
"@babel/runtime": "npm:^7.0.0"
checksum: 10c0/407593697a94ee871d38abcbe541357140dfcce7075b120eed4f66473eb0496df87890a3b7a77032b006a488a60d7f4bd11a476e672cf33393e0b69daa98bf68
languageName: node
linkType: hard
"@probe.gl/env@npm:4.0.9":
version: 4.0.9
resolution: "@probe.gl/env@npm:4.0.9"
checksum: 10c0/c6fcd1742aea014d15fe36a6cf0724d7faf3eeda27856978d87c1658b26ceaefc86254b011de65de35c1dfc0e3074fdbeaef5fd4362a05541a5e46b880e4024f
languageName: node
linkType: hard
"@probe.gl/log@npm:^3.5.0":
version: 3.6.0
resolution: "@probe.gl/log@npm:3.6.0"
dependencies:
"@babel/runtime": "npm:^7.0.0"
"@probe.gl/env": "npm:3.6.0"
checksum: 10c0/03bbddffd89a482a4d539225132154cd1e63eae77a286b22919e5e46e99498f5f1a6a55a61348672e339ed64c7936a85aae980a6120bdd841eb66ec87ff1d2fb
languageName: node
linkType: hard
"@probe.gl/log@npm:^4.0.2, @probe.gl/log@npm:^4.0.9":
version: 4.0.9
resolution: "@probe.gl/log@npm:4.0.9"
dependencies:
"@probe.gl/env": "npm:4.0.9"
checksum: 10c0/23521b46fdda80470d8b38d70c62d77f3b50257a63b3e7660655936593cf5f54ec7f1e2b0a36e8ecb7635c7fd45280bb66bd379a3e58afbde99f23d46f43c112
languageName: node
linkType: hard
"@probe.gl/stats@npm:^3.5.0":
version: 3.6.0
resolution: "@probe.gl/stats@npm:3.6.0"
dependencies:
"@babel/runtime": "npm:^7.0.0"
checksum: 10c0/81077d458314a5d08ed5f2393cdd7572f40ea68589bc16ff0cc3e690f54db1443df6499e77c44af0a0ca3faff8613d6895df4e0203f785bf9d83801ff402cc66
languageName: node
linkType: hard
"@probe.gl/stats@npm:^4.0.0, @probe.gl/stats@npm:^4.0.2":
version: 4.0.9
resolution: "@probe.gl/stats@npm:4.0.9"
checksum: 10c0/23c205232a45941b13d1e87efe060d81f3a09339b0294991fc9fdf6dd9d090a9e6c79cccf23ce8f09e5c14aa44ef128836639490df22729a13214b0ff3c7cd80
languageName: node
linkType: hard
"@radix-ui/primitive@npm:1.1.1":
version: 1.1.1
resolution: "@radix-ui/primitive@npm:1.1.1"
checksum: 10c0/6457bd8d1aa4ecb948e5d2a2484fc570698b2ab472db6d915a8f1eec04823f80423efa60b5ba840f0693bec2ca380333cc5f3b52586b40f407d9f572f9261f8d
languageName: node
linkType: hard
"@radix-ui/react-collapsible@npm:^1.1.0":
version: 1.1.2
resolution: "@radix-ui/react-collapsible@npm:1.1.2"
dependencies:
"@radix-ui/primitive": "npm:1.1.1"
"@radix-ui/react-compose-refs": "npm:1.1.1"
"@radix-ui/react-context": "npm:1.1.1"
"@radix-ui/react-id": "npm:1.1.0"
"@radix-ui/react-presence": "npm:1.1.2"
"@radix-ui/react-primitive": "npm:2.0.1"
"@radix-ui/react-use-controllable-state": "npm:1.1.0"
"@radix-ui/react-use-layout-effect": "npm:1.1.0"
peerDependencies:
"@types/react": "*"
"@types/react-dom": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
"@types/react":
optional: true
"@types/react-dom":
optional: true
checksum: 10c0/8a725539c0c259ea53a0e35d4ddd3acca42cab5113fd537758450ad1e76f0b757423f18aca29364f963bef4f0624d57feb32bf9d12a3ea6b2c084b523ba65205
languageName: node
linkType: hard
"@radix-ui/react-compose-refs@npm:1.1.1":
version: 1.1.1
resolution: "@radix-ui/react-compose-refs@npm:1.1.1"
peerDependencies:
"@types/react": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
"@types/react":
optional: true
checksum: 10c0/3e84580024e66e3cc5b9ae79355e787815c1d2a3c7d46e7f47900a29c33751ca24cf4ac8903314957ab1f7788aebe1687e2258641c188cf94653f7ddf8f70627
languageName: node
linkType: hard
"@radix-ui/react-context@npm:1.1.1":
version: 1.1.1
resolution: "@radix-ui/react-context@npm:1.1.1"
peerDependencies:
"@types/react": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
"@types/react":
optional: true
checksum: 10c0/fc4ace9d79d7954c715ade765e06c95d7e1b12a63a536bcbe842fb904f03f88fc5bd6e38d44bd23243d37a270b4c44380fedddaeeae2d274f0b898a20665aba2
languageName: node
linkType: hard
"@radix-ui/react-id@npm:1.1.0":
version: 1.1.0
resolution: "@radix-ui/react-id@npm:1.1.0"
dependencies:
"@radix-ui/react-use-layout-effect": "npm:1.1.0"
peerDependencies:
"@types/react": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
"@types/react":
optional: true
checksum: 10c0/acf13e29e51ee96336837fc0cfecc306328b20b0e0070f6f0f7aa7a621ded4a1ee5537cfad58456f64bae76caa7f8769231e88dc7dc106197347ee433c275a79
languageName: node
linkType: hard
"@radix-ui/react-presence@npm:1.1.2":
version: 1.1.2
resolution: "@radix-ui/react-presence@npm:1.1.2"
dependencies:
"@radix-ui/react-compose-refs": "npm:1.1.1"
"@radix-ui/react-use-layout-effect": "npm:1.1.0"
peerDependencies:
"@types/react": "*"
"@types/react-dom": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
"@types/react":
optional: true
"@types/react-dom":
optional: true
checksum: 10c0/0c6fa281368636308044df3be4c1f02733094b5e35ba04f26e610dd1c4315a245ffc758e0e176c444742a7a46f4328af1a9d8181e860175ec39338d06525a78d
languageName: node
linkType: hard
"@radix-ui/react-primitive@npm:2.0.1":
version: 2.0.1
resolution: "@radix-ui/react-primitive@npm:2.0.1"
dependencies:
"@radix-ui/react-slot": "npm:1.1.1"
peerDependencies:
"@types/react": "*"
"@types/react-dom": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
"@types/react":
optional: true
"@types/react-dom":
optional: true
checksum: 10c0/6a562bec14f8e9fbfe0012d6c2932b0e54518fed898fa0622300c463611e77a4ca28a969f0cd484efd6570c01c5665dd6151f736262317d01715bc4da1a7dea6
languageName: node
linkType: hard
"@radix-ui/react-slot@npm:1.1.1":
version: 1.1.1
resolution: "@radix-ui/react-slot@npm:1.1.1"
dependencies:
"@radix-ui/react-compose-refs": "npm:1.1.1"
peerDependencies:
"@types/react": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
"@types/react":
optional: true
checksum: 10c0/f3cc71c16529c67a8407a89e0ac13a868cafa0cd05ca185b464db609aa5996a3f00588695518e420bd47ffdb4cc2f76c14cc12ea5a38fc2ca3578a30d2ca58b9
languageName: node
linkType: hard
"@radix-ui/react-use-callback-ref@npm:1.1.0":
version: 1.1.0
resolution: "@radix-ui/react-use-callback-ref@npm:1.1.0"
peerDependencies:
"@types/react": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
"@types/react":
optional: true
checksum: 10c0/e954863f3baa151faf89ac052a5468b42650efca924417470efd1bd254b411a94c69c30de2fdbb90187b38cb984795978e12e30423dc41e4309d93d53b66d819
languageName: node
linkType: hard
"@radix-ui/react-use-controllable-state@npm:1.1.0":
version: 1.1.0
resolution: "@radix-ui/react-use-controllable-state@npm:1.1.0"
dependencies:
"@radix-ui/react-use-callback-ref": "npm:1.1.0"
peerDependencies:
"@types/react": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
"@types/react":
optional: true
checksum: 10c0/2af883b5b25822ac226e60a6bfde647c0123a76345052a90219026059b3f7225844b2c13a9a16fba859c1cda5fb3d057f2a04503f71780e607516492db4eb3a1
languageName: node
linkType: hard
"@radix-ui/react-use-layout-effect@npm:1.1.0":
version: 1.1.0
resolution: "@radix-ui/react-use-layout-effect@npm:1.1.0"
peerDependencies:
"@types/react": "*"
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
"@types/react":
optional: true
checksum: 10c0/9bf87ece1845c038ed95863cfccf9d75f557c2400d606343bab0ab3192b9806b9840e6aa0a0333fdf3e83cf9982632852192f3e68d7d8367bc8c788dfdf8e62b
languageName: node
linkType: hard
"@react-aria/breadcrumbs@npm:3.5.23":
version: 3.5.23
resolution: "@react-aria/breadcrumbs@npm:3.5.23"
dependencies:
"@react-aria/i18n": "npm:^3.12.8"
"@react-aria/link": "npm:^3.8.0"
"@react-aria/utils": "npm:^3.28.2"
"@react-types/breadcrumbs": "npm:^3.7.12"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/3f0ef474612baeae6ece803897f8e28ee1124d0ce235745aeb85cde6ee89a16c1b157a50b678ae5e466248bce21045ff47a9e20f810484b68a0ffa0ca21ae389
languageName: node
linkType: hard
"@react-aria/button@npm:3.13.0":
version: 3.13.0
resolution: "@react-aria/button@npm:3.13.0"
dependencies:
"@react-aria/interactions": "npm:^3.25.0"
"@react-aria/toolbar": "npm:3.0.0-beta.15"
"@react-aria/utils": "npm:^3.28.2"
"@react-stately/toggle": "npm:^3.8.3"
"@react-types/button": "npm:^3.12.0"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/43f9cb740889d52e1091316b2997a7d5cbff41ee685610d195cc0987aff8bcec75aa462eb0bfcfdb02bb860b1f0e2fc84038dffbff378a8db3c7f34880acefed
languageName: node
linkType: hard
"@react-aria/calendar@npm:3.8.0":
version: 3.8.0
resolution: "@react-aria/calendar@npm:3.8.0"
dependencies:
"@internationalized/date": "npm:^3.8.0"
"@react-aria/i18n": "npm:^3.12.8"
"@react-aria/interactions": "npm:^3.25.0"
"@react-aria/live-announcer": "npm:^3.4.2"
"@react-aria/utils": "npm:^3.28.2"
"@react-stately/calendar": "npm:^3.8.0"
"@react-types/button": "npm:^3.12.0"
"@react-types/calendar": "npm:^3.7.0"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/1354c49f2f6a8fb57d90fc7925dc380cfe7c5f685179f2754f991b101c9941673d0142f7d18cb9094bc31cd7288704fdf83ecf54bea177492993edfe1f2d8168
languageName: node
linkType: hard
"@react-aria/checkbox@npm:3.15.4":
version: 3.15.4
resolution: "@react-aria/checkbox@npm:3.15.4"
dependencies:
"@react-aria/form": "npm:^3.0.15"
"@react-aria/interactions": "npm:^3.25.0"
"@react-aria/label": "npm:^3.7.17"
"@react-aria/toggle": "npm:^3.11.2"
"@react-aria/utils": "npm:^3.28.2"
"@react-stately/checkbox": "npm:^3.6.13"
"@react-stately/form": "npm:^3.1.3"
"@react-stately/toggle": "npm:^3.8.3"
"@react-types/checkbox": "npm:^3.9.3"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/f82677187a4f99fb50b6169b392ed5bf301dd72a0d5dfdc622b2134bc607e3ef52e765178ae4add72ea19b6b4ce420a89c05c25f6428102344095841fc4102d7
languageName: node
linkType: hard
"@react-aria/checkbox@npm:3.16.0":
version: 3.16.0
resolution: "@react-aria/checkbox@npm:3.16.0"
dependencies:
"@react-aria/form": "npm:^3.1.0"
"@react-aria/interactions": "npm:^3.25.4"
"@react-aria/label": "npm:^3.7.20"
"@react-aria/toggle": "npm:^3.12.0"
"@react-aria/utils": "npm:^3.30.0"
"@react-stately/checkbox": "npm:^3.7.0"
"@react-stately/form": "npm:^3.2.0"
"@react-stately/toggle": "npm:^3.9.0"
"@react-types/checkbox": "npm:^3.10.0"
"@react-types/shared": "npm:^3.31.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/6bfc60da1ba1c421bae1931e4db9c6add7dcda5d88f00ca05af8892bbb7aade592899ffc4b62c3d40d8430952d7389a3943ffd6cebd7a8f69bec48c05e0bd3f2
languageName: node
linkType: hard
"@react-aria/combobox@npm:3.12.2":
version: 3.12.2
resolution: "@react-aria/combobox@npm:3.12.2"
dependencies:
"@react-aria/focus": "npm:^3.20.2"
"@react-aria/i18n": "npm:^3.12.8"
"@react-aria/listbox": "npm:^3.14.3"
"@react-aria/live-announcer": "npm:^3.4.2"
"@react-aria/menu": "npm:^3.18.2"
"@react-aria/overlays": "npm:^3.27.0"
"@react-aria/selection": "npm:^3.24.0"
"@react-aria/textfield": "npm:^3.17.2"
"@react-aria/utils": "npm:^3.28.2"
"@react-stately/collections": "npm:^3.12.3"
"@react-stately/combobox": "npm:^3.10.4"
"@react-stately/form": "npm:^3.1.3"
"@react-types/button": "npm:^3.12.0"
"@react-types/combobox": "npm:^3.13.4"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/6832fc6d88e28d5688b8330853c8ee0109383b869cbce159f31d65fdd5a6d10b5fe637922cc75ea0840ab823207b5e1832dae87e84362b56ef5438f9e6b624f1
languageName: node
linkType: hard
"@react-aria/datepicker@npm:3.14.2":
version: 3.14.2
resolution: "@react-aria/datepicker@npm:3.14.2"
dependencies:
"@internationalized/date": "npm:^3.8.0"
"@internationalized/number": "npm:^3.6.1"
"@internationalized/string": "npm:^3.2.6"
"@react-aria/focus": "npm:^3.20.2"
"@react-aria/form": "npm:^3.0.15"
"@react-aria/i18n": "npm:^3.12.8"
"@react-aria/interactions": "npm:^3.25.0"
"@react-aria/label": "npm:^3.7.17"
"@react-aria/spinbutton": "npm:^3.6.14"
"@react-aria/utils": "npm:^3.28.2"
"@react-stately/datepicker": "npm:^3.14.0"
"@react-stately/form": "npm:^3.1.3"
"@react-types/button": "npm:^3.12.0"
"@react-types/calendar": "npm:^3.7.0"
"@react-types/datepicker": "npm:^3.12.0"
"@react-types/dialog": "npm:^3.5.17"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/adaf07fe07cdd27c473292256be65baabdc5d2a6fd7b377cefd05e14469d719a2bc490c220f9dc4bb7c66dac19b8c30fabea706af1fa59ea3af17893a44f9d9b
languageName: node
linkType: hard
"@react-aria/dialog@npm:3.5.24":
version: 3.5.24
resolution: "@react-aria/dialog@npm:3.5.24"
dependencies:
"@react-aria/interactions": "npm:^3.25.0"
"@react-aria/overlays": "npm:^3.27.0"
"@react-aria/utils": "npm:^3.28.2"
"@react-types/dialog": "npm:^3.5.17"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/23d14b9558ecc01f6eb5845de3844d4fd5e48e164e6f62b7701cd2b3ec8a9ea3e7c36d079d03c6929230d877847e69563f9b9756f89c6240aa6f7d472dd30a35
languageName: node
linkType: hard
"@react-aria/dialog@npm:3.5.28":
version: 3.5.28
resolution: "@react-aria/dialog@npm:3.5.28"
dependencies:
"@react-aria/interactions": "npm:^3.25.4"
"@react-aria/overlays": "npm:^3.28.0"
"@react-aria/utils": "npm:^3.30.0"
"@react-types/dialog": "npm:^3.5.20"
"@react-types/shared": "npm:^3.31.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/2138c4a2c5845064061639045af12cdbbbdc9fcc8fe2255513aa4e288ef127030d022e67dc727db7155220616521899c5cf627845cf44e54f4ef2375b66271b2
languageName: node
linkType: hard
"@react-aria/focus@npm:3.20.2":
version: 3.20.2
resolution: "@react-aria/focus@npm:3.20.2"
dependencies:
"@react-aria/interactions": "npm:^3.25.0"
"@react-aria/utils": "npm:^3.28.2"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
clsx: "npm:^2.0.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/83c7ce227affed990833664b75c99601390ea9c879a44032541447268da22508712c512f5a943f702aef07bfe1e0ea51f554f49db132f17d80b2da9cb71ec687
languageName: node
linkType: hard
"@react-aria/focus@npm:3.21.0":
version: 3.21.0
resolution: "@react-aria/focus@npm:3.21.0"
dependencies:
"@react-aria/interactions": "npm:^3.25.4"
"@react-aria/utils": "npm:^3.30.0"
"@react-types/shared": "npm:^3.31.0"
"@swc/helpers": "npm:^0.5.0"
clsx: "npm:^2.0.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/036b6811b137bc9e305c2340bd9ae0539567f0acc63b6bad6b768a640ade8d1728748ee0dd4da822a1c874e93c40ac042854c7bcd0bc8ee5541a9d4742f41c61
languageName: node
linkType: hard
"@react-aria/focus@npm:^3.20.2, @react-aria/focus@npm:^3.20.3":
version: 3.20.3
resolution: "@react-aria/focus@npm:3.20.3"
dependencies:
"@react-aria/interactions": "npm:^3.25.1"
"@react-aria/utils": "npm:^3.29.0"
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
clsx: "npm:^2.0.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/c8f220b517fdf52b214d6b74e1ad599e42b5177afdecf6380cf11ee0eac0ad57cf91b8e29fac185881e253f8edf1a88ab242df422aed902004115ea212ade26f
languageName: node
linkType: hard
"@react-aria/focus@npm:^3.21.0, @react-aria/focus@npm:^3.21.1":
version: 3.21.1
resolution: "@react-aria/focus@npm:3.21.1"
dependencies:
"@react-aria/interactions": "npm:^3.25.5"
"@react-aria/utils": "npm:^3.30.1"
"@react-types/shared": "npm:^3.32.0"
"@swc/helpers": "npm:^0.5.0"
clsx: "npm:^2.0.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/9271132d9b215f916a19fa72a8a15eb68dc15a73ed8f9fc41096166c703a27336a1d908e3d55cd95de7eac234037abe3ff1fe2a33f15fc48934e9dd8cb97ff48
languageName: node
linkType: hard
"@react-aria/form@npm:3.0.15":
version: 3.0.15
resolution: "@react-aria/form@npm:3.0.15"
dependencies:
"@react-aria/interactions": "npm:^3.25.0"
"@react-aria/utils": "npm:^3.28.2"
"@react-stately/form": "npm:^3.1.3"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/b95733c22e0de879443513adbc8c9b26d9903f8ea6a21d63499088df76c895d5b03e73817f135fbd260000a2954b5ea1f4aff7f12003c85288254edca8de82d5
languageName: node
linkType: hard
"@react-aria/form@npm:3.1.0":
version: 3.1.0
resolution: "@react-aria/form@npm:3.1.0"
dependencies:
"@react-aria/interactions": "npm:^3.25.4"
"@react-aria/utils": "npm:^3.30.0"
"@react-stately/form": "npm:^3.2.0"
"@react-types/shared": "npm:^3.31.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/97212f9904f7cfda797e43a77e2e5371ecccb63193658930832cf1e0955f64e80bdb888fca2c6184dae3c3ba8a3c6e14ac219ae63c6e633558063aadb20bae55
languageName: node
linkType: hard
"@react-aria/form@npm:^3.0.15, @react-aria/form@npm:^3.0.16":
version: 3.0.16
resolution: "@react-aria/form@npm:3.0.16"
dependencies:
"@react-aria/interactions": "npm:^3.25.1"
"@react-aria/utils": "npm:^3.29.0"
"@react-stately/form": "npm:^3.1.4"
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/5ee975ee59c4d450c44e5365465c5b91d470700a9e0e6d8a8cce93a7727c372d3228259d5d33cad72239751c195ed5734ac440af1095d7f1694c9898c8d41fc5
languageName: node
linkType: hard
"@react-aria/form@npm:^3.1.0":
version: 3.1.1
resolution: "@react-aria/form@npm:3.1.1"
dependencies:
"@react-aria/interactions": "npm:^3.25.5"
"@react-aria/utils": "npm:^3.30.1"
"@react-stately/form": "npm:^3.2.1"
"@react-types/shared": "npm:^3.32.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/34872e8b30e2e407311e94bc6104af360f8795eaf7c66600c0de2a7c842d5aacc65628493fde92be0b578206761d720088150b12c2b9243032795c5a0b50d3fe
languageName: node
linkType: hard
"@react-aria/grid@npm:^3.13.0":
version: 3.14.0
resolution: "@react-aria/grid@npm:3.14.0"
dependencies:
"@react-aria/focus": "npm:^3.20.3"
"@react-aria/i18n": "npm:^3.12.9"
"@react-aria/interactions": "npm:^3.25.1"
"@react-aria/live-announcer": "npm:^3.4.2"
"@react-aria/selection": "npm:^3.24.1"
"@react-aria/utils": "npm:^3.29.0"
"@react-stately/collections": "npm:^3.12.4"
"@react-stately/grid": "npm:^3.11.2"
"@react-stately/selection": "npm:^3.20.2"
"@react-types/checkbox": "npm:^3.9.4"
"@react-types/grid": "npm:^3.3.2"
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/ae7f5bb177110a56e0d9f6c8ed7eb070b36684dacfcaa5238198c4e05f9e3220b0f081d6bd6dcaeb4a17e0fe668b7818cdc5a9f1d18aabc475be219b87124f46
languageName: node
linkType: hard
"@react-aria/grid@npm:^3.14.3":
version: 3.14.4
resolution: "@react-aria/grid@npm:3.14.4"
dependencies:
"@react-aria/focus": "npm:^3.21.1"
"@react-aria/i18n": "npm:^3.12.12"
"@react-aria/interactions": "npm:^3.25.5"
"@react-aria/live-announcer": "npm:^3.4.4"
"@react-aria/selection": "npm:^3.25.1"
"@react-aria/utils": "npm:^3.30.1"
"@react-stately/collections": "npm:^3.12.7"
"@react-stately/grid": "npm:^3.11.5"
"@react-stately/selection": "npm:^3.20.5"
"@react-types/checkbox": "npm:^3.10.1"
"@react-types/grid": "npm:^3.3.5"
"@react-types/shared": "npm:^3.32.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/f7cf1586b2c1da0b3e1e3ea66bc1b94d54329815ffba38d069c129fb3c1e724d39d3a1b37f6f7fa3dc58e6203ad3692ac35524d7b9dad926111446fc00fa4985
languageName: node
linkType: hard
"@react-aria/i18n@npm:3.12.11":
version: 3.12.11
resolution: "@react-aria/i18n@npm:3.12.11"
dependencies:
"@internationalized/date": "npm:^3.8.2"
"@internationalized/message": "npm:^3.1.8"
"@internationalized/number": "npm:^3.6.4"
"@internationalized/string": "npm:^3.2.7"
"@react-aria/ssr": "npm:^3.9.10"
"@react-aria/utils": "npm:^3.30.0"
"@react-types/shared": "npm:^3.31.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/79e8b464e42b17e5d5f6b8e43e9fe641e901048e6c2279412f4ecdb2c3d4caeba26e0dc7ff2cd6fc8a7f1d5f0cfe7aaa7b33212c659ab5f9ab81ef50818b6b7e
languageName: node
linkType: hard
"@react-aria/i18n@npm:3.12.8":
version: 3.12.8
resolution: "@react-aria/i18n@npm:3.12.8"
dependencies:
"@internationalized/date": "npm:^3.8.0"
"@internationalized/message": "npm:^3.1.7"
"@internationalized/number": "npm:^3.6.1"
"@internationalized/string": "npm:^3.2.6"
"@react-aria/ssr": "npm:^3.9.8"
"@react-aria/utils": "npm:^3.28.2"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/fc6ccd3a44b084a9ad4001f8adfd086598ed4be229b51c3702b3d289003a67cf0ffd1d93174c16e51bb1745930571ba277d3132a25e6f8d4cc610ef273da7bdb
languageName: node
linkType: hard
"@react-aria/i18n@npm:^3.12.11, @react-aria/i18n@npm:^3.12.12":
version: 3.12.12
resolution: "@react-aria/i18n@npm:3.12.12"
dependencies:
"@internationalized/date": "npm:^3.9.0"
"@internationalized/message": "npm:^3.1.8"
"@internationalized/number": "npm:^3.6.5"
"@internationalized/string": "npm:^3.2.7"
"@react-aria/ssr": "npm:^3.9.10"
"@react-aria/utils": "npm:^3.30.1"
"@react-types/shared": "npm:^3.32.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/83e1c4d0f246951ca9da6adf2e2825d50668b31f2de62a23ac04a0d9dd3e874a17e4616c72321a3fca6a99e22460f79fb15dee86637b6c7bea5c00835a076f8a
languageName: node
linkType: hard
"@react-aria/i18n@npm:^3.12.8, @react-aria/i18n@npm:^3.12.9":
version: 3.12.9
resolution: "@react-aria/i18n@npm:3.12.9"
dependencies:
"@internationalized/date": "npm:^3.8.1"
"@internationalized/message": "npm:^3.1.7"
"@internationalized/number": "npm:^3.6.2"
"@internationalized/string": "npm:^3.2.6"
"@react-aria/ssr": "npm:^3.9.8"
"@react-aria/utils": "npm:^3.29.0"
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/478955ee021ffb7bd4b34b248060b655a9ab05e3d60c3b4e0c1f01da45936572202b55a0f41a5464a78d850ba5f23135dc0a44823be43728db16df69a0e146d3
languageName: node
linkType: hard
"@react-aria/interactions@npm:3.25.0":
version: 3.25.0
resolution: "@react-aria/interactions@npm:3.25.0"
dependencies:
"@react-aria/ssr": "npm:^3.9.8"
"@react-aria/utils": "npm:^3.28.2"
"@react-stately/flags": "npm:^3.1.1"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/091c7b7b2f94b2fefed440b97a986eff0320d5ba5e1a43c195a912e035aa8ce4d4be15f1852b2dffdbcc6a70190a74f0809e4d4cf3d7646b70c9f9b0fca829f5
languageName: node
linkType: hard
"@react-aria/interactions@npm:3.25.4":
version: 3.25.4
resolution: "@react-aria/interactions@npm:3.25.4"
dependencies:
"@react-aria/ssr": "npm:^3.9.10"
"@react-aria/utils": "npm:^3.30.0"
"@react-stately/flags": "npm:^3.1.2"
"@react-types/shared": "npm:^3.31.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/38375299a2cb9e91de8a2e599dab768e9ecc66b8c49311a2d128b6af96f954270136c9f469540ff99cf9291ea45cf531afdd3e63d8c88eb11d06976cef07f0c8
languageName: node
linkType: hard
"@react-aria/interactions@npm:^3.25.0, @react-aria/interactions@npm:^3.25.1":
version: 3.25.1
resolution: "@react-aria/interactions@npm:3.25.1"
dependencies:
"@react-aria/ssr": "npm:^3.9.8"
"@react-aria/utils": "npm:^3.29.0"
"@react-stately/flags": "npm:^3.1.1"
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/9f9d63c0eae8809810883d3469044beab2e8df074a992ba935b6aeb74831c13cb463b5854b61deb3ebc1ccf7c05d70d2fae85d40375d7b8b56503100010c7c6d
languageName: node
linkType: hard
"@react-aria/interactions@npm:^3.25.4, @react-aria/interactions@npm:^3.25.5":
version: 3.25.5
resolution: "@react-aria/interactions@npm:3.25.5"
dependencies:
"@react-aria/ssr": "npm:^3.9.10"
"@react-aria/utils": "npm:^3.30.1"
"@react-stately/flags": "npm:^3.1.2"
"@react-types/shared": "npm:^3.32.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/056875ecc08b085134cc8298d5824ed55ff11433cd240320e14f8514e517d64f02f6a95e414a5304f46488c83090e3d1c138b0cf9cbe5d6fdab4e5a4bad5d727
languageName: node
linkType: hard
"@react-aria/label@npm:3.7.17":
version: 3.7.17
resolution: "@react-aria/label@npm:3.7.17"
dependencies:
"@react-aria/utils": "npm:^3.28.2"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/3a120b1cec9ac10f9cdb970a03651a64c5d80cb9b5f968d644164d5e736d2834968a1ef9252aefa633af577378a2884a564b4a99daead920f00ea2c861da8267
languageName: node
linkType: hard
"@react-aria/label@npm:3.7.20":
version: 3.7.20
resolution: "@react-aria/label@npm:3.7.20"
dependencies:
"@react-aria/utils": "npm:^3.30.0"
"@react-types/shared": "npm:^3.31.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/b845674d02b05403d853beee835129970570d29284241858728e3b650b07ae10c46f5e9af8022f40f57437295d6ae652914ee8342ce996d1bc1a395f96c85f5d
languageName: node
linkType: hard
"@react-aria/label@npm:^3.7.17, @react-aria/label@npm:^3.7.18":
version: 3.7.18
resolution: "@react-aria/label@npm:3.7.18"
dependencies:
"@react-aria/utils": "npm:^3.29.0"
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/4d2bc1120dd76c894ef23209e09a47a6ea09e38d9d6f4f9f4af0b9ef158a1956178da9cbf4b49644672c558056a865fa6a98ec9a91c45c7275af230fb08c8fc4
languageName: node
linkType: hard
"@react-aria/label@npm:^3.7.20":
version: 3.7.21
resolution: "@react-aria/label@npm:3.7.21"
dependencies:
"@react-aria/utils": "npm:^3.30.1"
"@react-types/shared": "npm:^3.32.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/34d55f423cd0ca6061453b2feee0dacc6ad70f7ddea7922615287a11283c8fc053e89e7425b2f2ca3d7e1a077b1bcedf5a2b4c6e95e8c7a203756b6703ffbd78
languageName: node
linkType: hard
"@react-aria/landmark@npm:^3.0.2":
version: 3.0.3
resolution: "@react-aria/landmark@npm:3.0.3"
dependencies:
"@react-aria/utils": "npm:^3.29.0"
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
use-sync-external-store: "npm:^1.4.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/107ee577c79511ba39dd8433d3ed69861e520d300cc34633f800e3f7bf29e801d76f2695a5ed0c358e8ee2b0fa0419edb5b0fd9ec6b01a87ace0e0334d0fe70e
languageName: node
linkType: hard
"@react-aria/link@npm:3.8.0":
version: 3.8.0
resolution: "@react-aria/link@npm:3.8.0"
dependencies:
"@react-aria/interactions": "npm:^3.25.0"
"@react-aria/utils": "npm:^3.28.2"
"@react-types/link": "npm:^3.6.0"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/ecd7c477cf671ec6daed2faf100779ee98e230c3feb513a38ca7588034592db378f5294c6932fd670bee1fbdb4721ac6c8d8e817fbbfed61997b364f98f39b02
languageName: node
linkType: hard
"@react-aria/link@npm:^3.8.0":
version: 3.8.1
resolution: "@react-aria/link@npm:3.8.1"
dependencies:
"@react-aria/interactions": "npm:^3.25.1"
"@react-aria/utils": "npm:^3.29.0"
"@react-types/link": "npm:^3.6.1"
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/3976c045a109a8b2123b2f363b23a79abc2c6764e3d2e12f7cbdca46b3328e9c0a5e9a4d1bb383684b5c427938c4afac6b9f40179ec7b2483ee4b9e2d028947b
languageName: node
linkType: hard
"@react-aria/listbox@npm:3.14.3":
version: 3.14.3
resolution: "@react-aria/listbox@npm:3.14.3"
dependencies:
"@react-aria/interactions": "npm:^3.25.0"
"@react-aria/label": "npm:^3.7.17"
"@react-aria/selection": "npm:^3.24.0"
"@react-aria/utils": "npm:^3.28.2"
"@react-stately/collections": "npm:^3.12.3"
"@react-stately/list": "npm:^3.12.1"
"@react-types/listbox": "npm:^3.6.0"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/ff386c6dcbcea500699c06029abb22a0c04a6421e8adb354fa55d9dfe80e3e0b3848175bc7c1e1634cf7ad7abdf7ab8daf2930bf039409df424bf88b10a6f0d8
languageName: node
linkType: hard
"@react-aria/listbox@npm:3.14.7":
version: 3.14.7
resolution: "@react-aria/listbox@npm:3.14.7"
dependencies:
"@react-aria/interactions": "npm:^3.25.4"
"@react-aria/label": "npm:^3.7.20"
"@react-aria/selection": "npm:^3.25.0"
"@react-aria/utils": "npm:^3.30.0"
"@react-stately/collections": "npm:^3.12.6"
"@react-stately/list": "npm:^3.12.4"
"@react-types/listbox": "npm:^3.7.2"
"@react-types/shared": "npm:^3.31.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/3a15f9a32dff26b84d53d3c89c15820bbc112a189ab81c4e4c217b1feb2d810870dc4368a83eca56e3f4a9925ac210a9ce7e5d990890856fd544366f68e7f02a
languageName: node
linkType: hard
"@react-aria/listbox@npm:^3.14.3":
version: 3.14.4
resolution: "@react-aria/listbox@npm:3.14.4"
dependencies:
"@react-aria/interactions": "npm:^3.25.1"
"@react-aria/label": "npm:^3.7.18"
"@react-aria/selection": "npm:^3.24.1"
"@react-aria/utils": "npm:^3.29.0"
"@react-stately/collections": "npm:^3.12.4"
"@react-stately/list": "npm:^3.12.2"
"@react-types/listbox": "npm:^3.7.0"
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/1fe30a23021d04164671bade1519426246caa4da3cf853daf2211d25405dcc2aa91800638603fbab878b439f32367b8528da283db6c2f7f59ff354e9de39148c
languageName: node
linkType: hard
"@react-aria/live-announcer@npm:^3.4.2":
version: 3.4.2
resolution: "@react-aria/live-announcer@npm:3.4.2"
dependencies:
"@swc/helpers": "npm:^0.5.0"
checksum: 10c0/db9c08540316f309a50d7f2af893904999500db3ede82a95209c2614613f2be2605a3396795dc3cfcde399c1cd7733383e1f5d4783e92723edce0791108e13d7
languageName: node
linkType: hard
"@react-aria/live-announcer@npm:^3.4.4":
version: 3.4.4
resolution: "@react-aria/live-announcer@npm:3.4.4"
dependencies:
"@swc/helpers": "npm:^0.5.0"
checksum: 10c0/1598372e773ee8dbb2f1d2a946652384f5140ab54106416e2a182c72eaabc1b3739e624bac7aea3d95429ba16487074c782ff90db093be36dd1d4cf84f9f9a17
languageName: node
linkType: hard
"@react-aria/menu@npm:3.18.2":
version: 3.18.2
resolution: "@react-aria/menu@npm:3.18.2"
dependencies:
"@react-aria/focus": "npm:^3.20.2"
"@react-aria/i18n": "npm:^3.12.8"
"@react-aria/interactions": "npm:^3.25.0"
"@react-aria/overlays": "npm:^3.27.0"
"@react-aria/selection": "npm:^3.24.0"
"@react-aria/utils": "npm:^3.28.2"
"@react-stately/collections": "npm:^3.12.3"
"@react-stately/menu": "npm:^3.9.3"
"@react-stately/selection": "npm:^3.20.1"
"@react-stately/tree": "npm:^3.8.9"
"@react-types/button": "npm:^3.12.0"
"@react-types/menu": "npm:^3.10.0"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/ed1d6795398e8756f1206d7fdb9a7d23b3ef4b9c95b20ca3b3c6e1cab8e36c24d2e78531dab6e65e7d4a4ca831246fbd3c61db4bd8d1773a4957f2a86fe450e6
languageName: node
linkType: hard
"@react-aria/menu@npm:3.19.0":
version: 3.19.0
resolution: "@react-aria/menu@npm:3.19.0"
dependencies:
"@react-aria/focus": "npm:^3.21.0"
"@react-aria/i18n": "npm:^3.12.11"
"@react-aria/interactions": "npm:^3.25.4"
"@react-aria/overlays": "npm:^3.28.0"
"@react-aria/selection": "npm:^3.25.0"
"@react-aria/utils": "npm:^3.30.0"
"@react-stately/collections": "npm:^3.12.6"
"@react-stately/menu": "npm:^3.9.6"
"@react-stately/selection": "npm:^3.20.4"
"@react-stately/tree": "npm:^3.9.1"
"@react-types/button": "npm:^3.13.0"
"@react-types/menu": "npm:^3.10.3"
"@react-types/shared": "npm:^3.31.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/8f149eb798430a48e66416200d14eea95a6d750198be7a3477a9fb5a00b8227a176b6f192b9e5b22d54166dcf05192a3f59db90a8b3fbab1bac466a67c3a51f7
languageName: node
linkType: hard
"@react-aria/menu@npm:^3.18.2":
version: 3.18.3
resolution: "@react-aria/menu@npm:3.18.3"
dependencies:
"@react-aria/focus": "npm:^3.20.3"
"@react-aria/i18n": "npm:^3.12.9"
"@react-aria/interactions": "npm:^3.25.1"
"@react-aria/overlays": "npm:^3.27.1"
"@react-aria/selection": "npm:^3.24.1"
"@react-aria/utils": "npm:^3.29.0"
"@react-stately/collections": "npm:^3.12.4"
"@react-stately/menu": "npm:^3.9.4"
"@react-stately/selection": "npm:^3.20.2"
"@react-stately/tree": "npm:^3.8.10"
"@react-types/button": "npm:^3.12.1"
"@react-types/menu": "npm:^3.10.1"
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/107a84dc82fe199d1834dcbaa43125a43c4057a5160f094fa4a71cd579dc3e8c9edcbd72e770b192f669a8a60da1d9fec3984e3799f20e81c1505fbeb7e24fb9
languageName: node
linkType: hard
"@react-aria/numberfield@npm:3.11.13":
version: 3.11.13
resolution: "@react-aria/numberfield@npm:3.11.13"
dependencies:
"@react-aria/i18n": "npm:^3.12.8"
"@react-aria/interactions": "npm:^3.25.0"
"@react-aria/spinbutton": "npm:^3.6.14"
"@react-aria/textfield": "npm:^3.17.2"
"@react-aria/utils": "npm:^3.28.2"
"@react-stately/form": "npm:^3.1.3"
"@react-stately/numberfield": "npm:^3.9.11"
"@react-types/button": "npm:^3.12.0"
"@react-types/numberfield": "npm:^3.8.10"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/2d2a138d77006c74af2ec5eeb50ef7a7d7ecc4d195bcf7b2b932ca0ff063596f4f0aa8f3bbc99db79a8ddddf3e7fa9e1092395a7599de41c2de76c652af8c11f
languageName: node
linkType: hard
"@react-aria/overlays@npm:3.27.0":
version: 3.27.0
resolution: "@react-aria/overlays@npm:3.27.0"
dependencies:
"@react-aria/focus": "npm:^3.20.2"
"@react-aria/i18n": "npm:^3.12.8"
"@react-aria/interactions": "npm:^3.25.0"
"@react-aria/ssr": "npm:^3.9.8"
"@react-aria/utils": "npm:^3.28.2"
"@react-aria/visually-hidden": "npm:^3.8.22"
"@react-stately/overlays": "npm:^3.6.15"
"@react-types/button": "npm:^3.12.0"
"@react-types/overlays": "npm:^3.8.14"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/2835dba32a055160341b0c04c8922c4cfb905d2c630508f9b6fc94844131e5359fd27e72f44b7d313339519285465cc6b08c720f2deb8511185d1bdd6c7b10f3
languageName: node
linkType: hard
"@react-aria/overlays@npm:3.28.0":
version: 3.28.0
resolution: "@react-aria/overlays@npm:3.28.0"
dependencies:
"@react-aria/focus": "npm:^3.21.0"
"@react-aria/i18n": "npm:^3.12.11"
"@react-aria/interactions": "npm:^3.25.4"
"@react-aria/ssr": "npm:^3.9.10"
"@react-aria/utils": "npm:^3.30.0"
"@react-aria/visually-hidden": "npm:^3.8.26"
"@react-stately/overlays": "npm:^3.6.18"
"@react-types/button": "npm:^3.13.0"
"@react-types/overlays": "npm:^3.9.0"
"@react-types/shared": "npm:^3.31.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/ecd3ce4ad847d667f7b57e8fedc300b41f2a2f1694cdd3510bfac6635f2b23bcb114ec13cdb6255160eefbcbfc3aa80d6e19d77764e76e2558c8b761218a304e
languageName: node
linkType: hard
"@react-aria/overlays@npm:^3.27.0, @react-aria/overlays@npm:^3.27.1":
version: 3.27.1
resolution: "@react-aria/overlays@npm:3.27.1"
dependencies:
"@react-aria/focus": "npm:^3.20.3"
"@react-aria/i18n": "npm:^3.12.9"
"@react-aria/interactions": "npm:^3.25.1"
"@react-aria/ssr": "npm:^3.9.8"
"@react-aria/utils": "npm:^3.29.0"
"@react-aria/visually-hidden": "npm:^3.8.23"
"@react-stately/overlays": "npm:^3.6.16"
"@react-types/button": "npm:^3.12.1"
"@react-types/overlays": "npm:^3.8.15"
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/994034f759a0f0501ff8804f10988af60233cadb68222ee76ce956d685fb7639fbf82491c59f51e499083a2d25931ff2f55e673c4b276c870dabc4736d79c035
languageName: node
linkType: hard
"@react-aria/overlays@npm:^3.28.0":
version: 3.29.1
resolution: "@react-aria/overlays@npm:3.29.1"
dependencies:
"@react-aria/focus": "npm:^3.21.1"
"@react-aria/i18n": "npm:^3.12.12"
"@react-aria/interactions": "npm:^3.25.5"
"@react-aria/ssr": "npm:^3.9.10"
"@react-aria/utils": "npm:^3.30.1"
"@react-aria/visually-hidden": "npm:^3.8.27"
"@react-stately/overlays": "npm:^3.6.19"
"@react-types/button": "npm:^3.14.0"
"@react-types/overlays": "npm:^3.9.1"
"@react-types/shared": "npm:^3.32.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/e69f2178cbbd30bd43373ca4dcb68edf275dae57926912c2845bd109b0ddf5820e28e8882df049ce188a42a1690ae7a31795d0be8895318b80478c61baf8af4c
languageName: node
linkType: hard
"@react-aria/progress@npm:3.4.22":
version: 3.4.22
resolution: "@react-aria/progress@npm:3.4.22"
dependencies:
"@react-aria/i18n": "npm:^3.12.8"
"@react-aria/label": "npm:^3.7.17"
"@react-aria/utils": "npm:^3.28.2"
"@react-types/progress": "npm:^3.5.11"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/452c2f69891f33996777133c0a584eb850d2e4761539afe9942ab8e3312042d4d63d03df482edb67f1d7abcd7de1805bdc4c0515e408364e0975af7f644e01c8
languageName: node
linkType: hard
"@react-aria/radio@npm:3.11.2":
version: 3.11.2
resolution: "@react-aria/radio@npm:3.11.2"
dependencies:
"@react-aria/focus": "npm:^3.20.2"
"@react-aria/form": "npm:^3.0.15"
"@react-aria/i18n": "npm:^3.12.8"
"@react-aria/interactions": "npm:^3.25.0"
"@react-aria/label": "npm:^3.7.17"
"@react-aria/utils": "npm:^3.28.2"
"@react-stately/radio": "npm:^3.10.12"
"@react-types/radio": "npm:^3.8.8"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/672c88dba8d1f6bdd81d80fce339b463f1158c37342d4cb531947b2ebf00bce865e0dce3524beca978dbcafe2d6d26617256af24d2eb7c3d992d1772d907dec6
languageName: node
linkType: hard
"@react-aria/selection@npm:3.24.0":
version: 3.24.0
resolution: "@react-aria/selection@npm:3.24.0"
dependencies:
"@react-aria/focus": "npm:^3.20.2"
"@react-aria/i18n": "npm:^3.12.8"
"@react-aria/interactions": "npm:^3.25.0"
"@react-aria/utils": "npm:^3.28.2"
"@react-stately/selection": "npm:^3.20.1"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/793c707617cc8225307af19d9f5a515bd257196a1f9b006070af309ef90977769a1c8f0fa5cebacac3ed56bcfadbc511bb5f282c8ca186906ac089ee46122918
languageName: node
linkType: hard
"@react-aria/selection@npm:3.25.0":
version: 3.25.0
resolution: "@react-aria/selection@npm:3.25.0"
dependencies:
"@react-aria/focus": "npm:^3.21.0"
"@react-aria/i18n": "npm:^3.12.11"
"@react-aria/interactions": "npm:^3.25.4"
"@react-aria/utils": "npm:^3.30.0"
"@react-stately/selection": "npm:^3.20.4"
"@react-types/shared": "npm:^3.31.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/a69c1492095dad5a60304039b7d9ed0f7fa0134b21061218867c2327cc396ec27d0aa3be461e71afc3defce146f04e2290208c1062bc8425e218f8c011259358
languageName: node
linkType: hard
"@react-aria/selection@npm:^3.24.0, @react-aria/selection@npm:^3.24.1":
version: 3.24.1
resolution: "@react-aria/selection@npm:3.24.1"
dependencies:
"@react-aria/focus": "npm:^3.20.3"
"@react-aria/i18n": "npm:^3.12.9"
"@react-aria/interactions": "npm:^3.25.1"
"@react-aria/utils": "npm:^3.29.0"
"@react-stately/selection": "npm:^3.20.2"
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/b99ae6254f20660dff73b8f62c6ab8920df5059491aecf010e0029ea4deea28b7aed1f131dca71aa2a4e78a917db25f8b4994d836142ec6a0923b10765f262a9
languageName: node
linkType: hard
"@react-aria/selection@npm:^3.25.0, @react-aria/selection@npm:^3.25.1":
version: 3.25.1
resolution: "@react-aria/selection@npm:3.25.1"
dependencies:
"@react-aria/focus": "npm:^3.21.1"
"@react-aria/i18n": "npm:^3.12.12"
"@react-aria/interactions": "npm:^3.25.5"
"@react-aria/utils": "npm:^3.30.1"
"@react-stately/selection": "npm:^3.20.5"
"@react-types/shared": "npm:^3.32.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/7212dfc3280167c5f87256bbc580c3f05e1a8388d93ce5d66090778b67b7a3bcb49c522172a1a062c0c237204e1d85e6a9cb8ae6095725ed7f1e194ba277ed0e
languageName: node
linkType: hard
"@react-aria/slider@npm:3.7.18":
version: 3.7.18
resolution: "@react-aria/slider@npm:3.7.18"
dependencies:
"@react-aria/i18n": "npm:^3.12.8"
"@react-aria/interactions": "npm:^3.25.0"
"@react-aria/label": "npm:^3.7.17"
"@react-aria/utils": "npm:^3.28.2"
"@react-stately/slider": "npm:^3.6.3"
"@react-types/shared": "npm:^3.29.0"
"@react-types/slider": "npm:^3.7.10"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/caecc4782fa2a904d995a39346e88225b7a89c40d3ba54d798f85632b7081e384081a15e9ff74bae2218b7d334180af3040b86269cf49b4e596c784a362c497a
languageName: node
linkType: hard
"@react-aria/spinbutton@npm:^3.6.14":
version: 3.6.15
resolution: "@react-aria/spinbutton@npm:3.6.15"
dependencies:
"@react-aria/i18n": "npm:^3.12.9"
"@react-aria/live-announcer": "npm:^3.4.2"
"@react-aria/utils": "npm:^3.29.0"
"@react-types/button": "npm:^3.12.1"
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/8c433910413c4cf6f85a7b0a0c2c66b198f6a031918cf66739e5c2e209f2180a950be4f9701060d9170e761def7e92152ae1012834c4679b3121c8cd790ab2fe
languageName: node
linkType: hard
"@react-aria/ssr@npm:3.9.10, @react-aria/ssr@npm:^3.9.10":
version: 3.9.10
resolution: "@react-aria/ssr@npm:3.9.10"
dependencies:
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/44acb4c441d9c5d65aab94aa81fd8368413cf2958ab458582296dd78f6ba4783583f2311fa986120060e5c26b54b1f01e8910ffd17e4f41ccc5fc8c357d84089
languageName: node
linkType: hard
"@react-aria/ssr@npm:3.9.8, @react-aria/ssr@npm:^3.9.8":
version: 3.9.8
resolution: "@react-aria/ssr@npm:3.9.8"
dependencies:
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/848cac34f8584477ab6c91686ab447c7f7eee997e0b1771cc71298d15a4dd0400ce7b899ad8c1603a72d59a72f24a390964133693a3ba602828801d4dacc3f45
languageName: node
linkType: hard
"@react-aria/switch@npm:3.7.2":
version: 3.7.2
resolution: "@react-aria/switch@npm:3.7.2"
dependencies:
"@react-aria/toggle": "npm:^3.11.2"
"@react-stately/toggle": "npm:^3.8.3"
"@react-types/shared": "npm:^3.29.0"
"@react-types/switch": "npm:^3.5.10"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/86ef2597e387480e49c118f42778407562a2cbbc8a2c1ad06750496ac9890b58157997e77e2f74def22e30a19eeaf0a127e08a28e6644d387b48bbf72bdde132
languageName: node
linkType: hard
"@react-aria/table@npm:3.17.2":
version: 3.17.2
resolution: "@react-aria/table@npm:3.17.2"
dependencies:
"@react-aria/focus": "npm:^3.20.2"
"@react-aria/grid": "npm:^3.13.0"
"@react-aria/i18n": "npm:^3.12.8"
"@react-aria/interactions": "npm:^3.25.0"
"@react-aria/live-announcer": "npm:^3.4.2"
"@react-aria/utils": "npm:^3.28.2"
"@react-aria/visually-hidden": "npm:^3.8.22"
"@react-stately/collections": "npm:^3.12.3"
"@react-stately/flags": "npm:^3.1.1"
"@react-stately/table": "npm:^3.14.1"
"@react-types/checkbox": "npm:^3.9.3"
"@react-types/grid": "npm:^3.3.1"
"@react-types/shared": "npm:^3.29.0"
"@react-types/table": "npm:^3.12.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/858399030bf4e373d020c250d770645b96c1c7e5721c96f7f02c619ef19d7833b6fe8c00f608239cf6079da856ba6d87a7e15e88c01be077c9b5b03b0133c024
languageName: node
linkType: hard
"@react-aria/table@npm:3.17.6":
version: 3.17.6
resolution: "@react-aria/table@npm:3.17.6"
dependencies:
"@react-aria/focus": "npm:^3.21.0"
"@react-aria/grid": "npm:^3.14.3"
"@react-aria/i18n": "npm:^3.12.11"
"@react-aria/interactions": "npm:^3.25.4"
"@react-aria/live-announcer": "npm:^3.4.4"
"@react-aria/utils": "npm:^3.30.0"
"@react-aria/visually-hidden": "npm:^3.8.26"
"@react-stately/collections": "npm:^3.12.6"
"@react-stately/flags": "npm:^3.1.2"
"@react-stately/table": "npm:^3.14.4"
"@react-types/checkbox": "npm:^3.10.0"
"@react-types/grid": "npm:^3.3.4"
"@react-types/shared": "npm:^3.31.0"
"@react-types/table": "npm:^3.13.2"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/a6ab8cbead9954ab9df52a0c135702c257b149f6e71d6d82ff608f8515baa0a0c5f4df123586a00c943a9d4a815ed2b0cdf6af6e6fba0f80bed622d148572dc7
languageName: node
linkType: hard
"@react-aria/tabs@npm:3.10.2":
version: 3.10.2
resolution: "@react-aria/tabs@npm:3.10.2"
dependencies:
"@react-aria/focus": "npm:^3.20.2"
"@react-aria/i18n": "npm:^3.12.8"
"@react-aria/selection": "npm:^3.24.0"
"@react-aria/utils": "npm:^3.28.2"
"@react-stately/tabs": "npm:^3.8.1"
"@react-types/shared": "npm:^3.29.0"
"@react-types/tabs": "npm:^3.3.14"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/594d6afcb1c9232823159ef3f655bea194c5cabf3c5868e8c55a29eac103508c2cefde61a28a71046fe43fb8ca5fc24deea4fe2cc1b7a6c5be30e7c4cef843f7
languageName: node
linkType: hard
"@react-aria/textfield@npm:3.17.2":
version: 3.17.2
resolution: "@react-aria/textfield@npm:3.17.2"
dependencies:
"@react-aria/form": "npm:^3.0.15"
"@react-aria/interactions": "npm:^3.25.0"
"@react-aria/label": "npm:^3.7.17"
"@react-aria/utils": "npm:^3.28.2"
"@react-stately/form": "npm:^3.1.3"
"@react-stately/utils": "npm:^3.10.6"
"@react-types/shared": "npm:^3.29.0"
"@react-types/textfield": "npm:^3.12.1"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/c7357e67f4a63d2526792a5741cbf222cfb8d56f816e0c3a524d0ee3e0f05c9adbe294f2ff65f89a648d77351f6b5c80c374116a5d95c3b1a2c358f6ad2f91da
languageName: node
linkType: hard
"@react-aria/textfield@npm:^3.17.2":
version: 3.17.3
resolution: "@react-aria/textfield@npm:3.17.3"
dependencies:
"@react-aria/form": "npm:^3.0.16"
"@react-aria/interactions": "npm:^3.25.1"
"@react-aria/label": "npm:^3.7.18"
"@react-aria/utils": "npm:^3.29.0"
"@react-stately/form": "npm:^3.1.4"
"@react-stately/utils": "npm:^3.10.6"
"@react-types/shared": "npm:^3.29.1"
"@react-types/textfield": "npm:^3.12.2"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/2459dd50fa0b0dbe5235a53fbe38fdf8f96bee21df713dcf3e8561ad350b337f37887bbcfa26a0ecaaec50616f6da28ceb829853cbdb0ecd8ba135a5b5ed182d
languageName: node
linkType: hard
"@react-aria/toast@npm:3.0.2":
version: 3.0.2
resolution: "@react-aria/toast@npm:3.0.2"
dependencies:
"@react-aria/i18n": "npm:^3.12.8"
"@react-aria/interactions": "npm:^3.25.0"
"@react-aria/landmark": "npm:^3.0.2"
"@react-aria/utils": "npm:^3.28.2"
"@react-stately/toast": "npm:^3.1.0"
"@react-types/button": "npm:^3.12.0"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/65c377028a39e15fe54c74e24cb2ad382f71a8425aa9b7dd6a717dbc7d3720a7b8c9f148b794ffcc0d2735e8486f098b1531e52affd0202279be2e1391626e01
languageName: node
linkType: hard
"@react-aria/toggle@npm:^3.11.2":
version: 3.11.3
resolution: "@react-aria/toggle@npm:3.11.3"
dependencies:
"@react-aria/interactions": "npm:^3.25.1"
"@react-aria/utils": "npm:^3.29.0"
"@react-stately/toggle": "npm:^3.8.4"
"@react-types/checkbox": "npm:^3.9.4"
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/23bd7694b3d95cd192b732f665524f1a3205cc564243a006c0f53136dbe89cb086e017c49ef7f9f4cf30e24c214fdbde20519431de58817705291344a583b42e
languageName: node
linkType: hard
"@react-aria/toggle@npm:^3.12.0":
version: 3.12.1
resolution: "@react-aria/toggle@npm:3.12.1"
dependencies:
"@react-aria/interactions": "npm:^3.25.5"
"@react-aria/utils": "npm:^3.30.1"
"@react-stately/toggle": "npm:^3.9.1"
"@react-types/checkbox": "npm:^3.10.1"
"@react-types/shared": "npm:^3.32.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/3ace07768327c7d86f57d7bcf22a60d64c84f7d9adef66e80db2194d237f82016a635903417289eaa7408caca74fee094b8e9dc7ac7d923823b63eabcc094b38
languageName: node
linkType: hard
"@react-aria/toolbar@npm:3.0.0-beta.15":
version: 3.0.0-beta.15
resolution: "@react-aria/toolbar@npm:3.0.0-beta.15"
dependencies:
"@react-aria/focus": "npm:^3.20.2"
"@react-aria/i18n": "npm:^3.12.8"
"@react-aria/utils": "npm:^3.28.2"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/cdd5f5be3bc3cdd95fe8e25187380969dff133b2119c3e498286ab0d9fceac25325d2684e39f27c39c06a24eacf828cba27270ce191e7ad81086885b25f16691
languageName: node
linkType: hard
"@react-aria/tooltip@npm:3.8.2":
version: 3.8.2
resolution: "@react-aria/tooltip@npm:3.8.2"
dependencies:
"@react-aria/interactions": "npm:^3.25.0"
"@react-aria/utils": "npm:^3.28.2"
"@react-stately/tooltip": "npm:^3.5.3"
"@react-types/shared": "npm:^3.29.0"
"@react-types/tooltip": "npm:^3.4.16"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/b24c1912b8e8e26088f0b726163b822005415bc4fb37112068a941384a2bcc3b088333ef0551c52e0317009e9f82ec0a4f6e911ef7bc086402df61a4c2827e89
languageName: node
linkType: hard
"@react-aria/utils@npm:3.28.2":
version: 3.28.2
resolution: "@react-aria/utils@npm:3.28.2"
dependencies:
"@react-aria/ssr": "npm:^3.9.8"
"@react-stately/flags": "npm:^3.1.1"
"@react-stately/utils": "npm:^3.10.6"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
clsx: "npm:^2.0.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/69fc00d5dbd0fae9349a06cc3bcf327aa1edcb9049a491d0949b4de30c1b7669edc7150cc6885aa362af74a21b68c400b2965c3e117871264c47c379f4a98695
languageName: node
linkType: hard
"@react-aria/utils@npm:3.30.0":
version: 3.30.0
resolution: "@react-aria/utils@npm:3.30.0"
dependencies:
"@react-aria/ssr": "npm:^3.9.10"
"@react-stately/flags": "npm:^3.1.2"
"@react-stately/utils": "npm:^3.10.8"
"@react-types/shared": "npm:^3.31.0"
"@swc/helpers": "npm:^0.5.0"
clsx: "npm:^2.0.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/d845c76eee4ce09248244b698df11c4eb6bf374a9735d74af8acf9e2d4f01ab0653dd707a48f8b1c5cc54b23ce0eb2b2897f770c82eb35045a284f2fbd572f34
languageName: node
linkType: hard
"@react-aria/utils@npm:^3.28.2, @react-aria/utils@npm:^3.29.0":
version: 3.29.0
resolution: "@react-aria/utils@npm:3.29.0"
dependencies:
"@react-aria/ssr": "npm:^3.9.8"
"@react-stately/flags": "npm:^3.1.1"
"@react-stately/utils": "npm:^3.10.6"
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
clsx: "npm:^2.0.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/99ceabb63b98c0d7526ebb6ab6dbbf1cf06ea0ed5e4f2794337aaa3952c338b24a21023e762286f0054522b4a48925f1d96361433acf81245c329d6c657aecfe
languageName: node
linkType: hard
"@react-aria/utils@npm:^3.30.0, @react-aria/utils@npm:^3.30.1":
version: 3.30.1
resolution: "@react-aria/utils@npm:3.30.1"
dependencies:
"@react-aria/ssr": "npm:^3.9.10"
"@react-stately/flags": "npm:^3.1.2"
"@react-stately/utils": "npm:^3.10.8"
"@react-types/shared": "npm:^3.32.0"
"@swc/helpers": "npm:^0.5.0"
clsx: "npm:^2.0.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/3417a3ea7250c4ad23e6943117eb304a3708859fe8c738e0bee39edaefe7a7b82cedecc564f1a7f7fdf715ad13f57804a0b7c015a75fefdecbe3ecd7162f3e2f
languageName: node
linkType: hard
"@react-aria/visually-hidden@npm:3.8.22":
version: 3.8.22
resolution: "@react-aria/visually-hidden@npm:3.8.22"
dependencies:
"@react-aria/interactions": "npm:^3.25.0"
"@react-aria/utils": "npm:^3.28.2"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/fbf527b526250865731737d3d421d796ab0a2a2bb0dbd2532a506693fe8902fa2a53b0afbb7ee4d295028621bdcbe8e50583d3d6d0f87d5ae014eb97953e0a2a
languageName: node
linkType: hard
"@react-aria/visually-hidden@npm:3.8.26":
version: 3.8.26
resolution: "@react-aria/visually-hidden@npm:3.8.26"
dependencies:
"@react-aria/interactions": "npm:^3.25.4"
"@react-aria/utils": "npm:^3.30.0"
"@react-types/shared": "npm:^3.31.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/22f16eb10fba76c0cae30040e9eee9cd7529ca0f68c5adf07d69afcd4db630e3f5c89f64002d7b62ecccd0ad2f78b368a295224c210aa9fae295e897bede745b
languageName: node
linkType: hard
"@react-aria/visually-hidden@npm:^3.8.22, @react-aria/visually-hidden@npm:^3.8.23":
version: 3.8.23
resolution: "@react-aria/visually-hidden@npm:3.8.23"
dependencies:
"@react-aria/interactions": "npm:^3.25.1"
"@react-aria/utils": "npm:^3.29.0"
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/2a62131005e98fe24ec13bc356c82c3097f1f15e249869d7c8cea8364bfd543988d61bd65b6d5e7f8b1ec8ddec6d62f3f81af1f2e184fe0cd269655a141da0c5
languageName: node
linkType: hard
"@react-aria/visually-hidden@npm:^3.8.26, @react-aria/visually-hidden@npm:^3.8.27":
version: 3.8.27
resolution: "@react-aria/visually-hidden@npm:3.8.27"
dependencies:
"@react-aria/interactions": "npm:^3.25.5"
"@react-aria/utils": "npm:^3.30.1"
"@react-types/shared": "npm:^3.32.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/b9c1e64c9560ec6ff5e186502cc4c89f366d17d8ccd0487c698b22358b0583385f404c567861497cb4c0b035b3906993f700fc219040519b0ce9be1f69d74b24
languageName: node
linkType: hard
"@react-stately/calendar@npm:3.8.0":
version: 3.8.0
resolution: "@react-stately/calendar@npm:3.8.0"
dependencies:
"@internationalized/date": "npm:^3.8.0"
"@react-stately/utils": "npm:^3.10.6"
"@react-types/calendar": "npm:^3.7.0"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/5b7dc76aa4d1d97f2f551d8db97caa8feb8ac8f4731c33b30f06e2aa3792708a7786c511dd6475eb79345c110f9c013ca037407a46f4dddec35411ec16edb189
languageName: node
linkType: hard
"@react-stately/calendar@npm:^3.8.0":
version: 3.8.1
resolution: "@react-stately/calendar@npm:3.8.1"
dependencies:
"@internationalized/date": "npm:^3.8.1"
"@react-stately/utils": "npm:^3.10.6"
"@react-types/calendar": "npm:^3.7.1"
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/dc567ee0ed6b7d7a3baaf26afeff01836c8be5cf1390900aea5e52b33c80eefbe85099883c89f834aaf110832649bf164afd175e19fc7e02a4b40410bd7f8865
languageName: node
linkType: hard
"@react-stately/checkbox@npm:3.6.13":
version: 3.6.13
resolution: "@react-stately/checkbox@npm:3.6.13"
dependencies:
"@react-stately/form": "npm:^3.1.3"
"@react-stately/utils": "npm:^3.10.6"
"@react-types/checkbox": "npm:^3.9.3"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/bbeca294e9f30fbbeedb01ed7a7c758d778a71173c4e594b3312a1ef55ca4dd8d67c1397f426f3fc5393a063d5245b813a777f1a32cd3a9eaac1c9c41f2299de
languageName: node
linkType: hard
"@react-stately/checkbox@npm:3.7.0":
version: 3.7.0
resolution: "@react-stately/checkbox@npm:3.7.0"
dependencies:
"@react-stately/form": "npm:^3.2.0"
"@react-stately/utils": "npm:^3.10.8"
"@react-types/checkbox": "npm:^3.10.0"
"@react-types/shared": "npm:^3.31.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/1d8646ecdd1bd527bec60075f46bf12ed8abb259eca653d1d95dd72f967659e06d5d536aedcf87554630d912e1b819ad66a61761b9ef8e284f63dd397a8e90ff
languageName: node
linkType: hard
"@react-stately/checkbox@npm:^3.6.13":
version: 3.6.14
resolution: "@react-stately/checkbox@npm:3.6.14"
dependencies:
"@react-stately/form": "npm:^3.1.4"
"@react-stately/utils": "npm:^3.10.6"
"@react-types/checkbox": "npm:^3.9.4"
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/cceeb49bfbeca7b9f9a379665c847018b7ae9aaed7a9966ff54448a9393a27164e56d1b5fad960cb7e7cea2e60bf86bf4613cda1750c3682b68952cf27db6376
languageName: node
linkType: hard
"@react-stately/checkbox@npm:^3.7.0":
version: 3.7.1
resolution: "@react-stately/checkbox@npm:3.7.1"
dependencies:
"@react-stately/form": "npm:^3.2.1"
"@react-stately/utils": "npm:^3.10.8"
"@react-types/checkbox": "npm:^3.10.1"
"@react-types/shared": "npm:^3.32.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/283d7e5aa63761c956fc48c42d12e5dee779c362013afabd36e086f530b4b8137966e6769421951c28cbffa4e793c0ce857de5aea85403a42688f0898f2503fa
languageName: node
linkType: hard
"@react-stately/collections@npm:3.12.3":
version: 3.12.3
resolution: "@react-stately/collections@npm:3.12.3"
dependencies:
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/bdcf755aeb114b936057e9bb75de8a6765b5b35a8d330f5fce7151b3b2c052662cd2f630cbfce282e477435e47c64b31c361f0188f2dbe378b011b356e8e2a8c
languageName: node
linkType: hard
"@react-stately/collections@npm:3.12.6":
version: 3.12.6
resolution: "@react-stately/collections@npm:3.12.6"
dependencies:
"@react-types/shared": "npm:^3.31.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/4d200565c88ef179c15653eaaa2079b5e96fd8ed3ab34b863e7a4a7c421cf3f90f4348db37cfd5842bbdb17df165992c07a6013809aa550459819e057ca208c4
languageName: node
linkType: hard
"@react-stately/collections@npm:^3.12.3, @react-stately/collections@npm:^3.12.4":
version: 3.12.4
resolution: "@react-stately/collections@npm:3.12.4"
dependencies:
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/c9c6067cd83531322068263dcf56e9c0aac4254d20c4e647a5a3e853c67521216cdd53c1405e3f15bae297ffff193a40dba4b5844ad195acb000bd148b7e2804
languageName: node
linkType: hard
"@react-stately/collections@npm:^3.12.6, @react-stately/collections@npm:^3.12.7":
version: 3.12.7
resolution: "@react-stately/collections@npm:3.12.7"
dependencies:
"@react-types/shared": "npm:^3.32.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/9f8e2f34a7e8a9630699ca91d8d5f215468b2a669df4e06bfd337d365d52df9b2e42b983d18f2023b746e30f0b06ee76e5838e1067299935ce78fab1c2c959c1
languageName: node
linkType: hard
"@react-stately/combobox@npm:3.10.4":
version: 3.10.4
resolution: "@react-stately/combobox@npm:3.10.4"
dependencies:
"@react-stately/collections": "npm:^3.12.3"
"@react-stately/form": "npm:^3.1.3"
"@react-stately/list": "npm:^3.12.1"
"@react-stately/overlays": "npm:^3.6.15"
"@react-stately/select": "npm:^3.6.12"
"@react-stately/utils": "npm:^3.10.6"
"@react-types/combobox": "npm:^3.13.4"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/373de12e2d0ea48fc358ca713156990aa5b7dde147f4d5db90f47befbc985475f2c8ac666aaef2843bb0346768f08e0795d8239c1b396de929f16e96dede898a
languageName: node
linkType: hard
"@react-stately/combobox@npm:^3.10.4":
version: 3.10.5
resolution: "@react-stately/combobox@npm:3.10.5"
dependencies:
"@react-stately/collections": "npm:^3.12.4"
"@react-stately/form": "npm:^3.1.4"
"@react-stately/list": "npm:^3.12.2"
"@react-stately/overlays": "npm:^3.6.16"
"@react-stately/select": "npm:^3.6.13"
"@react-stately/utils": "npm:^3.10.6"
"@react-types/combobox": "npm:^3.13.5"
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/dc7d4ccef8a7e5d12a571793a7e7358c40e071a40dd4f647bde50bfe26acf9b04bf7eba9919a993d3f4a6a255e8d7a5e7c7617206613dae56fb34b1e505d140a
languageName: node
linkType: hard
"@react-stately/datepicker@npm:3.14.0":
version: 3.14.0
resolution: "@react-stately/datepicker@npm:3.14.0"
dependencies:
"@internationalized/date": "npm:^3.8.0"
"@internationalized/string": "npm:^3.2.6"
"@react-stately/form": "npm:^3.1.3"
"@react-stately/overlays": "npm:^3.6.15"
"@react-stately/utils": "npm:^3.10.6"
"@react-types/datepicker": "npm:^3.12.0"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/2ed4689a48ab535e468bbfcd9bdde9f12791e80899df993751fcbc08e5e6e3b44ea04481047f7a7e2a694f4ea40207404cae91ac723ddfb425076e87cbb2468f
languageName: node
linkType: hard
"@react-stately/datepicker@npm:^3.14.0":
version: 3.14.1
resolution: "@react-stately/datepicker@npm:3.14.1"
dependencies:
"@internationalized/date": "npm:^3.8.1"
"@internationalized/string": "npm:^3.2.6"
"@react-stately/form": "npm:^3.1.4"
"@react-stately/overlays": "npm:^3.6.16"
"@react-stately/utils": "npm:^3.10.6"
"@react-types/datepicker": "npm:^3.12.1"
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/8c711546e05ddb03678f60eac64ed7192f67a477ff04a0a32e85e0f81ea765e3767c110a00f94cb79526c2f15738cd94bfb89459715cc0e7c206d4fbab4e0348
languageName: node
linkType: hard
"@react-stately/flags@npm:^3.1.1":
version: 3.1.1
resolution: "@react-stately/flags@npm:3.1.1"
dependencies:
"@swc/helpers": "npm:^0.5.0"
checksum: 10c0/3f64deb7b5daa787072f77e358624b65ad0627ee148d968423f3a5968b655d99671673927e21e4ba2ad0c9828d6ea75dae8ca421af90f9b41986a28341a4101f
languageName: node
linkType: hard
"@react-stately/flags@npm:^3.1.2":
version: 3.1.2
resolution: "@react-stately/flags@npm:3.1.2"
dependencies:
"@swc/helpers": "npm:^0.5.0"
checksum: 10c0/d86890ce662f04c7d8984e9560527f46c9779b97757abded9e1bf7e230a6900a0ea7a3e7c22534de8d2ff278abae194e4e4ad962d710f3b04c52a4e1011c2e5b
languageName: node
linkType: hard
"@react-stately/form@npm:3.1.3":
version: 3.1.3
resolution: "@react-stately/form@npm:3.1.3"
dependencies:
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/4b27d5c824abefd832152abe0355af3fcb74e61855ad204e20e82503f14b6ca0c0353b0f6372634fc53dd27c94a16448d8b69d9320ceb64b0fb406513dca0c00
languageName: node
linkType: hard
"@react-stately/form@npm:3.2.0":
version: 3.2.0
resolution: "@react-stately/form@npm:3.2.0"
dependencies:
"@react-types/shared": "npm:^3.31.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/da9c2988540e6d97f203d554e7cd6d306a91a76b12ec9a3d18bb8f28afe90d3dafb5b6bab8bef719b4a6993dd9cbf1054c15c6cf4eb45576fc2694cb558aa7ce
languageName: node
linkType: hard
"@react-stately/form@npm:^3.1.3, @react-stately/form@npm:^3.1.4":
version: 3.1.4
resolution: "@react-stately/form@npm:3.1.4"
dependencies:
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/b49513626112b44e4824108e5b0ed5b9953395cf2801378cd4c04624feeb69c25a50f51617639fe0ba574178f30a893386bbda7f7efba3469e890f193781022e
languageName: node
linkType: hard
"@react-stately/form@npm:^3.2.0, @react-stately/form@npm:^3.2.1":
version: 3.2.1
resolution: "@react-stately/form@npm:3.2.1"
dependencies:
"@react-types/shared": "npm:^3.32.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/9aa4c38001ea7811fc65677f04ffdaecf03be75bd9da911754d2510ef30be1b83fc45ef023660727bfdaf2f24dcebaa5587ca1ca4f5e1bc7aeb2319b3768c2c2
languageName: node
linkType: hard
"@react-stately/grid@npm:^3.11.1, @react-stately/grid@npm:^3.11.2":
version: 3.11.2
resolution: "@react-stately/grid@npm:3.11.2"
dependencies:
"@react-stately/collections": "npm:^3.12.4"
"@react-stately/selection": "npm:^3.20.2"
"@react-types/grid": "npm:^3.3.2"
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/362f346b69fdfc9d52924b45a641f3d9a2691dd072040a4dee42f97e89639fddc46a8bb7c386235e8626b69379a80bb9ce415c3e1069c03809e89b2cc2a0c977
languageName: node
linkType: hard
"@react-stately/grid@npm:^3.11.4, @react-stately/grid@npm:^3.11.5":
version: 3.11.5
resolution: "@react-stately/grid@npm:3.11.5"
dependencies:
"@react-stately/collections": "npm:^3.12.7"
"@react-stately/selection": "npm:^3.20.5"
"@react-types/grid": "npm:^3.3.5"
"@react-types/shared": "npm:^3.32.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/bacfde659d10815a435cf0c8333a15da9ff1629483fa32c2263ebb1975ee1b8de21e1768f136c0dc6db8e7e60fac6d7ae72f610915d1b147716d47022a1f35c9
languageName: node
linkType: hard
"@react-stately/list@npm:3.12.1":
version: 3.12.1
resolution: "@react-stately/list@npm:3.12.1"
dependencies:
"@react-stately/collections": "npm:^3.12.3"
"@react-stately/selection": "npm:^3.20.1"
"@react-stately/utils": "npm:^3.10.6"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/e5de895d5a722e4f6d6d0be439a70bf60bef7b320bd66c08b6e60d8f9512521dfa68de7bd08be510409496111b3c23789ec5aafa1c06a1c261b6e24b4e5d4b0f
languageName: node
linkType: hard
"@react-stately/list@npm:3.12.4":
version: 3.12.4
resolution: "@react-stately/list@npm:3.12.4"
dependencies:
"@react-stately/collections": "npm:^3.12.6"
"@react-stately/selection": "npm:^3.20.4"
"@react-stately/utils": "npm:^3.10.8"
"@react-types/shared": "npm:^3.31.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/46e09c1c75188502b9a47571584ec5000f31bfc4a82dca63e8bd97d909f080dd41bd39dc2aada181c17acf9d6b110af41c5a36db76a6a7ceb078f46343d4a21a
languageName: node
linkType: hard
"@react-stately/list@npm:^3.12.1, @react-stately/list@npm:^3.12.2":
version: 3.12.2
resolution: "@react-stately/list@npm:3.12.2"
dependencies:
"@react-stately/collections": "npm:^3.12.4"
"@react-stately/selection": "npm:^3.20.2"
"@react-stately/utils": "npm:^3.10.6"
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/f5d1e7b15727f71072d3ee53eb9fc1fea1b3f3f3cca94207868247e058c199b02099665a710a6b5909b7e6a0c488b0cd03f10f3405ea16c707ca78598ced44a4
languageName: node
linkType: hard
"@react-stately/list@npm:^3.12.4":
version: 3.13.0
resolution: "@react-stately/list@npm:3.13.0"
dependencies:
"@react-stately/collections": "npm:^3.12.7"
"@react-stately/selection": "npm:^3.20.5"
"@react-stately/utils": "npm:^3.10.8"
"@react-types/shared": "npm:^3.32.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/d408513e6b984ce912bb744b4da04222c0fa1a57e11fe53976c42df6d7126d3945fc65caaf8d67587ccaf2dce147658de432ddaa80e5b2b0b49012f7b572f810
languageName: node
linkType: hard
"@react-stately/menu@npm:3.9.3":
version: 3.9.3
resolution: "@react-stately/menu@npm:3.9.3"
dependencies:
"@react-stately/overlays": "npm:^3.6.15"
"@react-types/menu": "npm:^3.10.0"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/8b8977cb82b6e7505b10961a4e2eafa6dc6773e0ae58d86d43c386010877f08770433e1345f8a92a75e488db5b9e0f90039cf10246a1a0e62a82b34eb02ce773
languageName: node
linkType: hard
"@react-stately/menu@npm:3.9.6":
version: 3.9.6
resolution: "@react-stately/menu@npm:3.9.6"
dependencies:
"@react-stately/overlays": "npm:^3.6.18"
"@react-types/menu": "npm:^3.10.3"
"@react-types/shared": "npm:^3.31.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/5e78cfb9ff33f3dbfff69bc3f8991fd68493a8480c6b42c3f1b9988f78d49fd379cfcfc3d3e2549e7fb08d4fbf7c8bc6d5dcefe08a64d5062ffdb2de233bb86e
languageName: node
linkType: hard
"@react-stately/menu@npm:^3.9.3, @react-stately/menu@npm:^3.9.4":
version: 3.9.4
resolution: "@react-stately/menu@npm:3.9.4"
dependencies:
"@react-stately/overlays": "npm:^3.6.16"
"@react-types/menu": "npm:^3.10.1"
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/93487af61be461bcfb590cf0e8e9fc8096336ac0f8d58af858a379db685908f71b052b238470193be4bce94b1febdbbdb8009f80744f168a1672d7b8fb433dd5
languageName: node
linkType: hard
"@react-stately/menu@npm:^3.9.6":
version: 3.9.7
resolution: "@react-stately/menu@npm:3.9.7"
dependencies:
"@react-stately/overlays": "npm:^3.6.19"
"@react-types/menu": "npm:^3.10.4"
"@react-types/shared": "npm:^3.32.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/4ad5b7da2f6c09efcb459f77bab624be65d37ba6b72cf76c704e28361f9ee6f598365728f351aa15dc27bdb2dca8e1c634e0cf131f036fc5aafd308a2d0c111f
languageName: node
linkType: hard
"@react-stately/numberfield@npm:3.9.11":
version: 3.9.11
resolution: "@react-stately/numberfield@npm:3.9.11"
dependencies:
"@internationalized/number": "npm:^3.6.1"
"@react-stately/form": "npm:^3.1.3"
"@react-stately/utils": "npm:^3.10.6"
"@react-types/numberfield": "npm:^3.8.10"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/2cf8d39b3a4b87b17c7f98555c2d5ee770876db670edd89f727e85a02e12175c80bac97442ff124427737d7dd42b9d6f38d26b17d0be64ff806fb2a1509b7968
languageName: node
linkType: hard
"@react-stately/numberfield@npm:^3.9.11":
version: 3.9.12
resolution: "@react-stately/numberfield@npm:3.9.12"
dependencies:
"@internationalized/number": "npm:^3.6.2"
"@react-stately/form": "npm:^3.1.4"
"@react-stately/utils": "npm:^3.10.6"
"@react-types/numberfield": "npm:^3.8.11"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/d4ed68ce1c8bbb182a5ac804ec8de1e516d6f977b93f362ef49993acee80ebd7fa54f1efb355a1f403367f14395e8dba3c776871ac769bd4724948e8576c37ec
languageName: node
linkType: hard
"@react-stately/overlays@npm:3.6.15":
version: 3.6.15
resolution: "@react-stately/overlays@npm:3.6.15"
dependencies:
"@react-stately/utils": "npm:^3.10.6"
"@react-types/overlays": "npm:^3.8.14"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/4e75602378869027bb752500c771a732e5c9d7963f8101eb03941b350e6b6a74c0da20ab75de9daa28e3fa10f7230952636957caf16953c8b70fa8eb836a4657
languageName: node
linkType: hard
"@react-stately/overlays@npm:3.6.18":
version: 3.6.18
resolution: "@react-stately/overlays@npm:3.6.18"
dependencies:
"@react-stately/utils": "npm:^3.10.8"
"@react-types/overlays": "npm:^3.9.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/3dff0037459f6e4d5dd9b2bd754c02985a9aa9c9b0ebd16451ea607f9c0b1a194e51fbdbac4d3b35c3350a425515d39e5b84cbe650102fee82afb00516b27ad0
languageName: node
linkType: hard
"@react-stately/overlays@npm:^3.6.15, @react-stately/overlays@npm:^3.6.16":
version: 3.6.16
resolution: "@react-stately/overlays@npm:3.6.16"
dependencies:
"@react-stately/utils": "npm:^3.10.6"
"@react-types/overlays": "npm:^3.8.15"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/50201f009045ad61d6138b20ff7fa60f5ec513810038035b55d62d17ae4db20a9a49a25aa5ae5c31fb5c7e669fbcaed4e6f7939f0422c6a464a0442552bddbbb
languageName: node
linkType: hard
"@react-stately/overlays@npm:^3.6.18, @react-stately/overlays@npm:^3.6.19":
version: 3.6.19
resolution: "@react-stately/overlays@npm:3.6.19"
dependencies:
"@react-stately/utils": "npm:^3.10.8"
"@react-types/overlays": "npm:^3.9.1"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/bc6749850313185a927f3d2f72e8e155d8452a4ec9f19ff3df7c167c6a60a29d91dd97e0b5d5f78ed8fa1a0b275cbfc4f5b135dbd37412246e0cc647499d4cde
languageName: node
linkType: hard
"@react-stately/radio@npm:3.10.12":
version: 3.10.12
resolution: "@react-stately/radio@npm:3.10.12"
dependencies:
"@react-stately/form": "npm:^3.1.3"
"@react-stately/utils": "npm:^3.10.6"
"@react-types/radio": "npm:^3.8.8"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/7f5fd316b88eac3149c2f46c6c4d48022dabe5e871dd15042084fa94cfbe85873d7d0be7562447e9797c838b3a72ce1fe7842e983c682b80d58596e40c78f136
languageName: node
linkType: hard
"@react-stately/radio@npm:^3.10.12":
version: 3.10.13
resolution: "@react-stately/radio@npm:3.10.13"
dependencies:
"@react-stately/form": "npm:^3.1.4"
"@react-stately/utils": "npm:^3.10.6"
"@react-types/radio": "npm:^3.8.9"
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/1fa710c5ab053b5e9c42268b04c8f0d5723c17ad2bce59cb44c54f27c775df27bfd5b8f1a04fb71739f252ea74607ccbeb8de14b86d9d9ffe2815dc1ffbec24a
languageName: node
linkType: hard
"@react-stately/select@npm:^3.6.12, @react-stately/select@npm:^3.6.13":
version: 3.6.13
resolution: "@react-stately/select@npm:3.6.13"
dependencies:
"@react-stately/form": "npm:^3.1.4"
"@react-stately/list": "npm:^3.12.2"
"@react-stately/overlays": "npm:^3.6.16"
"@react-types/select": "npm:^3.9.12"
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/164eb2e576e5563de9b5b23a5965e0c983e497b8fce734958c0d5371d930dd20c913a7417e3f3dfce9f4e7c5ad5f3e2219708a0514cd69dd08c702b843702285
languageName: node
linkType: hard
"@react-stately/selection@npm:^3.20.1, @react-stately/selection@npm:^3.20.2":
version: 3.20.2
resolution: "@react-stately/selection@npm:3.20.2"
dependencies:
"@react-stately/collections": "npm:^3.12.4"
"@react-stately/utils": "npm:^3.10.6"
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/a9b520f8637e55ec29f0b2388d94f7d72787b05322d155f3964266a8ec66e06e158d0ecfdde6668ede27de8d113f1e67b91cd196fbe0dee0ab0652801e9ccfe4
languageName: node
linkType: hard
"@react-stately/selection@npm:^3.20.4, @react-stately/selection@npm:^3.20.5":
version: 3.20.5
resolution: "@react-stately/selection@npm:3.20.5"
dependencies:
"@react-stately/collections": "npm:^3.12.7"
"@react-stately/utils": "npm:^3.10.8"
"@react-types/shared": "npm:^3.32.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/fa3e9440c10d836e48e019ce8811eab2bc38c15e807fec0d1f857ec30f180fa87005f882385259c48fa73d9793c292f3322c35b94df06535fe19eb7b0e715c76
languageName: node
linkType: hard
"@react-stately/slider@npm:3.6.3":
version: 3.6.3
resolution: "@react-stately/slider@npm:3.6.3"
dependencies:
"@react-stately/utils": "npm:^3.10.6"
"@react-types/shared": "npm:^3.29.0"
"@react-types/slider": "npm:^3.7.10"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/1c61ac4bb660f137d858e2f6f55ebb360643fd2e5a9c61c4dd6964e7cecf7eafc010bc2269297f6d949df212b3283494878b75ce42769e9d2a633f0d4aa9cbc5
languageName: node
linkType: hard
"@react-stately/slider@npm:^3.6.3":
version: 3.6.4
resolution: "@react-stately/slider@npm:3.6.4"
dependencies:
"@react-stately/utils": "npm:^3.10.6"
"@react-types/shared": "npm:^3.29.1"
"@react-types/slider": "npm:^3.7.11"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/878490d9e964876e8675025c2d95c7b65ec6b9a61c1756aab03efd5895fbc2d114edc8c122c727fcbf9f6f5c47f8a14e91d0d3b9832fb9add37546ebc7bc4e59
languageName: node
linkType: hard
"@react-stately/table@npm:3.14.1":
version: 3.14.1
resolution: "@react-stately/table@npm:3.14.1"
dependencies:
"@react-stately/collections": "npm:^3.12.3"
"@react-stately/flags": "npm:^3.1.1"
"@react-stately/grid": "npm:^3.11.1"
"@react-stately/selection": "npm:^3.20.1"
"@react-stately/utils": "npm:^3.10.6"
"@react-types/grid": "npm:^3.3.1"
"@react-types/shared": "npm:^3.29.0"
"@react-types/table": "npm:^3.12.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/65b4c847ebc6d67d5c3a7e7d449fb550319fde6276454c9ead00dfee4924d6bd6b3662c927a7ef2dce6a9a2465036c2d5ddb20664a5b2bdc77178fd25cf2c5cc
languageName: node
linkType: hard
"@react-stately/table@npm:3.14.4":
version: 3.14.4
resolution: "@react-stately/table@npm:3.14.4"
dependencies:
"@react-stately/collections": "npm:^3.12.6"
"@react-stately/flags": "npm:^3.1.2"
"@react-stately/grid": "npm:^3.11.4"
"@react-stately/selection": "npm:^3.20.4"
"@react-stately/utils": "npm:^3.10.8"
"@react-types/grid": "npm:^3.3.4"
"@react-types/shared": "npm:^3.31.0"
"@react-types/table": "npm:^3.13.2"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/85c4a8745f6de9dc13540ed7d61ad8ab812a386ebe5f6684f014ef8b78ab2e446dd4fe8154f224b9621e291a9844ed76bf79d13cc6cff2712ab2458c7dfea9d8
languageName: node
linkType: hard
"@react-stately/table@npm:^3.14.1":
version: 3.14.2
resolution: "@react-stately/table@npm:3.14.2"
dependencies:
"@react-stately/collections": "npm:^3.12.4"
"@react-stately/flags": "npm:^3.1.1"
"@react-stately/grid": "npm:^3.11.2"
"@react-stately/selection": "npm:^3.20.2"
"@react-stately/utils": "npm:^3.10.6"
"@react-types/grid": "npm:^3.3.2"
"@react-types/shared": "npm:^3.29.1"
"@react-types/table": "npm:^3.13.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/d9548b85786e59d2260ee5f7eedcaabe725876664bf79d214758f3329c1b46b7929ca82f322003d169503c517be7a94dcbce7dfcb14205610ff2cfe7d79215db
languageName: node
linkType: hard
"@react-stately/table@npm:^3.14.4":
version: 3.15.0
resolution: "@react-stately/table@npm:3.15.0"
dependencies:
"@react-stately/collections": "npm:^3.12.7"
"@react-stately/flags": "npm:^3.1.2"
"@react-stately/grid": "npm:^3.11.5"
"@react-stately/selection": "npm:^3.20.5"
"@react-stately/utils": "npm:^3.10.8"
"@react-types/grid": "npm:^3.3.5"
"@react-types/shared": "npm:^3.32.0"
"@react-types/table": "npm:^3.13.3"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/93813ef88a756755fdbb0a92f65d43b7cf83d2029290c34a2e0b337f1e2f25e9ebb7d54b122c4f280dc797ea82550bd0cc105072b7cdec836d5d48d175ea220e
languageName: node
linkType: hard
"@react-stately/tabs@npm:3.8.1":
version: 3.8.1
resolution: "@react-stately/tabs@npm:3.8.1"
dependencies:
"@react-stately/list": "npm:^3.12.1"
"@react-types/shared": "npm:^3.29.0"
"@react-types/tabs": "npm:^3.3.14"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/33af583704e7e63f9b7fac7f67beb42feb6f8ccd545b577eb409a7d3b438bae91573f1bfcccccc78544a0eb63e34c5673ac604c8c27cf66fd659ae49bb0f9f48
languageName: node
linkType: hard
"@react-stately/tabs@npm:^3.8.1":
version: 3.8.2
resolution: "@react-stately/tabs@npm:3.8.2"
dependencies:
"@react-stately/list": "npm:^3.12.2"
"@react-types/shared": "npm:^3.29.1"
"@react-types/tabs": "npm:^3.3.15"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/12feabc89a8a3e95822ca6f2bc9ab2d411afa192147fc27d9e725f2456d3ab49d04e5d396f240d89d96148084ad133f9d1863b0250688d6a473fcbdef3d7284c
languageName: node
linkType: hard
"@react-stately/toast@npm:3.1.0, @react-stately/toast@npm:^3.1.0":
version: 3.1.0
resolution: "@react-stately/toast@npm:3.1.0"
dependencies:
"@swc/helpers": "npm:^0.5.0"
use-sync-external-store: "npm:^1.4.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/1ccbabc31aefb18f6ef47f050c7074f187562aef48559f700244be33f5ad78a4edd9a2bb46db7bb727a87edab199e30f6a42d0fd3fe63e96bdca1040a969bd2a
languageName: node
linkType: hard
"@react-stately/toggle@npm:3.8.3":
version: 3.8.3
resolution: "@react-stately/toggle@npm:3.8.3"
dependencies:
"@react-stately/utils": "npm:^3.10.6"
"@react-types/checkbox": "npm:^3.9.3"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/ade9e87e20ca91980f639e782013ab420c8a6715330858db36132e443f9235f777d3f12e28c5d4da6337f0bcc21e5635a6855be959bfe4a10d04028e20a1b461
languageName: node
linkType: hard
"@react-stately/toggle@npm:3.9.0":
version: 3.9.0
resolution: "@react-stately/toggle@npm:3.9.0"
dependencies:
"@react-stately/utils": "npm:^3.10.8"
"@react-types/checkbox": "npm:^3.10.0"
"@react-types/shared": "npm:^3.31.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/eab0003f9709d8140aa8fa7a0283b186de7fa45511739d163fc23398517d4b094679545a136f940f7ba16344481f84f5829a03939075b7400fc428c7534b9473
languageName: node
linkType: hard
"@react-stately/toggle@npm:^3.8.3, @react-stately/toggle@npm:^3.8.4":
version: 3.8.4
resolution: "@react-stately/toggle@npm:3.8.4"
dependencies:
"@react-stately/utils": "npm:^3.10.6"
"@react-types/checkbox": "npm:^3.9.4"
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/4e71b46a5fae68f55a7344703f910d3dd548c8fcc3207b3b6bfe1bde8ad8bd732e02bf63acbeecafc7dcf8a22a5d0ad20d3a1ee7b6b22893b17e871620f467e7
languageName: node
linkType: hard
"@react-stately/toggle@npm:^3.9.0, @react-stately/toggle@npm:^3.9.1":
version: 3.9.1
resolution: "@react-stately/toggle@npm:3.9.1"
dependencies:
"@react-stately/utils": "npm:^3.10.8"
"@react-types/checkbox": "npm:^3.10.1"
"@react-types/shared": "npm:^3.32.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/d7a87f9b00f324cfd2cab13733ceebaf66df9514024bfa85f7f8bef27ac0037b0568f763e96a4a9b46798fbd90048d8afffc0a6ad38803e121a3251d13bf7113
languageName: node
linkType: hard
"@react-stately/tooltip@npm:3.5.3":
version: 3.5.3
resolution: "@react-stately/tooltip@npm:3.5.3"
dependencies:
"@react-stately/overlays": "npm:^3.6.15"
"@react-types/tooltip": "npm:^3.4.16"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/42c7d49320ec21a8d880302f6a012d29646df726ab4e3c1df208c16d36ad85c04d4c716eee4833923f1dddcfc43de70126931fe9df0215741bce1487750449ae
languageName: node
linkType: hard
"@react-stately/tooltip@npm:^3.5.3":
version: 3.5.4
resolution: "@react-stately/tooltip@npm:3.5.4"
dependencies:
"@react-stately/overlays": "npm:^3.6.16"
"@react-types/tooltip": "npm:^3.4.17"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/b24cb3e96dfb73edf9ce5f808c2c0669b5196ddba23d118c59f4b083c8d042e9eaa550b69f293efb2e472ac9b4d6da02f68c05e4e308ade7d4665c60674c0dad
languageName: node
linkType: hard
"@react-stately/tree@npm:3.8.9":
version: 3.8.9
resolution: "@react-stately/tree@npm:3.8.9"
dependencies:
"@react-stately/collections": "npm:^3.12.3"
"@react-stately/selection": "npm:^3.20.1"
"@react-stately/utils": "npm:^3.10.6"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/a886415525822978ebb1176cf2ff0871df3102f93a3038aa7ccb6d2363a584341bbddc6de245bf7c798db8f3b14c034e5e3d8080abfc6056eef75f1924de1509
languageName: node
linkType: hard
"@react-stately/tree@npm:^3.8.10, @react-stately/tree@npm:^3.8.9":
version: 3.8.10
resolution: "@react-stately/tree@npm:3.8.10"
dependencies:
"@react-stately/collections": "npm:^3.12.4"
"@react-stately/selection": "npm:^3.20.2"
"@react-stately/utils": "npm:^3.10.6"
"@react-types/shared": "npm:^3.29.1"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/3871f7f51d533cfe64645417eb2ce07fab2ff9736c1b7c75be844401a79fbe998f9490dfcc9ec3d357ade3b6dc7f323433e6b9b9337c4a8dd9d95084555126f1
languageName: node
linkType: hard
"@react-stately/tree@npm:^3.9.1":
version: 3.9.2
resolution: "@react-stately/tree@npm:3.9.2"
dependencies:
"@react-stately/collections": "npm:^3.12.7"
"@react-stately/selection": "npm:^3.20.5"
"@react-stately/utils": "npm:^3.10.8"
"@react-types/shared": "npm:^3.32.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/e2c3eb2eec5c0fdfc18e7cf09c3a866f0ebc261bf3398df7b54fa41c8b233e68ba4366c043896a101ddb72d2786adc5bad00f85eb61d0ff60afec34665de096f
languageName: node
linkType: hard
"@react-stately/utils@npm:3.10.6, @react-stately/utils@npm:^3.10.6":
version: 3.10.6
resolution: "@react-stately/utils@npm:3.10.6"
dependencies:
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/09403746285a3866765c04bed5f2505e0bdbb971bdeb2eedee31ebf5bad3d0c0c0cef9d0dd5852fc6c58f6b552cbc90364eb32403245dfc04dc22c5e2fbfbe32
languageName: node
linkType: hard
"@react-stately/utils@npm:^3.10.8":
version: 3.10.8
resolution: "@react-stately/utils@npm:3.10.8"
dependencies:
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/a97cc292986e3eeb2ceb1626671ce60e8342a3ff35ab92bcfcb94bd6b28729836cc592e3fe4df2fba603e5fdd26291be77b7f60441920298c282bb93f424feba
languageName: node
linkType: hard
"@react-stately/virtualizer@npm:4.3.2":
version: 4.3.2
resolution: "@react-stately/virtualizer@npm:4.3.2"
dependencies:
"@react-aria/utils": "npm:^3.28.2"
"@react-types/shared": "npm:^3.29.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/d6f8465dac5d6a816cadcb9f3d9a9d2b0ce18519ac0a1fd3fdb3983eaadbf98ac5c6f343df6bde1d340e4f8290993aeaf2c956d47fa9402130b41b84888d76cd
languageName: node
linkType: hard
"@react-stately/virtualizer@npm:4.4.2":
version: 4.4.2
resolution: "@react-stately/virtualizer@npm:4.4.2"
dependencies:
"@react-aria/utils": "npm:^3.30.0"
"@react-types/shared": "npm:^3.31.0"
"@swc/helpers": "npm:^0.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/898f309c0738699b2e547d0c6c12e9bbb0452b577e6a0ab80c6086ad9fcb05dc8521a92b6bcc05ab8bea74af5710cf7813e9116f0891d38b9090cedd0e2652a0
languageName: node
linkType: hard
"@react-types/accordion@npm:3.0.0-alpha.26":
version: 3.0.0-alpha.26
resolution: "@react-types/accordion@npm:3.0.0-alpha.26"
dependencies:
"@react-types/shared": "npm:^3.27.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/fe3dda6c148a815ea9e82d1ba0796f03954467290816e5b815bb26c7a503c1c46c0db8d43836b8da221bf1bc92e068f230509a93c2b30b912c2a2510f1798732
languageName: node
linkType: hard
"@react-types/breadcrumbs@npm:3.7.12":
version: 3.7.12
resolution: "@react-types/breadcrumbs@npm:3.7.12"
dependencies:
"@react-types/link": "npm:^3.6.0"
"@react-types/shared": "npm:^3.29.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/0517e4cf06dcbd0b132d4b245a81ff87182db74e5dd021f3838a9d1940381820d5508c03e878fe16fa2ab1c502eb2b302b37d79b9dae57afc43b20e6b9d179cf
languageName: node
linkType: hard
"@react-types/breadcrumbs@npm:^3.7.12":
version: 3.7.13
resolution: "@react-types/breadcrumbs@npm:3.7.13"
dependencies:
"@react-types/link": "npm:^3.6.1"
"@react-types/shared": "npm:^3.29.1"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/215dc4f2ffe2177869c5d91affae90374952ff55411765d1f7419ce8f97eb2a00cff0be6db0628950f195315cdc1680be13a521082223d672cc43d62752a0c60
languageName: node
linkType: hard
"@react-types/button@npm:3.12.0":
version: 3.12.0
resolution: "@react-types/button@npm:3.12.0"
dependencies:
"@react-types/shared": "npm:^3.29.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/6412c06f1a590581283d8cfe7661bbc9f1916b827ecb332fc7d65c918f9e52496fd11ce7859742532ab0d75b8746098e9fe04561efc700969d41e59179f15c30
languageName: node
linkType: hard
"@react-types/button@npm:3.13.0":
version: 3.13.0
resolution: "@react-types/button@npm:3.13.0"
dependencies:
"@react-types/shared": "npm:^3.31.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/e3f0110fb845783ee7b1280258d03b749575492d9ee12b0c18903e0d7919d42c76c6d843b3f78f36dcf13bca67f7b0110f52f8d7808c97cb8489453551092e30
languageName: node
linkType: hard
"@react-types/button@npm:^3.12.0, @react-types/button@npm:^3.12.1":
version: 3.12.1
resolution: "@react-types/button@npm:3.12.1"
dependencies:
"@react-types/shared": "npm:^3.29.1"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/60db0784703cc24bfcffcc73784c98d74e5cd7de31cbd6e853edf7b2c261c1da44fc204f203c93f348585b9ebae7aaf38855ca45a856994a0540f9a29b8370ec
languageName: node
linkType: hard
"@react-types/button@npm:^3.13.0, @react-types/button@npm:^3.14.0":
version: 3.14.0
resolution: "@react-types/button@npm:3.14.0"
dependencies:
"@react-types/shared": "npm:^3.32.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/33891e850e0cccb5326cbd866c9bc7312611e7476ca82a83fee601a516a07a04da1eef1e9dbbf34f56a2f7cfcd546306ae91c088d99cdc548b49b80267e3f623
languageName: node
linkType: hard
"@react-types/calendar@npm:3.7.0":
version: 3.7.0
resolution: "@react-types/calendar@npm:3.7.0"
dependencies:
"@internationalized/date": "npm:^3.8.0"
"@react-types/shared": "npm:^3.29.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/3154bcc223bfcbd34b674cf3db059fb459434bc63c00edae98b433ef8348b30ff8d7f84ffe9f630e68c4ec69931e5a7608a8d318ccea895b65996cd855efb029
languageName: node
linkType: hard
"@react-types/calendar@npm:^3.7.0, @react-types/calendar@npm:^3.7.1":
version: 3.7.1
resolution: "@react-types/calendar@npm:3.7.1"
dependencies:
"@internationalized/date": "npm:^3.8.1"
"@react-types/shared": "npm:^3.29.1"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/17cbb9c731ade4d07d54d9a563050747dd62752bab32fe67459dfc20639b94caa042fb76fd84301c4a1751d3938c7aada8600aa2facf94f6d84ad0a130227edf
languageName: node
linkType: hard
"@react-types/checkbox@npm:3.10.0":
version: 3.10.0
resolution: "@react-types/checkbox@npm:3.10.0"
dependencies:
"@react-types/shared": "npm:^3.31.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/7e7fa09b955a618f8b327c5859f9c7481552c40229bd0eed9596cc4825125eda45e4f59891c12c48a6615b53d6e7504a8c112ee2a3820b6511c8afa013387600
languageName: node
linkType: hard
"@react-types/checkbox@npm:3.9.3":
version: 3.9.3
resolution: "@react-types/checkbox@npm:3.9.3"
dependencies:
"@react-types/shared": "npm:^3.29.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/5bda856c04146e4438be578d3fdea3d8ec151d21f1afc7c19926f8d667cd167fafdf64585e02a0bf065439a6318dc95a25ec5f70e0850f6f0c5eaf60ba84bf55
languageName: node
linkType: hard
"@react-types/checkbox@npm:^3.10.0, @react-types/checkbox@npm:^3.10.1":
version: 3.10.1
resolution: "@react-types/checkbox@npm:3.10.1"
dependencies:
"@react-types/shared": "npm:^3.32.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/cb2e3d0f4a47c2f664cce06a0956825d80e30d8c30e4d80fd6d657822dbbdee0d46f49d93c1f31d4919bbe2d69b09556d8185b1e0d4ebd4f658fe431e6a6aa65
languageName: node
linkType: hard
"@react-types/checkbox@npm:^3.9.3, @react-types/checkbox@npm:^3.9.4":
version: 3.9.4
resolution: "@react-types/checkbox@npm:3.9.4"
dependencies:
"@react-types/shared": "npm:^3.29.1"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/98a69de79694059d99c7ca2850ee62fa7a7add9c84abf29ad6c8b3101c156b39205436841701513c70679b557acddf39e05fd1a67df3dc5916052bcfbb1944f5
languageName: node
linkType: hard
"@react-types/combobox@npm:3.13.4":
version: 3.13.4
resolution: "@react-types/combobox@npm:3.13.4"
dependencies:
"@react-types/shared": "npm:^3.29.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/e51b63761ac3607d05708cb280a9a737c13cac03aac440ab220ea2fd2c05889a9c2d2bf2f8728f7df774febc8507c8986d709492685fac3fa0e582740c292b60
languageName: node
linkType: hard
"@react-types/combobox@npm:^3.13.4, @react-types/combobox@npm:^3.13.5":
version: 3.13.5
resolution: "@react-types/combobox@npm:3.13.5"
dependencies:
"@react-types/shared": "npm:^3.29.1"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/00573ad1778522dfe68b729ead0cfc9cc4a8ead083a566dd7b5953c06a757194c4a1e42cc1a5d4b3094c87d3be651e3a5665bdad00c468cf9a90e02a064ec32f
languageName: node
linkType: hard
"@react-types/datepicker@npm:3.12.0":
version: 3.12.0
resolution: "@react-types/datepicker@npm:3.12.0"
dependencies:
"@internationalized/date": "npm:^3.8.0"
"@react-types/calendar": "npm:^3.7.0"
"@react-types/overlays": "npm:^3.8.14"
"@react-types/shared": "npm:^3.29.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/d0f7beb51bb408fb6a01ddcfac18bc4da00df96b29dcb1dac1e10f5d209003b18c5a4a4992c4ff698e5158d34849638f2a3355ac9fddcab8003e7005aec9a228
languageName: node
linkType: hard
"@react-types/datepicker@npm:^3.12.0, @react-types/datepicker@npm:^3.12.1":
version: 3.12.1
resolution: "@react-types/datepicker@npm:3.12.1"
dependencies:
"@internationalized/date": "npm:^3.8.1"
"@react-types/calendar": "npm:^3.7.1"
"@react-types/overlays": "npm:^3.8.15"
"@react-types/shared": "npm:^3.29.1"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/f0553bbdf48cd6d0ad044e99b4e9170cf8d6a5e1b66191a432bbad8eb57c6caf8fc6eddd2d9a88c09289a85455f8ba86de1c4198f728d58c16935348cd30be35
languageName: node
linkType: hard
"@react-types/dialog@npm:^3.5.17":
version: 3.5.18
resolution: "@react-types/dialog@npm:3.5.18"
dependencies:
"@react-types/overlays": "npm:^3.8.15"
"@react-types/shared": "npm:^3.29.1"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/d204beee78a8e333deef53f1ca31540fbe516a7eeaf8b7fc1d84214f89d54d075206392bae3b75730ce1b77ddc1a9cf6f659e2ea87633f78113dd643107daca3
languageName: node
linkType: hard
"@react-types/dialog@npm:^3.5.20":
version: 3.5.21
resolution: "@react-types/dialog@npm:3.5.21"
dependencies:
"@react-types/overlays": "npm:^3.9.1"
"@react-types/shared": "npm:^3.32.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/129bbdca319ab5353361f861c973837b73f7ed21cc7a887acb1e528b781ccbf390292bf5c8ca48a425e8b5a14d59d45be708e40a5b5f3aca4404c816a14ad135
languageName: node
linkType: hard
"@react-types/form@npm:3.7.11":
version: 3.7.11
resolution: "@react-types/form@npm:3.7.11"
dependencies:
"@react-types/shared": "npm:^3.29.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/4837042c78fdb80c172f4a71d8fbf7e182e6d3b8d6ffde9025568eb8430761893f24a060ed287fc0adfb8d264be3092511f00d78a4e3342393914ec6ee9fc007
languageName: node
linkType: hard
"@react-types/form@npm:3.7.14":
version: 3.7.14
resolution: "@react-types/form@npm:3.7.14"
dependencies:
"@react-types/shared": "npm:^3.31.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/b2bf0802a21d7fc9e0b22b7925905a90d2394de0a7e94189855329138d423dbaeaba2f887b93db731982e1c00a8e021e56524f5827a17cfd7cd338803e7ec6a6
languageName: node
linkType: hard
"@react-types/grid@npm:3.3.1":
version: 3.3.1
resolution: "@react-types/grid@npm:3.3.1"
dependencies:
"@react-types/shared": "npm:^3.29.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/15e1c6c6228ced1c3bd48c5b56d2e9426e34aa932564377d9ce957fa3f8d421570eb4782971473c8cb0a18745bb34ae17a3164976aa8bc710dfa578a3374234a
languageName: node
linkType: hard
"@react-types/grid@npm:3.3.4":
version: 3.3.4
resolution: "@react-types/grid@npm:3.3.4"
dependencies:
"@react-types/shared": "npm:^3.31.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/c3203832fda6503eef159a5334b8029860bede0c298acf23689bc13a3373c1ffefce82a4a0f7e8f723a8b18ae664bf341ae51821f82bfa3e61fbc97306b52838
languageName: node
linkType: hard
"@react-types/grid@npm:^3.3.1, @react-types/grid@npm:^3.3.2":
version: 3.3.2
resolution: "@react-types/grid@npm:3.3.2"
dependencies:
"@react-types/shared": "npm:^3.29.1"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/61127b1442d6a218b91780dafe7507766db566597eb109154d3ad3a1d6107e9580896fc81ec771abf5b724daa1caeba20fad61365ba825e678b3acea8286da52
languageName: node
linkType: hard
"@react-types/grid@npm:^3.3.4, @react-types/grid@npm:^3.3.5":
version: 3.3.5
resolution: "@react-types/grid@npm:3.3.5"
dependencies:
"@react-types/shared": "npm:^3.32.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/4b49af54683ce73ed2ee9be2b6f7a03870ee461bf41f1943f5d88fc4a4cedf62091e9a7937245db10acc0a1e4feedffe579be7e8746a7d71f6483553eed08e55
languageName: node
linkType: hard
"@react-types/link@npm:3.6.0":
version: 3.6.0
resolution: "@react-types/link@npm:3.6.0"
dependencies:
"@react-types/shared": "npm:^3.29.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/88b8472b95c91bff78c8134f629b3299f8f0cca5e0ad3226dd601a843df877d131ae5fd4e2b4e5c95cd5cae005a0a6e8b1bbb56e53e2285048aee32c5cbe0e08
languageName: node
linkType: hard
"@react-types/link@npm:^3.6.0, @react-types/link@npm:^3.6.1":
version: 3.6.1
resolution: "@react-types/link@npm:3.6.1"
dependencies:
"@react-types/shared": "npm:^3.29.1"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/1f83e0d1f44b5560935577e5588e8a3d51fde9d9b63daeca168b3ab9ef44e52b6e147f8a17b2c65b446f29dd9db5d8fc31a397201e9971a3fc6ab75c3e2db710
languageName: node
linkType: hard
"@react-types/listbox@npm:^3.6.0, @react-types/listbox@npm:^3.7.0":
version: 3.7.0
resolution: "@react-types/listbox@npm:3.7.0"
dependencies:
"@react-types/shared": "npm:^3.29.1"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/06fad7c64aa1655d820327d54822c9fe48af712309648748a9bbe53ffa3cd7f17dcfbb1248c05f0236bd6339bd227455e3b394f94d5fc12f645e823d1c387088
languageName: node
linkType: hard
"@react-types/listbox@npm:^3.7.2":
version: 3.7.3
resolution: "@react-types/listbox@npm:3.7.3"
dependencies:
"@react-types/shared": "npm:^3.32.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/94fce2d390bfb9beafcc5a241ffe32524512240c7980fafee3195c859973ba84e1df2afc8a55e679d797c74f5d33fa18162fbaeeda983187423f7ce9bfd6d74a
languageName: node
linkType: hard
"@react-types/menu@npm:3.10.0":
version: 3.10.0
resolution: "@react-types/menu@npm:3.10.0"
dependencies:
"@react-types/overlays": "npm:^3.8.14"
"@react-types/shared": "npm:^3.29.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/2fe48d50240463a1f10e08e96fd72bfe86e38accfd98e3379f26c91f0832a3b533a071cdc330232cd892aff830b0690d26002cbf577b48081f63d49e8916b543
languageName: node
linkType: hard
"@react-types/menu@npm:^3.10.0, @react-types/menu@npm:^3.10.1":
version: 3.10.1
resolution: "@react-types/menu@npm:3.10.1"
dependencies:
"@react-types/overlays": "npm:^3.8.15"
"@react-types/shared": "npm:^3.29.1"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/e20915b049b5f1a3586b52a927d7b7d5e075f75e69f67b85180533367194a40885aaa4c3d664be05799a02b971b282eee1ac23fa101277d0db43cc36552e4c02
languageName: node
linkType: hard
"@react-types/menu@npm:^3.10.3, @react-types/menu@npm:^3.10.4":
version: 3.10.4
resolution: "@react-types/menu@npm:3.10.4"
dependencies:
"@react-types/overlays": "npm:^3.9.1"
"@react-types/shared": "npm:^3.32.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/699da0cac2e31fdc362e8f5e227c2221187e4d883509ae242b1efd58ab28c55c2ee695c227ea04c3a4510354dc3348b409fa13a38b88a91544597cad63eb202b
languageName: node
linkType: hard
"@react-types/numberfield@npm:3.8.10":
version: 3.8.10
resolution: "@react-types/numberfield@npm:3.8.10"
dependencies:
"@react-types/shared": "npm:^3.29.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/190360d5e8731d93436c0fa3661d531cfe354e52591c66a4a9cab2fc4007c82bc8eca33ae5e7bba3366977e3fdd081e57c516228f59aaf214ac3516801b69b70
languageName: node
linkType: hard
"@react-types/numberfield@npm:^3.8.10, @react-types/numberfield@npm:^3.8.11":
version: 3.8.11
resolution: "@react-types/numberfield@npm:3.8.11"
dependencies:
"@react-types/shared": "npm:^3.29.1"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/3341952e1b5b9136409a2314015412bc4f7b4e6bcae284074a0ae0b015e59a0aed623520202b95e93be707c3ab1958ef21557cfaea88299744868baf31cb68a7
languageName: node
linkType: hard
"@react-types/overlays@npm:3.8.14":
version: 3.8.14
resolution: "@react-types/overlays@npm:3.8.14"
dependencies:
"@react-types/shared": "npm:^3.29.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/a30a90997d40139a99d85b5a2f5e07ead48163e909f25e0ca1ff4664ebf8bd3bb59cebd3124b0eeba2e45226d36a54265eae5946dc587ec168acae47ed8f8090
languageName: node
linkType: hard
"@react-types/overlays@npm:3.9.0":
version: 3.9.0
resolution: "@react-types/overlays@npm:3.9.0"
dependencies:
"@react-types/shared": "npm:^3.31.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/daf8e878a96181a48b22f1ed3f48d769c72290c858becfbca6adf8da255531b4f79124d184c4fbd3534cfaa6a42edeb221f9b54cfa75132e131e781c3108a2c1
languageName: node
linkType: hard
"@react-types/overlays@npm:^3.8.14, @react-types/overlays@npm:^3.8.15":
version: 3.8.15
resolution: "@react-types/overlays@npm:3.8.15"
dependencies:
"@react-types/shared": "npm:^3.29.1"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/80853c4795bf4879de3d86465f0c2606fcb1b56774a7af689862e7a4f0d0fde7b0375cbd4aa62a452adc699f3a2948c775de43d835be407db6140497d005ad8c
languageName: node
linkType: hard
"@react-types/overlays@npm:^3.9.0, @react-types/overlays@npm:^3.9.1":
version: 3.9.1
resolution: "@react-types/overlays@npm:3.9.1"
dependencies:
"@react-types/shared": "npm:^3.32.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/bf0e1c11251e2c6c79e12762d30e886ba5587cd7d38761d4174c3f512ace205cf7b3d7da44ca7fe3797af27ad32b844a6c4ecb3cf0a5c6b9784557cfaf035346
languageName: node
linkType: hard
"@react-types/progress@npm:3.5.11":
version: 3.5.11
resolution: "@react-types/progress@npm:3.5.11"
dependencies:
"@react-types/shared": "npm:^3.29.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/1be57922b8a820b391e58057e6d8377c6b17a9beb8d52b638d1d57fdf54efceab614f26ad3cfb2d818069cfbaf1e6bb38bf1c27d94a002b53a870c9ca740bb25
languageName: node
linkType: hard
"@react-types/progress@npm:^3.5.11":
version: 3.5.12
resolution: "@react-types/progress@npm:3.5.12"
dependencies:
"@react-types/shared": "npm:^3.29.1"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/e913268969a95ac152f00de3477c429bf7a5a16f27fa8ee75e5e57bc512ac881c45e01ba6776f32093be1c15fdc71a46af315bdbfb4a8b1a73a20f1258f641ec
languageName: node
linkType: hard
"@react-types/radio@npm:3.8.8":
version: 3.8.8
resolution: "@react-types/radio@npm:3.8.8"
dependencies:
"@react-types/shared": "npm:^3.29.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/04c10aebf1f1862065a93f97e3cfbfed1339f9e91be9b80a916deb885702b105ffb904ad36fb41a4a2ee618b1bc13c5463d93ef89cdaf9f624bfbf1136860dab
languageName: node
linkType: hard
"@react-types/radio@npm:^3.8.8, @react-types/radio@npm:^3.8.9":
version: 3.8.9
resolution: "@react-types/radio@npm:3.8.9"
dependencies:
"@react-types/shared": "npm:^3.29.1"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/2a9ba6fc84f3e1441ed41c93b283206ae791e4d370403b2a3b7d7d1fc4867b1078122d7016ef163630f79760139c82c3d0dfca66ddf060a585df615c4822df2e
languageName: node
linkType: hard
"@react-types/select@npm:3.9.11":
version: 3.9.11
resolution: "@react-types/select@npm:3.9.11"
dependencies:
"@react-types/shared": "npm:^3.29.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/8d5eb28256e3530ee4b5d16687e4f9efb9d33ceded6448b8b7f3ea551151608b1e3668080fd97c4a822d779ff82f9f6f5463c3210c1a35d346098ddc9b3f3757
languageName: node
linkType: hard
"@react-types/select@npm:^3.9.12":
version: 3.9.12
resolution: "@react-types/select@npm:3.9.12"
dependencies:
"@react-types/shared": "npm:^3.29.1"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/b4cf6b5e7f2e42e3dab4eb7b809cf05f0046cb4b838ffee6074cd7ef3a593c55caf78e926c9f97a80e73d8d0e7dcc96dcf8bb008ad8b0ec1b9350a97be1cde0d
languageName: node
linkType: hard
"@react-types/shared@npm:3.29.0":
version: 3.29.0
resolution: "@react-types/shared@npm:3.29.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/a629e4fe9ce9062de603a1e01ae90a999b07f1367143f3b66921c8a0c8e59d90a528263be74d930162ed4a78a725a253c48b6f3b00a85767549e86cac4cc8218
languageName: node
linkType: hard
"@react-types/shared@npm:3.31.0":
version: 3.31.0
resolution: "@react-types/shared@npm:3.31.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/6944eba44a5bc390a0c4136f9bdcc8caee8408bba2d1b90160ae7397b9455efb3f28864a796c15e26132b522a60c389a7f0cf67674d64aec2947601962d3e4d6
languageName: node
linkType: hard
"@react-types/shared@npm:^3.27.0":
version: 3.27.0
resolution: "@react-types/shared@npm:3.27.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/7d710d776dcb6a832d3dc5ec281a81cd00a5b5aec1ecfcf7799c73bdb62c8739e574e29dafe04f7710a0ea568e4e11621091658a9c73d3191e1b0f5f3ff21f95
languageName: node
linkType: hard
"@react-types/shared@npm:^3.29.0, @react-types/shared@npm:^3.29.1":
version: 3.29.1
resolution: "@react-types/shared@npm:3.29.1"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/7b124568475d8e067d3d71de2dc31d82479a92b9a9a7cd493802e2780b973787adfb65eb718d475950078c57087369edf156aed68e5029111a39c3b34bf4250b
languageName: node
linkType: hard
"@react-types/shared@npm:^3.31.0, @react-types/shared@npm:^3.32.0":
version: 3.32.0
resolution: "@react-types/shared@npm:3.32.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/8484f310a8911ab01daa87f9bfdea0a9a76e152d13d8421c28560dc84d64a7df23cda956db59f7010d2e8eaea27d7644118bfbe60b603499903b5f7e6cdfe4fa
languageName: node
linkType: hard
"@react-types/slider@npm:^3.7.10, @react-types/slider@npm:^3.7.11":
version: 3.7.11
resolution: "@react-types/slider@npm:3.7.11"
dependencies:
"@react-types/shared": "npm:^3.29.1"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/bb71e5707f9be3b650445e8998298795626b39e043a9757e2c7349b344e5ed5e3d78ec80c0f5d1092c51d9f5fde16244bcf2cd5ddd80d1c232a605e487aab8cc
languageName: node
linkType: hard
"@react-types/switch@npm:^3.5.10":
version: 3.5.11
resolution: "@react-types/switch@npm:3.5.11"
dependencies:
"@react-types/shared": "npm:^3.29.1"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/57312d1044bd3888fe274f2a120ac036eb496c86c904dcf63a3c2dc424a256331cd64bf66b9240f7ec9a7ade7a2a6d258eb73ac900a7286668fab9eb73d613bf
languageName: node
linkType: hard
"@react-types/table@npm:3.12.0":
version: 3.12.0
resolution: "@react-types/table@npm:3.12.0"
dependencies:
"@react-types/grid": "npm:^3.3.1"
"@react-types/shared": "npm:^3.29.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/e6c88d9f357dbc1b5cd8a420ec5bebeebfbdcd6cc02652bd62741efe03f46ee5ee562fc1c338c7451513ce86953a6f6e230c480a178cf1ca1a95d59f0f598cad
languageName: node
linkType: hard
"@react-types/table@npm:3.13.2":
version: 3.13.2
resolution: "@react-types/table@npm:3.13.2"
dependencies:
"@react-types/grid": "npm:^3.3.4"
"@react-types/shared": "npm:^3.31.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/42e37782d1d914472ee049dd697041f97bec5b6f9481c8c91775e2d7bae24ce1ca10d97e0413c133834241ddb7fdc0c9ae453fd06aa2f42c4dea76d14a27090f
languageName: node
linkType: hard
"@react-types/table@npm:^3.12.0, @react-types/table@npm:^3.13.0":
version: 3.13.0
resolution: "@react-types/table@npm:3.13.0"
dependencies:
"@react-types/grid": "npm:^3.3.2"
"@react-types/shared": "npm:^3.29.1"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/104e71a62827134854be37dde26652d66c39de0786e03d08b769a18cedddb3f6e758ec3d63aa3731f3226cad562f28fe46c9982d3fe621bf4d82b5e707b4ea88
languageName: node
linkType: hard
"@react-types/table@npm:^3.13.2, @react-types/table@npm:^3.13.3":
version: 3.13.3
resolution: "@react-types/table@npm:3.13.3"
dependencies:
"@react-types/grid": "npm:^3.3.5"
"@react-types/shared": "npm:^3.32.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/f1d40064f28441ae0387467f29ff01c641a8eb134b0e2d0dcb3b97331bdf56ac8d619e000bbb5a6229a31ddc288884913fcefb1e255f0c2f1c37f30575170b72
languageName: node
linkType: hard
"@react-types/tabs@npm:3.3.14":
version: 3.3.14
resolution: "@react-types/tabs@npm:3.3.14"
dependencies:
"@react-types/shared": "npm:^3.29.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/f3871cfd02273bbe8729b3544fa31716b21395f9bf5096b177971c59a7642a31cee1e2756cf0eb046a86ef2d93b20c7e618bbcde53b0f169d7643e81e744d4a2
languageName: node
linkType: hard
"@react-types/tabs@npm:^3.3.14, @react-types/tabs@npm:^3.3.15":
version: 3.3.15
resolution: "@react-types/tabs@npm:3.3.15"
dependencies:
"@react-types/shared": "npm:^3.29.1"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/16ba8b19e5389cf815cbcccf14bf7649e268c5b511cea5d5e2483eb49bb00f0db1c316de6af4be00b6c06957c3704c6817e8a79d04b5464b537319a862e3113a
languageName: node
linkType: hard
"@react-types/textfield@npm:3.12.1":
version: 3.12.1
resolution: "@react-types/textfield@npm:3.12.1"
dependencies:
"@react-types/shared": "npm:^3.29.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/a639622457207c5909a140e93373e77bd1c934f940b54bb24aa2ba67dddcee7930491c57d0ed4847690fc55abf9e24aa0d04c2e7c7fc72a65f987a0d73e610b9
languageName: node
linkType: hard
"@react-types/textfield@npm:^3.12.1, @react-types/textfield@npm:^3.12.2":
version: 3.12.2
resolution: "@react-types/textfield@npm:3.12.2"
dependencies:
"@react-types/shared": "npm:^3.29.1"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/edd5c17d84cb576ab0627d7a047a76a72b9ea09fe51e27685c5d12b2c38ccdc46cf044b12bc1948c18b067c8262db4a038bb6a84c7d4d41d69a6368dafb8f771
languageName: node
linkType: hard
"@react-types/tooltip@npm:3.4.16":
version: 3.4.16
resolution: "@react-types/tooltip@npm:3.4.16"
dependencies:
"@react-types/overlays": "npm:^3.8.14"
"@react-types/shared": "npm:^3.29.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/ef6cb4ec5a2cf50345c5460afa6c03164de37cd94b93033224a8cdfcca42f86c8f86e8d3ba684b783f61a1dd30fdd7103933d8597808e6ece36c6fb8fd27b062
languageName: node
linkType: hard
"@react-types/tooltip@npm:^3.4.16, @react-types/tooltip@npm:^3.4.17":
version: 3.4.17
resolution: "@react-types/tooltip@npm:3.4.17"
dependencies:
"@react-types/overlays": "npm:^3.8.15"
"@react-types/shared": "npm:^3.29.1"
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
checksum: 10c0/5e367e65ce212b6db9b60b652f6d35ce9e0730e696d941bf4a4a9276591a51033a6e5b11066f3364019ac0ee8245fc51c90162d3c262b20e0630a8c8b21c1540
languageName: node
linkType: hard
"@reduxjs/toolkit@npm:^1.7.2":
version: 1.9.7
resolution: "@reduxjs/toolkit@npm:1.9.7"
dependencies:
immer: "npm:^9.0.21"
redux: "npm:^4.2.1"
redux-thunk: "npm:^2.4.2"
reselect: "npm:^4.1.8"
peerDependencies:
react: ^16.9.0 || ^17.0.0 || ^18
react-redux: ^7.2.1 || ^8.0.2
peerDependenciesMeta:
react:
optional: true
react-redux:
optional: true
checksum: 10c0/fa0aa4b7c6973ac87ce0ac7e45faa02c73b66c4ee0bc950d178494539a42a1bb908d109297102458b7ea14d5e7dae356e7a7ce9a1b9849b0e8451e6dd70fca9c
languageName: node
linkType: hard
"@salte-auth/popup@npm:1.0.0-rc.2":
version: 1.0.0-rc.2
resolution: "@salte-auth/popup@npm:1.0.0-rc.2"
peerDependencies:
"@salte-auth/salte-auth": ^3.0.0-rc.5
checksum: 10c0/46e7e91527d5be92d3cdd5496109b9002f44f653c6077c3e32d5835e848dd5649d1ac8dc575ccea4e7c6a4545c8525aae1b5e0ee77e336bd0dc4d06111b0b292
languageName: node
linkType: hard
"@salte-auth/salte-auth@npm:3.0.0-rc.8":
version: 3.0.0-rc.8
resolution: "@salte-auth/salte-auth@npm:3.0.0-rc.8"
checksum: 10c0/00fae36711be2a71e4ed8075b60b947ae536e942d029219773a9e00a875ec311d1179d9d3f0e86de56ed29c644d2b01b027b788c08bdca21f32e12f903024ba9
languageName: node
linkType: hard
"@sindresorhus/is@npm:^4.0.0":
version: 4.6.0
resolution: "@sindresorhus/is@npm:4.6.0"
checksum: 10c0/33b6fb1d0834ec8dd7689ddc0e2781c2bfd8b9c4e4bacbcb14111e0ae00621f2c264b8a7d36541799d74888b5dccdf422a891a5cb5a709ace26325eedc81e22e
languageName: node
linkType: hard
"@swc/helpers@npm:^0.5.0":
version: 0.5.15
resolution: "@swc/helpers@npm:0.5.15"
dependencies:
tslib: "npm:^2.8.0"
checksum: 10c0/33002f74f6f885f04c132960835fdfc474186983ea567606db62e86acd0680ca82f34647e8e610f4e1e422d1c16fce729dde22cd3b797ab1fd9061a825dabca4
languageName: node
linkType: hard
"@swc/helpers@npm:^0.5.11":
version: 0.5.12
resolution: "@swc/helpers@npm:0.5.12"
dependencies:
tslib: "npm:^2.4.0"
checksum: 10c0/44693c0f34d772d63f3a6fb461964ec583055549a96df9790afec125b2ba06929a63cf9a165a9aaf22317779f460f8caafa94458b70d5cb2bc057b6ba9b5d02c
languageName: node
linkType: hard
"@szmarczak/http-timer@npm:^4.0.5":
version: 4.0.6
resolution: "@szmarczak/http-timer@npm:4.0.6"
dependencies:
defer-to-connect: "npm:^2.0.0"
checksum: 10c0/73946918c025339db68b09abd91fa3001e87fc749c619d2e9c2003a663039d4c3cb89836c98a96598b3d47dec2481284ba85355392644911f5ecd2336536697f
languageName: node
linkType: hard
"@tanstack/react-virtual@npm:3.11.3":
version: 3.11.3
resolution: "@tanstack/react-virtual@npm:3.11.3"
dependencies:
"@tanstack/virtual-core": "npm:3.11.3"
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
checksum: 10c0/9718379045ecda92d2c59f3c25699c703d98509ea569d7bfb0dbf78f1e0f46f0023d7a5d3a373fb7cdd4507286c1cf47648b5c0f4b1bdb85b2d2a6c26814b884
languageName: node
linkType: hard
"@tanstack/virtual-core@npm:3.11.3":
version: 3.11.3
resolution: "@tanstack/virtual-core@npm:3.11.3"
checksum: 10c0/94701b8d2da9167c8b4ba36bdaff22019b8ebb19224c357c1af16cbc375b39076ecc021a8c9581001607afc921d0a843019cb27168999065dda511c445a1a335
languageName: node
linkType: hard
"@tippyjs/react@npm:^4.2.0":
version: 4.2.6
resolution: "@tippyjs/react@npm:4.2.6"
dependencies:
tippy.js: "npm:^6.3.1"
peerDependencies:
react: ">=16.8"
react-dom: ">=16.8"
checksum: 10c0/b174f2fbd27c16c5a8554ee8b26f3cc61bc37507669a1cef3e3333bfb3db85c84a57a93003c972ede8007786cf0e813d489781aa9caf46fb3bf1b851e3f4daba
languageName: node
linkType: hard
"@turf/along@npm:>=6.3.0":
version: 7.1.0
resolution: "@turf/along@npm:7.1.0"
dependencies:
"@turf/bearing": "npm:^7.1.0"
"@turf/destination": "npm:^7.1.0"
"@turf/distance": "npm:^7.1.0"
"@turf/helpers": "npm:^7.1.0"
"@turf/invariant": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
tslib: "npm:^2.6.2"
checksum: 10c0/c9dad54fe71359b77c7cb8f1717032df26178d99645cd76f762c4381bbf6b556970a96ef8b9d0ae7fd0b2d4a5f9afdff7bc54069f2096d827217eae4d8667b5b
languageName: node
linkType: hard
"@turf/area@npm:>=4.0.0":
version: 7.1.0
resolution: "@turf/area@npm:7.1.0"
dependencies:
"@turf/helpers": "npm:^7.1.0"
"@turf/meta": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
tslib: "npm:^2.6.2"
checksum: 10c0/f7444e75e04be1de6045b22fc723fb254367748ed1a0aa4b2357baed2ef3098a63ef8976b394a9cc03c228ebdc7013982da71f5bd3be4a2a65ef5898c772a135
languageName: node
linkType: hard
"@turf/bbox-polygon@npm:>=4.0.0":
version: 7.1.0
resolution: "@turf/bbox-polygon@npm:7.1.0"
dependencies:
"@turf/helpers": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
tslib: "npm:^2.6.2"
checksum: 10c0/8615161b4e922e92d2e3b8d7aaba291bc376f8f648417b83df7021d123b3d27dfa3fcb7dbe572bf581a8a856715051e160dd11f786ccce734d1e74941def51ca
languageName: node
linkType: hard
"@turf/bbox-polygon@npm:^6.0.1":
version: 6.5.0
resolution: "@turf/bbox-polygon@npm:6.5.0"
dependencies:
"@turf/helpers": "npm:^6.5.0"
checksum: 10c0/1953acb262e459b27f5d6ce71b4b6849c8b4ff04d4146570ee56a4ece43f397eb639b16fddf996f65ccf5bab6b0c197bc475a2e84f3585a4e447a8f3167a32e1
languageName: node
linkType: hard
"@turf/bbox@npm:>=4.0.0, @turf/bbox@npm:^7.1.0":
version: 7.1.0
resolution: "@turf/bbox@npm:7.1.0"
dependencies:
"@turf/helpers": "npm:^7.1.0"
"@turf/meta": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
tslib: "npm:^2.6.2"
checksum: 10c0/901ed437ad1241b1c7cf76ee3f1dd998b32a59647074216d076a62080281693cc3f1d66d1dedd02fd5617ea57434ec059843bcc275d20f667019f3e1f378b05d
languageName: node
linkType: hard
"@turf/bbox@npm:^6.0.1, @turf/bbox@npm:^6.5.0":
version: 6.5.0
resolution: "@turf/bbox@npm:6.5.0"
dependencies:
"@turf/helpers": "npm:^6.5.0"
"@turf/meta": "npm:^6.5.0"
checksum: 10c0/32c705ff0462f9f72fd4c78f013ebf3cbb30127c998770841d41540b246d3f3a73365a714ef335e45a70b9340317f402af76c36dbd64e9d9c2dfc65de71a9f84
languageName: node
linkType: hard
"@turf/bbox@npm:^7.2.0":
version: 7.2.0
resolution: "@turf/bbox@npm:7.2.0"
dependencies:
"@turf/helpers": "npm:^7.2.0"
"@turf/meta": "npm:^7.2.0"
"@types/geojson": "npm:^7946.0.10"
tslib: "npm:^2.8.1"
checksum: 10c0/766d59d5f75c272481e971cd4004e139962607e8f34391b2abfb15bb34f9544a0479ceb14772565e005e4a12fdd82adf0d440ab1c9e0decbde6de50a5706db43
languageName: node
linkType: hard
"@turf/bearing@npm:>=4.0.0, @turf/bearing@npm:^7.1.0":
version: 7.1.0
resolution: "@turf/bearing@npm:7.1.0"
dependencies:
"@turf/helpers": "npm:^7.1.0"
"@turf/invariant": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
tslib: "npm:^2.6.2"
checksum: 10c0/2487615497fea6ba59260f98fb6631826f61cbbd6a0a6358204820fe3bbfde2832e38baad11077cd211e82319c074b86dd6d9e7ee08574fd9bc806f5acd26609
languageName: node
linkType: hard
"@turf/boolean-clockwise@npm:^5.1.5":
version: 5.1.5
resolution: "@turf/boolean-clockwise@npm:5.1.5"
dependencies:
"@turf/helpers": "npm:^5.1.5"
"@turf/invariant": "npm:^5.1.5"
checksum: 10c0/3aa66df49319e7b7fbbf02826d05c3c221b4d416d5e0fa21adc8d3e033d72055d3b1a7f4d319600b6f1d43c04c7e10f387fb490117884de8137c375b7fd2e543
languageName: node
linkType: hard
"@turf/boolean-clockwise@npm:^7.1.0":
version: 7.1.0
resolution: "@turf/boolean-clockwise@npm:7.1.0"
dependencies:
"@turf/helpers": "npm:^7.1.0"
"@turf/invariant": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
tslib: "npm:^2.6.2"
checksum: 10c0/92c2dd7025d35553f6b0759a321367029d74049d5375a4623c9fe372cd56886d6d1e43ba42d2f82121ed90de747f0253edf811198ee572c5c2379a2f4896d243
languageName: node
linkType: hard
"@turf/boolean-point-in-polygon@npm:>=4.0.0":
version: 7.1.0
resolution: "@turf/boolean-point-in-polygon@npm:7.1.0"
dependencies:
"@turf/helpers": "npm:^7.1.0"
"@turf/invariant": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
point-in-polygon-hao: "npm:^1.1.0"
tslib: "npm:^2.6.2"
checksum: 10c0/ad6f66bfe52e15b011ddd074731df4ed2bdbcc14d66a2624f64d8ac0981882e7c39cb10f8c975e4d8bd3e83acae3284ad0abf28db15500fb3865f28d6fe8a8bf
languageName: node
linkType: hard
"@turf/boolean-point-in-polygon@npm:^6.5.0":
version: 6.5.0
resolution: "@turf/boolean-point-in-polygon@npm:6.5.0"
dependencies:
"@turf/helpers": "npm:^6.5.0"
"@turf/invariant": "npm:^6.5.0"
checksum: 10c0/438d53d4056afba0e43c5159554d541fd90d5fcfb0d9a19d6dd4ca5121f75a8f72b1e2c3da8974c752d0729247f37f8b5147c1ffe89ba6b77249154fa108d00e
languageName: node
linkType: hard
"@turf/boolean-point-on-line@npm:^6.5.0":
version: 6.5.0
resolution: "@turf/boolean-point-on-line@npm:6.5.0"
dependencies:
"@turf/helpers": "npm:^6.5.0"
"@turf/invariant": "npm:^6.5.0"
checksum: 10c0/80a9dfd47983e44fb57704e9bcb49cf66d698e93721550c09703345b14d7f1258f34ac2b07b3c3721e3388880ec6367f2a950df4de5b9e006b951d78ad145d79
languageName: node
linkType: hard
"@turf/boolean-within@npm:^6.0.1":
version: 6.5.0
resolution: "@turf/boolean-within@npm:6.5.0"
dependencies:
"@turf/bbox": "npm:^6.5.0"
"@turf/boolean-point-in-polygon": "npm:^6.5.0"
"@turf/boolean-point-on-line": "npm:^6.5.0"
"@turf/helpers": "npm:^6.5.0"
"@turf/invariant": "npm:^6.5.0"
checksum: 10c0/0d9f9bfe6f492735215bbc00050b5d328b0ead797c7d7a300e503194a6a7f05feaf729fa35c0bef921e47efa6a63fdccefdd10665eb04e2edc863a03b7bb270b
languageName: node
linkType: hard
"@turf/buffer@npm:>=4.0.0":
version: 7.1.0
resolution: "@turf/buffer@npm:7.1.0"
dependencies:
"@turf/bbox": "npm:^7.1.0"
"@turf/center": "npm:^7.1.0"
"@turf/helpers": "npm:^7.1.0"
"@turf/jsts": "npm:^2.7.1"
"@turf/meta": "npm:^7.1.0"
"@turf/projection": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
d3-geo: "npm:1.7.1"
checksum: 10c0/2b1a9f4501c1e2c29e56b20df22f63acc567ccd45230acd89a24989bd68178cd482ec06c1561f7f9ae6a749e8d2b3647dd6c97a499c1b406d0e06e1264608bf0
languageName: node
linkType: hard
"@turf/center@npm:>=4.0.0, @turf/center@npm:^7.1.0":
version: 7.1.0
resolution: "@turf/center@npm:7.1.0"
dependencies:
"@turf/bbox": "npm:^7.1.0"
"@turf/helpers": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
tslib: "npm:^2.6.2"
checksum: 10c0/8b797f9a09fe8e21a6debf59f5d57b09494ac0d4d6c02bfa16425c84afbc8c222880ebe9d760d05e09b26733da2d9271214c165d71be4133331092d36bfc0bf0
languageName: node
linkType: hard
"@turf/center@npm:^6.0.1":
version: 6.5.0
resolution: "@turf/center@npm:6.5.0"
dependencies:
"@turf/bbox": "npm:^6.5.0"
"@turf/helpers": "npm:^6.5.0"
checksum: 10c0/5997f022057f526792617491cdf2af11350cd4d03964bb582d7bf775b66ae2b5e5e668a8b9004f831b7c76a7b8004dcd70d66b58572d43a6de0a12468b6af5a2
languageName: node
linkType: hard
"@turf/centroid@npm:>=4.0.0, @turf/centroid@npm:^7.1.0":
version: 7.1.0
resolution: "@turf/centroid@npm:7.1.0"
dependencies:
"@turf/helpers": "npm:^7.1.0"
"@turf/meta": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
tslib: "npm:^2.6.2"
checksum: 10c0/23b29a1d0d668220e975ab2fb8f0594ebd26c89a6399eef539d6d84b091611e8a09380f070957969a51a54f400b2303c23bf6a4a965909316a60f936d97fa0df
languageName: node
linkType: hard
"@turf/circle@npm:>=4.0.0":
version: 7.1.0
resolution: "@turf/circle@npm:7.1.0"
dependencies:
"@turf/destination": "npm:^7.1.0"
"@turf/helpers": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
tslib: "npm:^2.6.2"
checksum: 10c0/7cb9e3cf0a6c717a4fbcc9ded4b0c693fd7fe96026c6bdde55c69c7cd4ccc46f8df1417772c3ef9915438d63528e1c93335aad072591f8b7ffdf8754672ce4e5
languageName: node
linkType: hard
"@turf/clone@npm:^5.1.5":
version: 5.1.5
resolution: "@turf/clone@npm:5.1.5"
dependencies:
"@turf/helpers": "npm:^5.1.5"
checksum: 10c0/8bb5c9266a458e42fc6f8b13977fea5a1c46f7de20ac5e65090134d8f2d130bd313ef04137d6bef62070876593bcee94119369119ab38eeddddacf18e270d900
languageName: node
linkType: hard
"@turf/clone@npm:^7.1.0":
version: 7.1.0
resolution: "@turf/clone@npm:7.1.0"
dependencies:
"@turf/helpers": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
tslib: "npm:^2.6.2"
checksum: 10c0/18cc6fd7f285652e5ad38d432ebdf66fc7ed4b960ff732d35833a12662f1cda442a3ab27a9ac789e9fad8a82aafc917f89ef44a680d52385770af226c2ccdda3
languageName: node
linkType: hard
"@turf/destination@npm:>=4.0.0, @turf/destination@npm:^7.1.0":
version: 7.1.0
resolution: "@turf/destination@npm:7.1.0"
dependencies:
"@turf/helpers": "npm:^7.1.0"
"@turf/invariant": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
tslib: "npm:^2.6.2"
checksum: 10c0/88c11061bf5e12b5bb8fe3ea5bdf7d241ade0dfc8604d8715571ab7da89552940d4fd3a95852d2cce2942ed8a20e745be071330d8ad7c502b5632255a2a4a119
languageName: node
linkType: hard
"@turf/difference@npm:>=4.0.0":
version: 7.1.0
resolution: "@turf/difference@npm:7.1.0"
dependencies:
"@turf/helpers": "npm:^7.1.0"
"@turf/meta": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
polygon-clipping: "npm:^0.15.3"
tslib: "npm:^2.6.2"
checksum: 10c0/e4927996b2e45d111ad727b883993a10712590b792d51a01688de3b4e476bf0ec628886fbb2d0476a490f7b2464e6ef9c316158884dd4f99484440bc5028539a
languageName: node
linkType: hard
"@turf/distance@npm:>=4.0.0, @turf/distance@npm:^7.1.0":
version: 7.1.0
resolution: "@turf/distance@npm:7.1.0"
dependencies:
"@turf/helpers": "npm:^7.1.0"
"@turf/invariant": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
tslib: "npm:^2.6.2"
checksum: 10c0/3eb2ad0eb8a3a754e732fc6cb85aaef7df35d13edc063248bb9313ae267c7d53bc0eef3a5ce536cf7283bf76c49523289889ae1651824e1030ea532dd49310ca
languageName: node
linkType: hard
"@turf/ellipse@npm:>=4.0.0":
version: 7.1.0
resolution: "@turf/ellipse@npm:7.1.0"
dependencies:
"@turf/helpers": "npm:^7.1.0"
"@turf/invariant": "npm:^7.1.0"
"@turf/rhumb-destination": "npm:^7.1.0"
"@turf/transform-rotate": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
tslib: "npm:^2.6.2"
checksum: 10c0/8230425aea1ed1b9f1b55bb12356498c8c58bf4fe294dcecb4a74658fefab5bcf3a7829864810d1b11d6e58599f174ac14bc5ca28ae43099f72c16994bf0dbc9
languageName: node
linkType: hard
"@turf/helpers@npm:>=4.0.0, @turf/helpers@npm:^7.1.0":
version: 7.1.0
resolution: "@turf/helpers@npm:7.1.0"
dependencies:
"@types/geojson": "npm:^7946.0.10"
tslib: "npm:^2.6.2"
checksum: 10c0/0b07c01584d8bee977edec8752109b4f79ab5b149e55a7dbe051e412e150c0a96f2464c9647676a092b7ab4429271eee4a31400ea45e9b55095ae53ad22f43d6
languageName: node
linkType: hard
"@turf/helpers@npm:^5.1.5":
version: 5.1.5
resolution: "@turf/helpers@npm:5.1.5"
checksum: 10c0/f5ed19cddef37fb5098e2509e8472df3afe099dcd6db62b7e541cf37c02c6ea1b13f69c29ff493ded7a1374c1a9b185a87fefee368211934364977dffd48b2e9
languageName: node
linkType: hard
"@turf/helpers@npm:^6.1.4, @turf/helpers@npm:^6.5.0":
version: 6.5.0
resolution: "@turf/helpers@npm:6.5.0"
checksum: 10c0/786cbe0c0027f85db286fb3a0b7be04bb29bd63ec07760a49735ef32e9c5b4a7c059a8f691fafa31c7e0e9be34c281e014dc24077438bae01a09b492a680fb6f
languageName: node
linkType: hard
"@turf/helpers@npm:^7.2.0":
version: 7.2.0
resolution: "@turf/helpers@npm:7.2.0"
dependencies:
"@types/geojson": "npm:^7946.0.10"
tslib: "npm:^2.8.1"
checksum: 10c0/4d6f57164cca00ec7a18e2d3c0200d0274e4ab2b6b3201c6a867b867d899f3f618a82ae242617d467efb04f32740cec150ae06a0e07ee39318397ebc34914687
languageName: node
linkType: hard
"@turf/intersect@npm:>=4.0.0":
version: 7.1.0
resolution: "@turf/intersect@npm:7.1.0"
dependencies:
"@turf/helpers": "npm:^7.1.0"
"@turf/meta": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
polygon-clipping: "npm:^0.15.3"
tslib: "npm:^2.6.2"
checksum: 10c0/de283d539e1ecf285a6b656019d4779915f25104ba00fa5013092cf7f572dec9b431d28577baa5290d52c92904194291c17c653f7572e9dc0c2cdae0e837a670
languageName: node
linkType: hard
"@turf/invariant@npm:^5.1.5":
version: 5.2.0
resolution: "@turf/invariant@npm:5.2.0"
dependencies:
"@turf/helpers": "npm:^5.1.5"
checksum: 10c0/c7d6c81f85d85ce7da5bdbc457a61609a11a54f209f0bb922bcd12c329e9e7855d2b14b2df596c78521193b44c2a92cecf2f50db228546fa1a92beb413a22fbb
languageName: node
linkType: hard
"@turf/invariant@npm:^6.5.0":
version: 6.5.0
resolution: "@turf/invariant@npm:6.5.0"
dependencies:
"@turf/helpers": "npm:^6.5.0"
checksum: 10c0/5ff9f2043d629cc5f6d3df78452632b2213f17931caa34698d9e8c651640508814b3522d4ab747f36a4b9dfaf6ff64eedc3a04ba62c39ddeb6706f052b621dc6
languageName: node
linkType: hard
"@turf/invariant@npm:^7.1.0":
version: 7.1.0
resolution: "@turf/invariant@npm:7.1.0"
dependencies:
"@turf/helpers": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
tslib: "npm:^2.6.2"
checksum: 10c0/63a163ee7babf539af64bd204808979ce45e0d0bf772b3f28cda9fa99ab9c54150ea90d3203ae25cdda1a78eb206faf89db5847dc58ebc0eae8df0dab55822b8
languageName: node
linkType: hard
"@turf/jsts@npm:^2.7.1":
version: 2.7.1
resolution: "@turf/jsts@npm:2.7.1"
dependencies:
jsts: "npm:2.7.1"
checksum: 10c0/d358d7336ea74779d1f4cab025ac0c8a7ed14d9575c0b430b1691570fec05eddef4051f157fe3bf57aebb9e87447dacf780f9a4bb09c10ef44cef457fc74aed0
languageName: node
linkType: hard
"@turf/line-intersect@npm:>=4.0.0, @turf/line-intersect@npm:^7.1.0":
version: 7.1.0
resolution: "@turf/line-intersect@npm:7.1.0"
dependencies:
"@turf/helpers": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
sweepline-intersections: "npm:^1.5.0"
tslib: "npm:^2.6.2"
checksum: 10c0/540871a2b4ba3ecf444d2150053d91f328f851d1eca12a46c51681136ee090020b18ba5f355e4d8cfc81b1b53bd14f2dbfa808203882331a9bfda9ce7504e7c0
languageName: node
linkType: hard
"@turf/meta@npm:^5.1.5":
version: 5.2.0
resolution: "@turf/meta@npm:5.2.0"
dependencies:
"@turf/helpers": "npm:^5.1.5"
checksum: 10c0/fd41fbad84d840bebf75fdf13a4e3dd15b8c600251533073d5f6129a31a42e4f88790ce396492cec69f42ca4365e96d6f7940aeb302daaedcb795dc9414e7adc
languageName: node
linkType: hard
"@turf/meta@npm:^6.5.0":
version: 6.5.0
resolution: "@turf/meta@npm:6.5.0"
dependencies:
"@turf/helpers": "npm:^6.5.0"
checksum: 10c0/9df6cb5af7af98a477ddcd744fb44e4e890fe8a67afa50bb24cad7d9c15af67362d24f1f8890d706a9c369b18285b0ba42430509add769ad868ac452703bb59b
languageName: node
linkType: hard
"@turf/meta@npm:^7.1.0":
version: 7.1.0
resolution: "@turf/meta@npm:7.1.0"
dependencies:
"@turf/helpers": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
checksum: 10c0/c7aa77ddb28ef5068b031c1b422d2d5dc1df51975f727be42e2d8d500a026a2e667242d6aa06453f757cbd5ead2db0ba6b9a5d2fcf5ab496574cd4c0ae4fe325
languageName: node
linkType: hard
"@turf/meta@npm:^7.2.0":
version: 7.2.0
resolution: "@turf/meta@npm:7.2.0"
dependencies:
"@turf/helpers": "npm:^7.2.0"
"@types/geojson": "npm:^7946.0.10"
checksum: 10c0/707ed63ba64fe48769806bf2419f5c0cd2ebf821a6467aeffb784ba7ebd6a63ec98d4192b97915948529c00304ed46ddc83842a80714fb1f2018fd4e3c455498
languageName: node
linkType: hard
"@turf/nearest-point-on-line@npm:>=4.0.0":
version: 7.1.0
resolution: "@turf/nearest-point-on-line@npm:7.1.0"
dependencies:
"@turf/bearing": "npm:^7.1.0"
"@turf/destination": "npm:^7.1.0"
"@turf/distance": "npm:^7.1.0"
"@turf/helpers": "npm:^7.1.0"
"@turf/invariant": "npm:^7.1.0"
"@turf/line-intersect": "npm:^7.1.0"
"@turf/meta": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
tslib: "npm:^2.6.2"
checksum: 10c0/6a9bb7fde7cc4d770ad6555eb3235cb70283b33698fca97c0b5683f3f612c71e4fa355aeeb14283f9cb0c88a73640d90691e3d8c2af0619ce97f801b6eb7208b
languageName: node
linkType: hard
"@turf/point-to-line-distance@npm:>=4.0.0":
version: 7.1.0
resolution: "@turf/point-to-line-distance@npm:7.1.0"
dependencies:
"@turf/bearing": "npm:^7.1.0"
"@turf/distance": "npm:^7.1.0"
"@turf/helpers": "npm:^7.1.0"
"@turf/invariant": "npm:^7.1.0"
"@turf/meta": "npm:^7.1.0"
"@turf/projection": "npm:^7.1.0"
"@turf/rhumb-bearing": "npm:^7.1.0"
"@turf/rhumb-distance": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
tslib: "npm:^2.6.2"
checksum: 10c0/074042dd11caedddb354db95e7fe98f1995c76b087d1930d5dd93e627f428dcc482db484834eda49eecdffe2bf9cb4ac7860d9d13fed2d9a887e589114f129c4
languageName: node
linkType: hard
"@turf/polygon-to-line@npm:>=4.0.0":
version: 7.1.0
resolution: "@turf/polygon-to-line@npm:7.1.0"
dependencies:
"@turf/helpers": "npm:^7.1.0"
"@turf/invariant": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
tslib: "npm:^2.6.2"
checksum: 10c0/84bc472c58722c98e887b52f2a5071c80405dded721e0be4ff43fed104e6c09d2d3f6e48296ae92b0c60ed433c34360e588f066ea4d16de866bdce50000228ef
languageName: node
linkType: hard
"@turf/projection@npm:^7.1.0":
version: 7.1.0
resolution: "@turf/projection@npm:7.1.0"
dependencies:
"@turf/clone": "npm:^7.1.0"
"@turf/helpers": "npm:^7.1.0"
"@turf/meta": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
tslib: "npm:^2.6.2"
checksum: 10c0/269f64e4b61cefe3f5f95911d02fd50956315b478d2f891c705e09b7e5af76104a092794114f41b9b9b2543b2dcdab366360950625854a2613dab2caa88e8673
languageName: node
linkType: hard
"@turf/rewind@npm:>=4.0.0":
version: 7.1.0
resolution: "@turf/rewind@npm:7.1.0"
dependencies:
"@turf/boolean-clockwise": "npm:^7.1.0"
"@turf/clone": "npm:^7.1.0"
"@turf/helpers": "npm:^7.1.0"
"@turf/invariant": "npm:^7.1.0"
"@turf/meta": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
tslib: "npm:^2.6.2"
checksum: 10c0/945063a52ea59b709fba4ad325dd0bd08c595ef4738afcd18238df12317f36c8ebcecf79c4f40dcb7bac10e844f44239fcba8d5111d653efaa81b49822fe34b8
languageName: node
linkType: hard
"@turf/rewind@npm:^5.1.5":
version: 5.1.5
resolution: "@turf/rewind@npm:5.1.5"
dependencies:
"@turf/boolean-clockwise": "npm:^5.1.5"
"@turf/clone": "npm:^5.1.5"
"@turf/helpers": "npm:^5.1.5"
"@turf/invariant": "npm:^5.1.5"
"@turf/meta": "npm:^5.1.5"
checksum: 10c0/503c624ba2b5898daac6937ecf5eaf9f8b1ccd8109233b977adc8aeefbb0a086ff09f0813677b3fdf3d3c1072a9f3f22dfc4c6dc10dfbddf7f063bb4a543ec90
languageName: node
linkType: hard
"@turf/rhumb-bearing@npm:^7.1.0":
version: 7.1.0
resolution: "@turf/rhumb-bearing@npm:7.1.0"
dependencies:
"@turf/helpers": "npm:^7.1.0"
"@turf/invariant": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
tslib: "npm:^2.6.2"
checksum: 10c0/8dddfdbad6972e6381aafc2d2a991dcf0bf6745528b6cb10d9f3b0c5048b6406ff3542ab31b65e8e630bb272fb6d42f70b1b16ee031428f27ac2cd6d3b21b665
languageName: node
linkType: hard
"@turf/rhumb-destination@npm:^7.1.0":
version: 7.1.0
resolution: "@turf/rhumb-destination@npm:7.1.0"
dependencies:
"@turf/helpers": "npm:^7.1.0"
"@turf/invariant": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
tslib: "npm:^2.6.2"
checksum: 10c0/acbdf4b0372ba4fc9987cb4dedb2ddda4f9beaca255da6e6338eba94e9b818dcc9a04e6964ee10ff8777235a9510e8f1a6f231873dcd93bb45c862638d4db789
languageName: node
linkType: hard
"@turf/rhumb-distance@npm:^7.1.0":
version: 7.1.0
resolution: "@turf/rhumb-distance@npm:7.1.0"
dependencies:
"@turf/helpers": "npm:^7.1.0"
"@turf/invariant": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
tslib: "npm:^2.6.2"
checksum: 10c0/fb99cca3e96a04e069c17f314127a6dadbb0070082e046677027181f1238e335717d4273773c6def6a6d88627e21cd16c5b60ef67a4c8f395232cde91ddd2fe1
languageName: node
linkType: hard
"@turf/transform-rotate@npm:>=4.0.0, @turf/transform-rotate@npm:^7.1.0":
version: 7.1.0
resolution: "@turf/transform-rotate@npm:7.1.0"
dependencies:
"@turf/centroid": "npm:^7.1.0"
"@turf/clone": "npm:^7.1.0"
"@turf/helpers": "npm:^7.1.0"
"@turf/invariant": "npm:^7.1.0"
"@turf/meta": "npm:^7.1.0"
"@turf/rhumb-bearing": "npm:^7.1.0"
"@turf/rhumb-destination": "npm:^7.1.0"
"@turf/rhumb-distance": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
tslib: "npm:^2.6.2"
checksum: 10c0/5aaada26a9a63284e60a20cbed5b1f19667104f6690d4ecb8e618c96186f743bb9954f0bb1447b355e07f869342bb5709cc4922b9f857ce32c85a33cf63fe572
languageName: node
linkType: hard
"@turf/transform-scale@npm:>=4.0.0":
version: 7.1.0
resolution: "@turf/transform-scale@npm:7.1.0"
dependencies:
"@turf/bbox": "npm:^7.1.0"
"@turf/center": "npm:^7.1.0"
"@turf/centroid": "npm:^7.1.0"
"@turf/clone": "npm:^7.1.0"
"@turf/helpers": "npm:^7.1.0"
"@turf/invariant": "npm:^7.1.0"
"@turf/meta": "npm:^7.1.0"
"@turf/rhumb-bearing": "npm:^7.1.0"
"@turf/rhumb-destination": "npm:^7.1.0"
"@turf/rhumb-distance": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
tslib: "npm:^2.6.2"
checksum: 10c0/d7b34e40f9e32f50e4b8fdabcc626837b763a1c374fe4dd709f8c8d3f689cf9b634c6bbdf0b31a00d88f902e4c2a814a2cbaef2e0e93e8747fa8c24b5f78fe34
languageName: node
linkType: hard
"@turf/transform-translate@npm:>=4.0.0":
version: 7.1.0
resolution: "@turf/transform-translate@npm:7.1.0"
dependencies:
"@turf/clone": "npm:^7.1.0"
"@turf/helpers": "npm:^7.1.0"
"@turf/invariant": "npm:^7.1.0"
"@turf/meta": "npm:^7.1.0"
"@turf/rhumb-destination": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
tslib: "npm:^2.6.2"
checksum: 10c0/3776f9ddfcab819799c81a8ea3163c0f4d7a245df4cd0622b259ca8d270397c90d427b76b15087f25aa3a5af59aea8d0db7f1d99a1ab9052ac91d61b386cdf7c
languageName: node
linkType: hard
"@turf/union@npm:>=4.0.0":
version: 7.1.0
resolution: "@turf/union@npm:7.1.0"
dependencies:
"@turf/helpers": "npm:^7.1.0"
"@turf/meta": "npm:^7.1.0"
"@types/geojson": "npm:^7946.0.10"
polygon-clipping: "npm:^0.15.3"
tslib: "npm:^2.6.2"
checksum: 10c0/1c60c87a83ab0cb45b952b74e761eedd52f2f148bda4e96ccee7c5c63038ac6d99142d5a5a772e1a49fe66ce8a1344537f4e192991e1fd3214cb406cd7cdd398
languageName: node
linkType: hard
"@types/brotli@npm:^1.3.0":
version: 1.3.4
resolution: "@types/brotli@npm:1.3.4"
dependencies:
"@types/node": "npm:*"
checksum: 10c0/b13829301b3ee79250d3fa8b1973097837bdd040fb90c90f63f406385e62b8e06e72a41e77939c6f8118090a7c72215b0d7b4d83b1e69457616810a65a576339
languageName: node
linkType: hard
"@types/bson@npm:4.2.0":
version: 4.2.0
resolution: "@types/bson@npm:4.2.0"
dependencies:
bson: "npm:*"
checksum: 10c0/06f226fa7d033badf3b0a90cd31fc720e82637b513282bf843732bdf3e8127a81dd0050cf95acd324e8812be6d16726c859c3f9dbf1d0e5e4d2e092a2cdff37d
languageName: node
linkType: hard
"@types/cacheable-request@npm:^6.0.1":
version: 6.0.3
resolution: "@types/cacheable-request@npm:6.0.3"
dependencies:
"@types/http-cache-semantics": "npm:*"
"@types/keyv": "npm:^3.1.4"
"@types/node": "npm:*"
"@types/responselike": "npm:^1.0.0"
checksum: 10c0/10816a88e4e5b144d43c1d15a81003f86d649776c7f410c9b5e6579d0ad9d4ca71c541962fb403077388b446e41af7ae38d313e46692144985f006ac5e11fa03
languageName: node
linkType: hard
"@types/classnames@npm:^2.3.1":
version: 2.3.1
resolution: "@types/classnames@npm:2.3.1"
dependencies:
classnames: "npm:*"
checksum: 10c0/6b71e5220aa3f04dbe1eba910f7755b880a2c6e3ba0ebf71fe73db99d58628022de06340a029c97db093e31d7981bc695b6c2ce65b2a58492d245e2cbe44a47d
languageName: node
linkType: hard
"@types/command-line-args@npm:^5.2.3":
version: 5.2.3
resolution: "@types/command-line-args@npm:5.2.3"
checksum: 10c0/3a9bc58fd26e546391f6369dd28c03d59349dc4ac39eada1a5c39cc3578e02e4aac222615170e0db79b198ffba2af84fdbdda46e08c6edc4da42bc17ea85200f
languageName: node
linkType: hard
"@types/command-line-usage@npm:^5.0.4":
version: 5.0.4
resolution: "@types/command-line-usage@npm:5.0.4"
checksum: 10c0/67840ebf4bcfee200c07d978669ad596fe2adc350fd5c19d44ec2248623575d96ec917f513d1d59453f8f57e879133861a4cc41c20045c07f6c959f1fcaac7ad
languageName: node
linkType: hard
"@types/d3-array@npm:^2.8.0":
version: 2.12.7
resolution: "@types/d3-array@npm:2.12.7"
checksum: 10c0/31f9fc63e14de866630c526ac479b0854ad936b699fdd6a43df52628861ee50faddd6973e27cd3531193fc061c072810b0a07443921cb89e213988262c185312
languageName: node
linkType: hard
"@types/d3-brush@npm:^3.0.1":
version: 3.0.6
resolution: "@types/d3-brush@npm:3.0.6"
dependencies:
"@types/d3-selection": "npm:*"
checksum: 10c0/fd6e2ac7657a354f269f6b9c58451ffae9d01b89ccb1eb6367fd36d635d2f1990967215ab498e0c0679ff269429c57fad6a2958b68f4d45bc9f81d81672edc01
languageName: node
linkType: hard
"@types/d3-scale@npm:^3.2.2":
version: 3.3.5
resolution: "@types/d3-scale@npm:3.3.5"
dependencies:
"@types/d3-time": "npm:^2"
checksum: 10c0/2689ab13092e3fded22cdd1b888afd91aa60190be40c8eddc12b2d42de59b00917778340f90317c68c5ffc3a1bee68f5ca155434cd466bc7804f400f3f9e7529
languageName: node
linkType: hard
"@types/d3-selection@npm:*, @types/d3-selection@npm:^3.0.2":
version: 3.0.10
resolution: "@types/d3-selection@npm:3.0.10"
checksum: 10c0/de1f99ab186a08999bf394a645fd76911add1b02316270d4c07616c8383903a2b068d7e02b73b6a99a1f26bb49a2e99ef4b55a5d2ddfa165f6f3c53144897920
languageName: node
linkType: hard
"@types/d3-time@npm:^2":
version: 2.1.4
resolution: "@types/d3-time@npm:2.1.4"
checksum: 10c0/b597bfa51a163d4231e953d6903b06fd6341d0f11a28222a79fafaddb46155d7f458a67c814de53df84926a47dd535897228a475679d228576b0cda87351e534
languageName: node
linkType: hard
"@types/debug@npm:^4.0.0":
version: 4.1.12
resolution: "@types/debug@npm:4.1.12"
dependencies:
"@types/ms": "npm:*"
checksum: 10c0/5dcd465edbb5a7f226e9a5efd1f399c6172407ef5840686b73e3608ce135eeca54ae8037dcd9f16bdb2768ac74925b820a8b9ecc588a58ca09eca6acabe33e2f
languageName: node
linkType: hard
"@types/diff-match-patch@npm:^1.0.36":
version: 1.0.36
resolution: "@types/diff-match-patch@npm:1.0.36"
checksum: 10c0/0bad011ab138baa8bde94e7815064bb881f010452463272644ddbbb0590659cb93f7aa2776ff442c6721d70f202839e1053f8aa62d801cc4166f7a3ea9130055
languageName: node
linkType: hard
"@types/estree-jsx@npm:^1.0.0":
version: 1.0.5
resolution: "@types/estree-jsx@npm:1.0.5"
dependencies:
"@types/estree": "npm:*"
checksum: 10c0/07b354331516428b27a3ab99ee397547d47eb223c34053b48f84872fafb841770834b90cc1a0068398e7c7ccb15ec51ab00ec64b31dc5e3dbefd624638a35c6d
languageName: node
linkType: hard
"@types/estree@npm:*, @types/estree@npm:^1.0.0":
version: 1.0.7
resolution: "@types/estree@npm:1.0.7"
checksum: 10c0/be815254316882f7c40847336cd484c3bc1c3e34f710d197160d455dc9d6d050ffbf4c3bc76585dba86f737f020ab20bdb137ebe0e9116b0c86c7c0342221b8c
languageName: node
linkType: hard
"@types/exenv@npm:^1.2.0":
version: 1.2.2
resolution: "@types/exenv@npm:1.2.2"
checksum: 10c0/1d90ba53911ef8b3ddc4d2a4933879e2c9741391de02189f7df9b99f5dea3636ed79bfd07d549fa2b82dfd771d812cd814331107bbfff627eef3d5526277707f
languageName: node
linkType: hard
"@types/geojson@npm:*, @types/geojson@npm:^7946.0.10, @types/geojson@npm:^7946.0.13, @types/geojson@npm:^7946.0.7, @types/geojson@npm:^7946.0.8":
version: 7946.0.14
resolution: "@types/geojson@npm:7946.0.14"
checksum: 10c0/54f3997708fa2970c03eeb31f7e4540a0eb6387b15e9f8a60513a1409c23cafec8d618525404573468b59c6fecbfd053724b3327f7fca416729c26271d799f55
languageName: node
linkType: hard
"@types/hammerjs@npm:^2.0.36, @types/hammerjs@npm:^2.0.41":
version: 2.0.45
resolution: "@types/hammerjs@npm:2.0.45"
checksum: 10c0/1f01e3d0260e3cb824fd0ae32c9a8e1b3727e53ef31682612a0a282c4a84bb758dd30b04749b2ae91e621443c80bfe541b38e91e33308f9dea5d9ac92bd0e854
languageName: node
linkType: hard
"@types/hast@npm:^3.0.0":
version: 3.0.4
resolution: "@types/hast@npm:3.0.4"
dependencies:
"@types/unist": "npm:*"
checksum: 10c0/3249781a511b38f1d330fd1e3344eed3c4e7ea8eff82e835d35da78e637480d36fad37a78be5a7aed8465d237ad0446abc1150859d0fde395354ea634decf9f7
languageName: node
linkType: hard
"@types/hoist-non-react-statics@npm:*, @types/hoist-non-react-statics@npm:^3.3.0, @types/hoist-non-react-statics@npm:^3.3.1":
version: 3.3.5
resolution: "@types/hoist-non-react-statics@npm:3.3.5"
dependencies:
"@types/react": "npm:*"
hoist-non-react-statics: "npm:^3.3.0"
checksum: 10c0/2a3b64bf3d9817d7830afa60ee314493c475fb09570a64e7737084cd482d2177ebdddf888ce837350bac51741278b077683facc9541f052d4bbe8487b4e3e618
languageName: node
linkType: hard
"@types/http-cache-semantics@npm:*":
version: 4.0.4
resolution: "@types/http-cache-semantics@npm:4.0.4"
checksum: 10c0/51b72568b4b2863e0fe8d6ce8aad72a784b7510d72dc866215642da51d84945a9459fa89f49ec48f1e9a1752e6a78e85a4cda0ded06b1c73e727610c925f9ce6
languageName: node
linkType: hard
"@types/keymirror@npm:^0.1.1":
version: 0.1.4
resolution: "@types/keymirror@npm:0.1.4"
checksum: 10c0/f3c66ae8a2d786728cb91004e9a4d016c6df31478976b2e3d73d70b7fb6d8ca55216045973768be9a57f4c29a6ce70a18e1ff2205230831c8e509ed1b977f338
languageName: node
linkType: hard
"@types/keyv@npm:^3.1.4":
version: 3.1.4
resolution: "@types/keyv@npm:3.1.4"
dependencies:
"@types/node": "npm:*"
checksum: 10c0/ff8f54fc49621210291f815fe5b15d809fd7d032941b3180743440bd507ecdf08b9e844625fa346af568c84bf34114eb378dcdc3e921a08ba1e2a08d7e3c809c
languageName: node
linkType: hard
"@types/leaflet@npm:^1.9.8":
version: 1.9.16
resolution: "@types/leaflet@npm:1.9.16"
dependencies:
"@types/geojson": "npm:*"
checksum: 10c0/80403093b918ed19911997dc8ebe1aac44f49ada065f5b60ea451f6b8c92ffc942ef49706f7faa1a4e7c62824390a44d407bd5b1a9cfbbaea82c1501129c919a
languageName: node
linkType: hard
"@types/lodash.debounce@npm:^4.0.7":
version: 4.0.9
resolution: "@types/lodash.debounce@npm:4.0.9"
dependencies:
"@types/lodash": "npm:*"
checksum: 10c0/9fbb24e5e52616faf60ba5c82d8c6517f4b86fc6e9ab353b4c56c0760f63d9bf53af3f2d8f6c37efa48090359fb96dba1087d497758511f6c40677002191d042
languageName: node
linkType: hard
"@types/lodash@npm:*":
version: 4.17.7
resolution: "@types/lodash@npm:4.17.7"
checksum: 10c0/40c965b5ffdcf7ff5c9105307ee08b782da228c01b5c0529122c554c64f6b7168fc8f11dc79aa7bae4e67e17efafaba685dc3a47e294dbf52a65ed2b67100561
languageName: node
linkType: hard
"@types/lodash@npm:4.17.5":
version: 4.17.5
resolution: "@types/lodash@npm:4.17.5"
checksum: 10c0/55924803ed853e72261512bd3eaf2c5b16558c3817feb0a3125ef757afe46e54b86f33d1960e40b7606c0ddab91a96f47966bf5e6006b7abfd8994c13b04b19b
languageName: node
linkType: hard
"@types/mapbox-gl@npm:*, @types/mapbox-gl@npm:>=1.0.0":
version: 3.4.0
resolution: "@types/mapbox-gl@npm:3.4.0"
dependencies:
"@types/geojson": "npm:*"
checksum: 10c0/62f293bc29cb31596cf1749a2d0ff79fc52a48921ea450bf7922ce52faca3343b757ec7a75b9c6210310899df9e8956a146a044bc4c299a84fd69331444ee8b7
languageName: node
linkType: hard
"@types/mapbox__point-geometry@npm:*, @types/mapbox__point-geometry@npm:^0.1.4":
version: 0.1.4
resolution: "@types/mapbox__point-geometry@npm:0.1.4"
checksum: 10c0/670191664ea0a6ccb4563500fe815a9aba029ba2f0528d42f9eb560ccb44f6542ba8674e2a3f6d41bd10ad8855b4df4782b5340c980ca182ef9fe6752f2737b8
languageName: node
linkType: hard
"@types/mapbox__vector-tile@npm:^1.3.4":
version: 1.3.4
resolution: "@types/mapbox__vector-tile@npm:1.3.4"
dependencies:
"@types/geojson": "npm:*"
"@types/mapbox__point-geometry": "npm:*"
"@types/pbf": "npm:*"
checksum: 10c0/082907ed9cf96b82327dabf3b4c3a14746a825e4a81f0abf46b50e2557f25cbda652725d8af002e5edcc344a83c85e1a4b71a2d39ef4d829c243344a85ac13a6
languageName: node
linkType: hard
"@types/mdast@npm:^4.0.0":
version: 4.0.4
resolution: "@types/mdast@npm:4.0.4"
dependencies:
"@types/unist": "npm:*"
checksum: 10c0/84f403dbe582ee508fd9c7643ac781ad8597fcbfc9ccb8d4715a2c92e4545e5772cbd0dbdf18eda65789386d81b009967fdef01b24faf6640f817287f54d9c82
languageName: node
linkType: hard
"@types/minimist@npm:^1.2.0":
version: 1.2.5
resolution: "@types/minimist@npm:1.2.5"
checksum: 10c0/3f791258d8e99a1d7d0ca2bda1ca6ea5a94e5e7b8fc6cde84dd79b0552da6fb68ade750f0e17718f6587783c24254bbca0357648dd59dc3812c150305cabdc46
languageName: node
linkType: hard
"@types/ms@npm:*":
version: 2.1.0
resolution: "@types/ms@npm:2.1.0"
checksum: 10c0/5ce692ffe1549e1b827d99ef8ff71187457e0eb44adbae38fdf7b9a74bae8d20642ee963c14516db1d35fa2652e65f47680fdf679dcbde52bbfadd021f497225
languageName: node
linkType: hard
"@types/node-fetch@npm:^2.6.4":
version: 2.6.12
resolution: "@types/node-fetch@npm:2.6.12"
dependencies:
"@types/node": "npm:*"
form-data: "npm:^4.0.0"
checksum: 10c0/7693acad5499b7df2d1727d46cff092a63896dc04645f36b973dd6dd754a59a7faba76fcb777bdaa35d80625c6a9dd7257cca9c401a4bab03b04480cda7fd1af
languageName: node
linkType: hard
"@types/node@npm:*":
version: 22.4.1
resolution: "@types/node@npm:22.4.1"
dependencies:
undici-types: "npm:~6.19.2"
checksum: 10c0/e42607438fcbd3a6aebd09084868fa0b22a4b0daf9eda79ed615df7ff8ae95e35ea56e090e1f3140ebae76b640abe42d4a6d5b60c0819eadf499adca737305b6
languageName: node
linkType: hard
"@types/node@npm:^18.11.18":
version: 18.19.71
resolution: "@types/node@npm:18.19.71"
dependencies:
undici-types: "npm:~5.26.4"
checksum: 10c0/9f9b4a1c4e2db2994ef36f165322b3bb807466e3f92751ed52a40af0212917bc6ecd12dc6775eb829176b71b26570bea9c6a0a2d9e3ae6b496721c71934244db
languageName: node
linkType: hard
"@types/node@npm:^20.13.0":
version: 20.16.1
resolution: "@types/node@npm:20.16.1"
dependencies:
undici-types: "npm:~6.19.2"
checksum: 10c0/cac13c0f42467df3254805a671ca9e74a6eb7c41568de972e26b10dcc448a45743aaf00e9e5fce4a9214da5bc8444fe902918e105dac5a224e24e83fd9989a97
languageName: node
linkType: hard
"@types/normalize-package-data@npm:^2.4.0":
version: 2.4.4
resolution: "@types/normalize-package-data@npm:2.4.4"
checksum: 10c0/aef7bb9b015883d6f4119c423dd28c4bdc17b0e8a0ccf112c78b4fe0e91fbc4af7c6204b04bba0e199a57d2f3fbbd5b4a14bf8739bf9d2a39b2a0aad545e0f86
languageName: node
linkType: hard
"@types/offscreencanvas@npm:^2019.7.0":
version: 2019.7.3
resolution: "@types/offscreencanvas@npm:2019.7.3"
checksum: 10c0/6d1dfae721d321cd2b5435f347a0e53b09f33b2f9e9333396480f592823bc323847b8169f7d251d2285cb93dbc1ba2e30741ac5cf4b1c003d660fd4c24526963
languageName: node
linkType: hard
"@types/pako@npm:^1.0.1":
version: 1.0.7
resolution: "@types/pako@npm:1.0.7"
checksum: 10c0/1ba133db0b30a974c3d651c85651fd30135f629727b4b4d7ef2649c8f8b01014d5ef41f75399d939e320a50bfa87c32beccbb513badfeaf85d74ea6d5370fdcc
languageName: node
linkType: hard
"@types/pbf@npm:*, @types/pbf@npm:^3.0.5":
version: 3.0.5
resolution: "@types/pbf@npm:3.0.5"
checksum: 10c0/c32348c6c81e6c31fe4a1f59983e3a9904727b809fb1e5ddec4fad49abaf93070ec26ee0c04c6516536c181c945b3c7d9e226549eaac3b2e12cb7b57f549a49c
languageName: node
linkType: hard
"@types/prop-types@npm:*":
version: 15.7.12
resolution: "@types/prop-types@npm:15.7.12"
checksum: 10c0/1babcc7db6a1177779f8fde0ccc78d64d459906e6ef69a4ed4dd6339c920c2e05b074ee5a92120fe4e9d9f1a01c952f843ebd550bee2332fc2ef81d1706878f8
languageName: node
linkType: hard
"@types/react-copy-to-clipboard@npm:^5.0.2":
version: 5.0.7
resolution: "@types/react-copy-to-clipboard@npm:5.0.7"
dependencies:
"@types/react": "npm:*"
checksum: 10c0/33bea4549fa263b597d0dedb3807f99286d8ccf59adb370e3d82d1c9075195925a343982abd73c63cc47854a7240ddae79873a5cb3590c9b33c1b65bf9d07689
languageName: node
linkType: hard
"@types/react-dom@npm:^18.0.11":
version: 18.3.0
resolution: "@types/react-dom@npm:18.3.0"
dependencies:
"@types/react": "npm:*"
checksum: 10c0/6c90d2ed72c5a0e440d2c75d99287e4b5df3e7b011838cdc03ae5cd518ab52164d86990e73246b9d812eaf02ec351d74e3b4f5bd325bf341e13bf980392fd53b
languageName: node
linkType: hard
"@types/react-lifecycles-compat@npm:^3.0.1":
version: 3.0.4
resolution: "@types/react-lifecycles-compat@npm:3.0.4"
dependencies:
"@types/react": "npm:*"
checksum: 10c0/3c33fcd7d52d44031b21cf8a6ae9c0f208fe3b972ee4f03fcbe4509d2c50da474bfdd3330f5a09046b7fd63a1f7f23b194bc8d774823c1981cc13929744b90d2
languageName: node
linkType: hard
"@types/react-map-gl@npm:^6.1.3":
version: 6.1.6
resolution: "@types/react-map-gl@npm:6.1.6"
dependencies:
"@types/geojson": "npm:*"
"@types/mapbox-gl": "npm:*"
"@types/react": "npm:*"
"@types/viewport-mercator-project": "npm:*"
checksum: 10c0/caf1dc92a90d6a2a8d31945de3e7b7df190dbd1b56da12740f74f4cf0ae328adc0046230fc05fcba4abfc2dd904818a16b3e211cb6edf4180be49f32fc27286c
languageName: node
linkType: hard
"@types/react-modal@npm:^3.16.3":
version: 3.16.3
resolution: "@types/react-modal@npm:3.16.3"
dependencies:
"@types/react": "npm:*"
checksum: 10c0/dfcf52fa4b5d5c203aa47ffaafade369836cb9f891e9b60e7056bf5fdfc508ebec7971bb3d4c4018f422953c1c79948755ef19da3e816c28d7c5fdacf9466af8
languageName: node
linkType: hard
"@types/react-redux@npm:^7.1.23":
version: 7.1.33
resolution: "@types/react-redux@npm:7.1.33"
dependencies:
"@types/hoist-non-react-statics": "npm:^3.3.0"
"@types/react": "npm:*"
hoist-non-react-statics: "npm:^3.3.0"
redux: "npm:^4.0.0"
checksum: 10c0/e17a2fea00c6ab5f22868e927b4da7b7cf8dc7c85102638fa0f87e12ae0ec13335d9b3bf75098b3316dd8d2a18c99fe08bed22daa989a13f3710c4530f7b979e
languageName: node
linkType: hard
"@types/react-virtualized@npm:^9.21.30":
version: 9.22.0
resolution: "@types/react-virtualized@npm:9.22.0"
dependencies:
"@types/prop-types": "npm:*"
"@types/react": "npm:*"
checksum: 10c0/dede58499c90fbc2042e58a3c7192a92b8bc61fed0589a95911d2a0726f202fa0bd87c9fc68e861ce0a6a034a7460a195b291ff49465a3b620e9f630bfdc9246
languageName: node
linkType: hard
"@types/react-vis@npm:1.11.7":
version: 1.11.7
resolution: "@types/react-vis@npm:1.11.7"
dependencies:
"@types/react": "npm:*"
checksum: 10c0/beddf4062c64aef8e5fcfe07debad3ae128e8a8bbc76fbd7d89b0604d4f242c9ef78d29357806b6d464a610b415f948d0981a1e65b4de9b72b9c3d3d23497daa
languageName: node
linkType: hard
"@types/react@npm:*, @types/react@npm:16 || 17 || 18, @types/react@npm:^18.0.28":
version: 18.3.4
resolution: "@types/react@npm:18.3.4"
dependencies:
"@types/prop-types": "npm:*"
csstype: "npm:^3.0.2"
checksum: 10c0/5c52e1e6f540cff21e3c2a5212066d02e005f6fb21e4a536a29097fae878db9f407cd7a4b43778f51359349c5f692e08bc77ddb5f5cecbfca9ca4d4e3c91a48e
languageName: node
linkType: hard
"@types/redux-actions@npm:^2.6.2":
version: 2.6.5
resolution: "@types/redux-actions@npm:2.6.5"
checksum: 10c0/0b1a4da8448f90b777c227a26a04864dda6fae5d31b627e01a51f36d0ab6e9aa17b6ac5fb12f9ad3bdf122303c9ecb6b7ea11952cff0aaa3456dd040e8401041
languageName: node
linkType: hard
"@types/responselike@npm:^1.0.0":
version: 1.0.3
resolution: "@types/responselike@npm:1.0.3"
dependencies:
"@types/node": "npm:*"
checksum: 10c0/a58ba341cb9e7d74f71810a88862da7b2a6fa42e2a1fc0ce40498f6ea1d44382f0640117057da779f74c47039f7166bf48fad02dc876f94e005c7afa50f5e129
languageName: node
linkType: hard
"@types/retry@npm:0.12.0":
version: 0.12.0
resolution: "@types/retry@npm:0.12.0"
checksum: 10c0/7c5c9086369826f569b83a4683661557cab1361bac0897a1cefa1a915ff739acd10ca0d62b01071046fe3f5a3f7f2aec80785fe283b75602dc6726781ea3e328
languageName: node
linkType: hard
"@types/styled-components@npm:^5.1.32":
version: 5.1.34
resolution: "@types/styled-components@npm:5.1.34"
dependencies:
"@types/hoist-non-react-statics": "npm:*"
"@types/react": "npm:*"
csstype: "npm:^3.0.2"
checksum: 10c0/5bce93ea2c6161fc45daaf863eefdc20672e839ae486597c40b95e7978e249c160c1bc9706f56cb5152a7ef63cf485d15a9502889169ef945281f511e4b2d5a0
languageName: node
linkType: hard
"@types/stylis@npm:4.2.0":
version: 4.2.0
resolution: "@types/stylis@npm:4.2.0"
checksum: 10c0/c76c13e76ca485f598a13984cfb5e07bb88a851da5bee213587424a5f101f182c74f4f92d633cebf9abcec40ccebb645d600d184b7e4b42793e3eeca8729b110
languageName: node
linkType: hard
"@types/supercluster@npm:^7.1.0, @types/supercluster@npm:^7.1.3":
version: 7.1.3
resolution: "@types/supercluster@npm:7.1.3"
dependencies:
"@types/geojson": "npm:*"
checksum: 10c0/0d55dad98df0990fc38a7bb64dc23dda46014187c0d7638e6f2b6717ba8931b13e5b1d394789833a2ac822014c977ef64623dffd81a0bbf39e52c53c8183741f
languageName: node
linkType: hard
"@types/unist@npm:*, @types/unist@npm:^3.0.0":
version: 3.0.3
resolution: "@types/unist@npm:3.0.3"
checksum: 10c0/2b1e4adcab78388e088fcc3c0ae8700f76619dbcb4741d7d201f87e2cb346bfc29a89003cfea2d76c996e1061452e14fcd737e8b25aacf949c1f2d6b2bc3dd60
languageName: node
linkType: hard
"@types/unist@npm:^2.0.0":
version: 2.0.11
resolution: "@types/unist@npm:2.0.11"
checksum: 10c0/24dcdf25a168f453bb70298145eb043cfdbb82472db0bc0b56d6d51cd2e484b9ed8271d4ac93000a80da568f2402e9339723db262d0869e2bf13bc58e081768d
languageName: node
linkType: hard
"@types/use-sync-external-store@npm:^0.0.3":
version: 0.0.3
resolution: "@types/use-sync-external-store@npm:0.0.3"
checksum: 10c0/82824c1051ba40a00e3d47964cdf4546a224e95f172e15a9c62aa3f118acee1c7518b627a34f3aa87298a2039f982e8509f92bfcc18bea7c255c189c293ba547
languageName: node
linkType: hard
"@types/uuid@npm:^10.0.0":
version: 10.0.0
resolution: "@types/uuid@npm:10.0.0"
checksum: 10c0/9a1404bf287164481cb9b97f6bb638f78f955be57c40c6513b7655160beb29df6f84c915aaf4089a1559c216557dc4d2f79b48d978742d3ae10b937420ddac60
languageName: node
linkType: hard
"@types/viewport-mercator-project@npm:*":
version: 6.1.6
resolution: "@types/viewport-mercator-project@npm:6.1.6"
dependencies:
gl-matrix: "npm:^3.2.0"
checksum: 10c0/8671280edbe719b6649a682310113c9a86a98f7e990cebe38d928d8eb1d64216e20ba0b3117735f22df621c3fd6d2bf78de992f3416c365030ed07baaefaa0a6
languageName: node
linkType: hard
"@ungap/structured-clone@npm:^1.0.0":
version: 1.3.0
resolution: "@ungap/structured-clone@npm:1.3.0"
checksum: 10c0/0fc3097c2540ada1fc340ee56d58d96b5b536a2a0dab6e3ec17d4bfc8c4c86db345f61a375a8185f9da96f01c69678f836a2b57eeaa9e4b8eeafd26428e57b0a
languageName: node
linkType: hard
"@wojtekmaj/date-utils@npm:^1.1.3, @wojtekmaj/date-utils@npm:^1.5.0":
version: 1.5.1
resolution: "@wojtekmaj/date-utils@npm:1.5.1"
checksum: 10c0/7c213cca5ab6b84ef61b9aea2b9fb8a04bf4c9764b28a97ffc4ee46a3e81560532a74d106a6f8aeef4792e1aaa6ea3dfd3c4a639dddbea560eb3f33cd62b8d7d
languageName: node
linkType: hard
"abbrev@npm:^2.0.0":
version: 2.0.0
resolution: "abbrev@npm:2.0.0"
checksum: 10c0/f742a5a107473946f426c691c08daba61a1d15942616f300b5d32fd735be88fef5cba24201757b6c407fd564555fb48c751cfa33519b2605c8a7aadd22baf372
languageName: node
linkType: hard
"abort-controller@npm:^3.0.0":
version: 3.0.0
resolution: "abort-controller@npm:3.0.0"
dependencies:
event-target-shim: "npm:^5.0.0"
checksum: 10c0/90ccc50f010250152509a344eb2e71977fbf8db0ab8f1061197e3275ddf6c61a41a6edfd7b9409c664513131dd96e962065415325ef23efa5db931b382d24ca5
languageName: node
linkType: hard
"agent-base@npm:^7.1.0, agent-base@npm:^7.1.2":
version: 7.1.3
resolution: "agent-base@npm:7.1.3"
checksum: 10c0/6192b580c5b1d8fb399b9c62bf8343d76654c2dd62afcb9a52b2cf44a8b6ace1e3b704d3fe3547d91555c857d3df02603341ff2cb961b9cfe2b12f9f3c38ee11
languageName: node
linkType: hard
"agentkeepalive@npm:^4.2.1":
version: 4.6.0
resolution: "agentkeepalive@npm:4.6.0"
dependencies:
humanize-ms: "npm:^1.2.1"
checksum: 10c0/235c182432f75046835b05f239708107138a40103deee23b6a08caee5136873709155753b394ec212e49e60e94a378189562cb01347765515cff61b692c69187
languageName: node
linkType: hard
"ai@npm:^4.3.13":
version: 4.3.13
resolution: "ai@npm:4.3.13"
dependencies:
"@ai-sdk/provider": "npm:1.1.3"
"@ai-sdk/provider-utils": "npm:2.2.7"
"@ai-sdk/react": "npm:1.2.11"
"@ai-sdk/ui-utils": "npm:1.2.10"
"@opentelemetry/api": "npm:1.9.0"
jsondiffpatch: "npm:0.6.0"
peerDependencies:
react: ^18 || ^19 || ^19.0.0-rc
zod: ^3.23.8
peerDependenciesMeta:
react:
optional: true
checksum: 10c0/b142a4794fc6c387967b9e1d283290bda14bac69ffc9d35128c81c801dffc24a6e7e2eda1276282ce7bbc03fc6e5dd08723160ab0dd36e667eb2ccbbfa169b7a
languageName: node
linkType: hard
"ai@npm:^4.3.16":
version: 4.3.16
resolution: "ai@npm:4.3.16"
dependencies:
"@ai-sdk/provider": "npm:1.1.3"
"@ai-sdk/provider-utils": "npm:2.2.8"
"@ai-sdk/react": "npm:1.2.12"
"@ai-sdk/ui-utils": "npm:1.2.11"
"@opentelemetry/api": "npm:1.9.0"
jsondiffpatch: "npm:0.6.0"
peerDependencies:
react: ^18 || ^19 || ^19.0.0-rc
zod: ^3.23.8
peerDependenciesMeta:
react:
optional: true
checksum: 10c0/befe761c9386cda6de33370a2590900352b444d81959255c624e2bfd40765f126d29269f0ef3e00bde07daf237004aa0b66d0b253664aa478c148e923ce78c41
languageName: node
linkType: hard
"ai@npm:^4.3.19":
version: 4.3.19
resolution: "ai@npm:4.3.19"
dependencies:
"@ai-sdk/provider": "npm:1.1.3"
"@ai-sdk/provider-utils": "npm:2.2.8"
"@ai-sdk/react": "npm:1.2.12"
"@ai-sdk/ui-utils": "npm:1.2.11"
"@opentelemetry/api": "npm:1.9.0"
jsondiffpatch: "npm:0.6.0"
peerDependencies:
react: ^18 || ^19 || ^19.0.0-rc
zod: ^3.23.8
peerDependenciesMeta:
react:
optional: true
checksum: 10c0/738ac453b3e61b2f2282941fe8af946c42696fbdcffa5ac213823377bcddf475f26923cf2ca5656d5655e5c351e355e1af62dcb04a6df6139b67bac650b01af2
languageName: node
linkType: hard
"almost-equal@npm:^1.1.0":
version: 1.1.0
resolution: "almost-equal@npm:1.1.0"
checksum: 10c0/169f50ec565cafcb99043532789c982da1f5b82abb49cf6376d3c2b989e27b6455004f854b26b25086fc5579e4186994d8de64dae29d171f9f7593f43f8c6aa2
languageName: node
linkType: hard
"ansi-regex@npm:^5.0.1":
version: 5.0.1
resolution: "ansi-regex@npm:5.0.1"
checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737
languageName: node
linkType: hard
"ansi-regex@npm:^6.0.1":
version: 6.1.0
resolution: "ansi-regex@npm:6.1.0"
checksum: 10c0/a91daeddd54746338478eef88af3439a7edf30f8e23196e2d6ed182da9add559c601266dbef01c2efa46a958ad6f1f8b176799657616c702b5b02e799e7fd8dc
languageName: node
linkType: hard
"ansi-styles@npm:^3.2.1":
version: 3.2.1
resolution: "ansi-styles@npm:3.2.1"
dependencies:
color-convert: "npm:^1.9.0"
checksum: 10c0/ece5a8ef069fcc5298f67e3f4771a663129abd174ea2dfa87923a2be2abf6cd367ef72ac87942da00ce85bd1d651d4cd8595aebdb1b385889b89b205860e977b
languageName: node
linkType: hard
"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0":
version: 4.3.0
resolution: "ansi-styles@npm:4.3.0"
dependencies:
color-convert: "npm:^2.0.1"
checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041
languageName: node
linkType: hard
"ansi-styles@npm:^5.0.0":
version: 5.2.0
resolution: "ansi-styles@npm:5.2.0"
checksum: 10c0/9c4ca80eb3c2fb7b33841c210d2f20807f40865d27008d7c3f707b7f95cab7d67462a565e2388ac3285b71cb3d9bb2173de8da37c57692a362885ec34d6e27df
languageName: node
linkType: hard
"ansi-styles@npm:^6.1.0":
version: 6.2.1
resolution: "ansi-styles@npm:6.2.1"
checksum: 10c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c
languageName: node
linkType: hard
"any-promise@npm:^1.0.0":
version: 1.3.0
resolution: "any-promise@npm:1.3.0"
checksum: 10c0/60f0298ed34c74fef50daab88e8dab786036ed5a7fad02e012ab57e376e0a0b4b29e83b95ea9b5e7d89df762f5f25119b83e00706ecaccb22cfbacee98d74889
languageName: node
linkType: hard
"anymatch@npm:~3.1.2":
version: 3.1.3
resolution: "anymatch@npm:3.1.3"
dependencies:
normalize-path: "npm:^3.0.0"
picomatch: "npm:^2.0.4"
checksum: 10c0/57b06ae984bc32a0d22592c87384cd88fe4511b1dd7581497831c56d41939c8a001b28e7b853e1450f2bf61992dfcaa8ae2d0d161a0a90c4fb631ef07098fbac
languageName: node
linkType: hard
"apache-arrow@npm:>= 15.0.0, apache-arrow@npm:^17.0.0":
version: 17.0.0
resolution: "apache-arrow@npm:17.0.0"
dependencies:
"@swc/helpers": "npm:^0.5.11"
"@types/command-line-args": "npm:^5.2.3"
"@types/command-line-usage": "npm:^5.0.4"
"@types/node": "npm:^20.13.0"
command-line-args: "npm:^5.2.1"
command-line-usage: "npm:^7.0.1"
flatbuffers: "npm:^24.3.25"
json-bignum: "npm:^0.0.3"
tslib: "npm:^2.6.2"
bin:
arrow2csv: bin/arrow2csv.cjs
checksum: 10c0/fa705b88a5d76c05122414bf7ba8a46c93f3509584de332eb045c736384cdfe53fc140135abbdeaa6036dfe422d145598b461b89f0b710cdeebbb732e9fb7f58
languageName: node
linkType: hard
"apache-arrow@npm:>=15, apache-arrow@npm:>=15.0.0":
version: 19.0.0
resolution: "apache-arrow@npm:19.0.0"
dependencies:
"@swc/helpers": "npm:^0.5.11"
"@types/command-line-args": "npm:^5.2.3"
"@types/command-line-usage": "npm:^5.0.4"
"@types/node": "npm:^20.13.0"
command-line-args: "npm:^6.0.1"
command-line-usage: "npm:^7.0.1"
flatbuffers: "npm:^24.3.25"
json-bignum: "npm:^0.0.3"
tslib: "npm:^2.6.2"
bin:
arrow2csv: bin/arrow2csv.js
checksum: 10c0/1424e9214ee5a5914fcbab43b2e28efb3f4f30be27226c3bbea53fe1a99e8a6a7982f42978231e247714d5da1bcc0121d051c24bbecd0b9b246608e885437e9a
languageName: node
linkType: hard
"arg@npm:^5.0.2":
version: 5.0.2
resolution: "arg@npm:5.0.2"
checksum: 10c0/ccaf86f4e05d342af6666c569f844bec426595c567d32a8289715087825c2ca7edd8a3d204e4d2fb2aa4602e09a57d0c13ea8c9eea75aac3dbb4af5514e6800e
languageName: node
linkType: hard
"argparse@npm:^1.0.10":
version: 1.0.10
resolution: "argparse@npm:1.0.10"
dependencies:
sprintf-js: "npm:~1.0.2"
checksum: 10c0/b2972c5c23c63df66bca144dbc65d180efa74f25f8fd9b7d9a0a6c88ae839db32df3d54770dcb6460cf840d232b60695d1a6b1053f599d84e73f7437087712de
languageName: node
linkType: hard
"arr-union@npm:^3.1.0":
version: 3.1.0
resolution: "arr-union@npm:3.1.0"
checksum: 10c0/7d5aa05894e54aa93c77c5726c1dd5d8e8d3afe4f77983c0aa8a14a8a5cbe8b18f0cf4ecaa4ac8c908ef5f744d2cbbdaa83fd6e96724d15fea56cfa7f5efdd51
languageName: node
linkType: hard
"array-back@npm:^3.0.1, array-back@npm:^3.1.0":
version: 3.1.0
resolution: "array-back@npm:3.1.0"
checksum: 10c0/bb1fe86aa8b39c21e73c68c7abf8b05ed939b8951a3b17527217f6a2a84e00e4cfa4fdec823081689c5e216709bf1f214a4f5feeee6726eaff83897fa1a7b8ee
languageName: node
linkType: hard
"array-back@npm:^6.2.2":
version: 6.2.2
resolution: "array-back@npm:6.2.2"
checksum: 10c0/c98a6e43b669400f58e2fba478336d5d02aac970566ffae3af0cb9b5585ec3811a1e010c76e34fb809a9762e6822a43a9c9a1b99f2a35f43b11a9e198e782818
languageName: node
linkType: hard
"array-buffer-byte-length@npm:^1.0.1":
version: 1.0.1
resolution: "array-buffer-byte-length@npm:1.0.1"
dependencies:
call-bind: "npm:^1.0.5"
is-array-buffer: "npm:^3.0.4"
checksum: 10c0/f5cdf54527cd18a3d2852ddf73df79efec03829e7373a8322ef5df2b4ef546fb365c19c71d6b42d641cb6bfe0f1a2f19bc0ece5b533295f86d7c3d522f228917
languageName: node
linkType: hard
"arraybuffer.prototype.slice@npm:^1.0.3":
version: 1.0.3
resolution: "arraybuffer.prototype.slice@npm:1.0.3"
dependencies:
array-buffer-byte-length: "npm:^1.0.1"
call-bind: "npm:^1.0.5"
define-properties: "npm:^1.2.1"
es-abstract: "npm:^1.22.3"
es-errors: "npm:^1.2.1"
get-intrinsic: "npm:^1.2.3"
is-array-buffer: "npm:^3.0.4"
is-shared-array-buffer: "npm:^1.0.2"
checksum: 10c0/d32754045bcb2294ade881d45140a5e52bda2321b9e98fa514797b7f0d252c4c5ab0d1edb34112652c62fa6a9398def568da63a4d7544672229afea283358c36
languageName: node
linkType: hard
"arrify@npm:^1.0.1":
version: 1.0.1
resolution: "arrify@npm:1.0.1"
checksum: 10c0/c35c8d1a81bcd5474c0c57fe3f4bad1a4d46a5fa353cedcff7a54da315df60db71829e69104b859dff96c5d68af46bd2be259fe5e50dc6aa9df3b36bea0383ab
languageName: node
linkType: hard
"asap@npm:~2.0.3":
version: 2.0.6
resolution: "asap@npm:2.0.6"
checksum: 10c0/c6d5e39fe1f15e4b87677460bd66b66050cd14c772269cee6688824c1410a08ab20254bb6784f9afb75af9144a9f9a7692d49547f4d19d715aeb7c0318f3136d
languageName: node
linkType: hard
"assign-symbols@npm:^1.0.0":
version: 1.0.0
resolution: "assign-symbols@npm:1.0.0"
checksum: 10c0/29a654b8a6da6889a190d0d0efef4b1bfb5948fa06cbc245054aef05139f889f2f7c75b989917e3fde853fc4093b88048e4de8578a73a76f113d41bfd66e5775
languageName: node
linkType: hard
"async-limiter@npm:~1.0.0":
version: 1.0.1
resolution: "async-limiter@npm:1.0.1"
checksum: 10c0/0693d378cfe86842a70d4c849595a0bb50dc44c11649640ca982fa90cbfc74e3cc4753b5a0847e51933f2e9c65ce8e05576e75e5e1fd963a086e673735b35969
languageName: node
linkType: hard
"async-mutex@npm:^0.2.2":
version: 0.2.6
resolution: "async-mutex@npm:0.2.6"
dependencies:
tslib: "npm:^2.0.0"
checksum: 10c0/440f1388fdbf2021261ba05952765182124a333681692fdef6af13935c20bfc2017e24e902362f12b29094a77b359ce3131e8dd45b1db42f1d570927ace9e7d9
languageName: node
linkType: hard
"asynckit@npm:^0.4.0":
version: 0.4.0
resolution: "asynckit@npm:0.4.0"
checksum: 10c0/d73e2ddf20c4eb9337e1b3df1a0f6159481050a5de457c55b14ea2e5cb6d90bb69e004c9af54737a5ee0917fcf2c9e25de67777bbe58261847846066ba75bc9d
languageName: node
linkType: hard
"available-typed-arrays@npm:^1.0.7":
version: 1.0.7
resolution: "available-typed-arrays@npm:1.0.7"
dependencies:
possible-typed-array-names: "npm:^1.0.0"
checksum: 10c0/d07226ef4f87daa01bd0fe80f8f310982e345f372926da2e5296aecc25c41cab440916bbaa4c5e1034b453af3392f67df5961124e4b586df1e99793a1374bdb2
languageName: node
linkType: hard
"bail@npm:^2.0.0":
version: 2.0.2
resolution: "bail@npm:2.0.2"
checksum: 10c0/25cbea309ef6a1f56214187004e8f34014eb015713ea01fa5b9b7e9e776ca88d0fdffd64143ac42dc91966c915a4b7b683411b56e14929fad16153fc026ffb8b
languageName: node
linkType: hard
"balanced-match@npm:^1.0.0":
version: 1.0.2
resolution: "balanced-match@npm:1.0.2"
checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee
languageName: node
linkType: hard
"base-64@npm:^0.1.0":
version: 0.1.0
resolution: "base-64@npm:0.1.0"
checksum: 10c0/fe0dcf076e823f04db7ee9b02495be08a91c445fbc6db03cb9913be9680e2fcc0af8b74459041fe08ad16800b1f65a549501d8f08696a8a6d32880789b7de69d
languageName: node
linkType: hard
"base64-arraybuffer@npm:^1.0.2":
version: 1.0.2
resolution: "base64-arraybuffer@npm:1.0.2"
checksum: 10c0/3acac95c70f9406e87a41073558ba85b6be9dbffb013a3d2a710e3f2d534d506c911847d5d9be4de458af6362c676de0a5c4c2d7bdf4def502d00b313368e72f
languageName: node
linkType: hard
"base64-js@npm:^1.1.2, base64-js@npm:^1.3.1, base64-js@npm:^1.5.1":
version: 1.5.1
resolution: "base64-js@npm:1.5.1"
checksum: 10c0/f23823513b63173a001030fae4f2dabe283b99a9d324ade3ad3d148e218134676f1ee8568c877cd79ec1c53158dcf2d2ba527a97c606618928ba99dd930102bf
languageName: node
linkType: hard
"binary-extensions@npm:^2.0.0":
version: 2.3.0
resolution: "binary-extensions@npm:2.3.0"
checksum: 10c0/75a59cafc10fb12a11d510e77110c6c7ae3f4ca22463d52487709ca7f18f69d886aa387557cc9864fbdb10153d0bdb4caacabf11541f55e89ed6e18d12ece2b5
languageName: node
linkType: hard
"brace-expansion@npm:^2.0.1":
version: 2.0.1
resolution: "brace-expansion@npm:2.0.1"
dependencies:
balanced-match: "npm:^1.0.0"
checksum: 10c0/b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f
languageName: node
linkType: hard
"braces@npm:^3.0.3, braces@npm:~3.0.2":
version: 3.0.3
resolution: "braces@npm:3.0.3"
dependencies:
fill-range: "npm:^7.1.1"
checksum: 10c0/7c6dfd30c338d2997ba77500539227b9d1f85e388a5f43220865201e407e076783d0881f2d297b9f80951b4c957fcf0b51c1d2d24227631643c3f7c284b0aa04
languageName: node
linkType: hard
"brotli@npm:^1.3.2":
version: 1.3.3
resolution: "brotli@npm:1.3.3"
dependencies:
base64-js: "npm:^1.1.2"
checksum: 10c0/9d24e24f8b7eabf44af034ed5f7d5530008b835f09a107a84ac060723e86dd43c6aa68958691fe5df524f59473b35f5ce2e0854aa1152c0a254d1010f51bcf22
languageName: node
linkType: hard
"browser-or-node@npm:^1.2.1":
version: 1.3.0
resolution: "browser-or-node@npm:1.3.0"
checksum: 10c0/a914790dd6a857149b1bb128a39872a95172f6f1db7824dd014b88cc2f88ce6433013ec83388fff83512fb815e7dc2ea60ddbfe8ff150d4f233092ff0d60ec60
languageName: node
linkType: hard
"bson@npm:*":
version: 6.8.0
resolution: "bson@npm:6.8.0"
checksum: 10c0/0503bb2a4ce2e183bd06151bdb983a623cfde05c76fbb5a34e941c594f3a681b52333d61b37c7933b8733b0ba14607b3599d94b46635d90bb96b1e7cec51aa8f
languageName: node
linkType: hard
"bson@npm:4.2.0":
version: 4.2.0
resolution: "bson@npm:4.2.0"
dependencies:
buffer: "npm:^5.6.0"
checksum: 10c0/50e852996fd630a1d8d40840f1f775b5e0c821616d0a3710abdd45fcfdaec796b215202ed33d4955f517f3ac2119648ea1c0d96654309bbf1fee1d736cf5e0d8
languageName: node
linkType: hard
"buf-compare@npm:^1.0.0":
version: 1.0.1
resolution: "buf-compare@npm:1.0.1"
checksum: 10c0/ccf1a89efc24bb36213813802b50c20752308859de42a7dca1b035231c72407aa0dbd49383409c818bb93e748117ea7961a8b5366e2597c7db76eb2b028cd64f
languageName: node
linkType: hard
"buffer@npm:6.0.3":
version: 6.0.3
resolution: "buffer@npm:6.0.3"
dependencies:
base64-js: "npm:^1.3.1"
ieee754: "npm:^1.2.1"
checksum: 10c0/2a905fbbcde73cc5d8bd18d1caa23715d5f83a5935867c2329f0ac06104204ba7947be098fe1317fbd8830e26090ff8e764f08cd14fefc977bb248c3487bcbd0
languageName: node
linkType: hard
"buffer@npm:^5.0.8, buffer@npm:^5.6.0":
version: 5.7.1
resolution: "buffer@npm:5.7.1"
dependencies:
base64-js: "npm:^1.3.1"
ieee754: "npm:^1.1.13"
checksum: 10c0/27cac81cff434ed2876058d72e7c4789d11ff1120ef32c9de48f59eab58179b66710c488987d295ae89a228f835fc66d088652dffeb8e3ba8659f80eb091d55e
languageName: node
linkType: hard
"bytewise-core@npm:^1.2.2":
version: 1.2.3
resolution: "bytewise-core@npm:1.2.3"
dependencies:
typewise-core: "npm:^1.2"
checksum: 10c0/210239f3048de9463b4ab02968bd0ef7b3c9b330c0329f9df1851fee0819e19fbb0eca8cc235947112dcce942ed58541283ddaefe29515c93a2b7e0820be3f2d
languageName: node
linkType: hard
"bytewise@npm:^1.1.0":
version: 1.1.0
resolution: "bytewise@npm:1.1.0"
dependencies:
bytewise-core: "npm:^1.2.2"
typewise: "npm:^1.0.3"
checksum: 10c0/bcf994a8b635390dce43b22e97201cc0e3df0089ada4e77cc0bb48ce241efd0c27ca24a9400828cdd288a69a961da0b60c05bf7381b6cb529f048ab22092cc6d
languageName: node
linkType: hard
"cacache@npm:^19.0.1":
version: 19.0.1
resolution: "cacache@npm:19.0.1"
dependencies:
"@npmcli/fs": "npm:^4.0.0"
fs-minipass: "npm:^3.0.0"
glob: "npm:^10.2.2"
lru-cache: "npm:^10.0.1"
minipass: "npm:^7.0.3"
minipass-collect: "npm:^2.0.1"
minipass-flush: "npm:^1.0.5"
minipass-pipeline: "npm:^1.2.4"
p-map: "npm:^7.0.2"
ssri: "npm:^12.0.0"
tar: "npm:^7.4.3"
unique-filename: "npm:^4.0.0"
checksum: 10c0/01f2134e1bd7d3ab68be851df96c8d63b492b1853b67f2eecb2c37bb682d37cb70bb858a16f2f0554d3c0071be6dfe21456a1ff6fa4b7eed996570d6a25ffe9c
languageName: node
linkType: hard
"cacheable-lookup@npm:^5.0.3":
version: 5.0.4
resolution: "cacheable-lookup@npm:5.0.4"
checksum: 10c0/a6547fb4954b318aa831cbdd2f7b376824bc784fb1fa67610e4147099e3074726072d9af89f12efb69121415a0e1f2918a8ddd4aafcbcf4e91fbeef4a59cd42c
languageName: node
linkType: hard
"cacheable-request@npm:^7.0.2":
version: 7.0.4
resolution: "cacheable-request@npm:7.0.4"
dependencies:
clone-response: "npm:^1.0.2"
get-stream: "npm:^5.1.0"
http-cache-semantics: "npm:^4.0.0"
keyv: "npm:^4.0.0"
lowercase-keys: "npm:^2.0.0"
normalize-url: "npm:^6.0.1"
responselike: "npm:^2.0.0"
checksum: 10c0/0834a7d17ae71a177bc34eab06de112a43f9b5ad05ebe929bec983d890a7d9f2bc5f1aa8bb67ea2b65e07a3bc74bea35fa62dd36dbac52876afe36fdcf83da41
languageName: node
linkType: hard
"call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7":
version: 1.0.7
resolution: "call-bind@npm:1.0.7"
dependencies:
es-define-property: "npm:^1.0.0"
es-errors: "npm:^1.3.0"
function-bind: "npm:^1.1.2"
get-intrinsic: "npm:^1.2.4"
set-function-length: "npm:^1.2.1"
checksum: 10c0/a3ded2e423b8e2a265983dba81c27e125b48eefb2655e7dfab6be597088da3d47c47976c24bc51b8fd9af1061f8f87b4ab78a314f3c77784b2ae2ba535ad8b8d
languageName: node
linkType: hard
"callsites@npm:^3.1.0":
version: 3.1.0
resolution: "callsites@npm:3.1.0"
checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301
languageName: node
linkType: hard
"camelcase-css@npm:^2.0.1":
version: 2.0.1
resolution: "camelcase-css@npm:2.0.1"
checksum: 10c0/1a1a3137e8a781e6cbeaeab75634c60ffd8e27850de410c162cce222ea331cd1ba5364e8fb21c95e5ca76f52ac34b81a090925ca00a87221355746d049c6e273
languageName: node
linkType: hard
"camelcase-keys@npm:^6.2.2":
version: 6.2.2
resolution: "camelcase-keys@npm:6.2.2"
dependencies:
camelcase: "npm:^5.3.1"
map-obj: "npm:^4.0.0"
quick-lru: "npm:^4.0.1"
checksum: 10c0/bf1a28348c0f285c6c6f68fb98a9d088d3c0269fed0cdff3ea680d5a42df8a067b4de374e7a33e619eb9d5266a448fe66c2dd1f8e0c9209ebc348632882a3526
languageName: node
linkType: hard
"camelcase@npm:6":
version: 6.3.0
resolution: "camelcase@npm:6.3.0"
checksum: 10c0/0d701658219bd3116d12da3eab31acddb3f9440790c0792e0d398f0a520a6a4058018e546862b6fba89d7ae990efaeb97da71e1913e9ebf5a8b5621a3d55c710
languageName: node
linkType: hard
"camelcase@npm:^5.3.1":
version: 5.3.1
resolution: "camelcase@npm:5.3.1"
checksum: 10c0/92ff9b443bfe8abb15f2b1513ca182d16126359ad4f955ebc83dc4ddcc4ef3fdd2c078bc223f2673dc223488e75c99b16cc4d056624374b799e6a1555cf61b23
languageName: node
linkType: hard
"camelize@npm:^1.0.0":
version: 1.0.1
resolution: "camelize@npm:1.0.1"
checksum: 10c0/4c9ac55efd356d37ac483bad3093758236ab686192751d1c9daa43188cc5a07b09bd431eb7458a4efd9ca22424bba23253e7b353feb35d7c749ba040de2385fb
languageName: node
linkType: hard
"ccount@npm:^2.0.0":
version: 2.0.1
resolution: "ccount@npm:2.0.1"
checksum: 10c0/3939b1664390174484322bc3f45b798462e6c07ee6384cb3d645e0aa2f318502d174845198c1561930e1d431087f74cf1fe291ae9a4722821a9f4ba67e574350
languageName: node
linkType: hard
"chalk-template@npm:^0.4.0":
version: 0.4.0
resolution: "chalk-template@npm:0.4.0"
dependencies:
chalk: "npm:^4.1.2"
checksum: 10c0/6a4cb4252966475f0bd3ee1cd8780146e1ba69f445e59c565cab891ac18708c8143515d23e2b0fb7e192574fb7608d429ea5b28f3b7b9507770ad6fccd3467e3
languageName: node
linkType: hard
"chalk@npm:^2.4.2":
version: 2.4.2
resolution: "chalk@npm:2.4.2"
dependencies:
ansi-styles: "npm:^3.2.1"
escape-string-regexp: "npm:^1.0.5"
supports-color: "npm:^5.3.0"
checksum: 10c0/e6543f02ec877732e3a2d1c3c3323ddb4d39fbab687c23f526e25bd4c6a9bf3b83a696e8c769d078e04e5754921648f7821b2a2acfd16c550435fd630026e073
languageName: node
linkType: hard
"chalk@npm:^4.1.2":
version: 4.1.2
resolution: "chalk@npm:4.1.2"
dependencies:
ansi-styles: "npm:^4.1.0"
supports-color: "npm:^7.1.0"
checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880
languageName: node
linkType: hard
"chalk@npm:^5.3.0":
version: 5.4.1
resolution: "chalk@npm:5.4.1"
checksum: 10c0/b23e88132c702f4855ca6d25cb5538b1114343e41472d5263ee8a37cccfccd9c4216d111e1097c6a27830407a1dc81fecdf2a56f2c63033d4dbbd88c10b0dcef
languageName: node
linkType: hard
"character-entities-html4@npm:^2.0.0":
version: 2.1.0
resolution: "character-entities-html4@npm:2.1.0"
checksum: 10c0/fe61b553f083400c20c0b0fd65095df30a0b445d960f3bbf271536ae6c3ba676f39cb7af0b4bf2755812f08ab9b88f2feed68f9aebb73bb153f7a115fe5c6e40
languageName: node
linkType: hard
"character-entities-legacy@npm:^3.0.0":
version: 3.0.0
resolution: "character-entities-legacy@npm:3.0.0"
checksum: 10c0/ec4b430af873661aa754a896a2b55af089b4e938d3d010fad5219299a6b6d32ab175142699ee250640678cd64bdecd6db3c9af0b8759ab7b155d970d84c4c7d1
languageName: node
linkType: hard
"character-entities@npm:^2.0.0":
version: 2.0.2
resolution: "character-entities@npm:2.0.2"
checksum: 10c0/b0c645a45bcc90ff24f0e0140f4875a8436b8ef13b6bcd31ec02cfb2ca502b680362aa95386f7815bdc04b6464d48cf191210b3840d7c04241a149ede591a308
languageName: node
linkType: hard
"character-reference-invalid@npm:^2.0.0":
version: 2.0.1
resolution: "character-reference-invalid@npm:2.0.1"
checksum: 10c0/2ae0dec770cd8659d7e8b0ce24392d83b4c2f0eb4a3395c955dce5528edd4cc030a794cfa06600fcdd700b3f2de2f9b8e40e309c0011c4180e3be64a0b42e6a1
languageName: node
linkType: hard
"chokidar@npm:^3.6.0":
version: 3.6.0
resolution: "chokidar@npm:3.6.0"
dependencies:
anymatch: "npm:~3.1.2"
braces: "npm:~3.0.2"
fsevents: "npm:~2.3.2"
glob-parent: "npm:~5.1.2"
is-binary-path: "npm:~2.1.0"
is-glob: "npm:~4.0.1"
normalize-path: "npm:~3.0.0"
readdirp: "npm:~3.6.0"
dependenciesMeta:
fsevents:
optional: true
checksum: 10c0/8361dcd013f2ddbe260eacb1f3cb2f2c6f2b0ad118708a343a5ed8158941a39cb8fb1d272e0f389712e74ee90ce8ba864eece9e0e62b9705cb468a2f6d917462
languageName: node
linkType: hard
"chownr@npm:^3.0.0":
version: 3.0.0
resolution: "chownr@npm:3.0.0"
checksum: 10c0/43925b87700f7e3893296c8e9c56cc58f926411cce3a6e5898136daaf08f08b9a8eb76d37d3267e707d0dcc17aed2e2ebdf5848c0c3ce95cf910a919935c1b10
languageName: node
linkType: hard
"chroma-js@npm:2.1.2":
version: 2.1.2
resolution: "chroma-js@npm:2.1.2"
dependencies:
cross-env: "npm:^6.0.3"
checksum: 10c0/f3760059b76240bab7387f335c798bbf55a4edf937534be7bc5c16ecad9b358dcfd891ca4fffa2c34742f45d5c3e96c8927c6a9906a13905da2bfa4c9ad30418
languageName: node
linkType: hard
"clamp@npm:^1.0.1":
version: 1.0.1
resolution: "clamp@npm:1.0.1"
checksum: 10c0/8f95ccbc5d646a98c1d690bce820f3d060a5267242083e8994f70dc504ce441dbc7b8ef13b93819129fc166e7a5b6abd320f109bdba0f49b8dcc794710987c97
languageName: node
linkType: hard
"classnames@npm:*, classnames@npm:^2.2.1":
version: 2.5.1
resolution: "classnames@npm:2.5.1"
checksum: 10c0/afff4f77e62cea2d79c39962980bf316bacb0d7c49e13a21adaadb9221e1c6b9d3cdb829d8bb1b23c406f4e740507f37e1dcf506f7e3b7113d17c5bab787aa69
languageName: node
linkType: hard
"clone-response@npm:^1.0.2":
version: 1.0.3
resolution: "clone-response@npm:1.0.3"
dependencies:
mimic-response: "npm:^1.0.0"
checksum: 10c0/06a2b611824efb128810708baee3bd169ec9a1bf5976a5258cd7eb3f7db25f00166c6eee5961f075c7e38e194f373d4fdf86b8166ad5b9c7e82bbd2e333a6087
languageName: node
linkType: hard
"clsx@npm:^1.0.4, clsx@npm:^1.2.1":
version: 1.2.1
resolution: "clsx@npm:1.2.1"
checksum: 10c0/34dead8bee24f5e96f6e7937d711978380647e936a22e76380290e35486afd8634966ce300fc4b74a32f3762c7d4c0303f442c3e259f4ce02374eb0c82834f27
languageName: node
linkType: hard
"clsx@npm:^2.0.0":
version: 2.1.1
resolution: "clsx@npm:2.1.1"
checksum: 10c0/c4c8eb865f8c82baab07e71bfa8897c73454881c4f99d6bc81585aecd7c441746c1399d08363dc096c550cceaf97bd4ce1e8854e1771e9998d9f94c4fe075839
languageName: node
linkType: hard
"color-convert@npm:^1.9.0":
version: 1.9.3
resolution: "color-convert@npm:1.9.3"
dependencies:
color-name: "npm:1.1.3"
checksum: 10c0/5ad3c534949a8c68fca8fbc6f09068f435f0ad290ab8b2f76841b9e6af7e0bb57b98cb05b0e19fe33f5d91e5a8611ad457e5f69e0a484caad1f7487fd0e8253c
languageName: node
linkType: hard
"color-convert@npm:^2.0.1":
version: 2.0.1
resolution: "color-convert@npm:2.0.1"
dependencies:
color-name: "npm:~1.1.4"
checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7
languageName: node
linkType: hard
"color-interpolate@npm:^1.0.5":
version: 1.0.5
resolution: "color-interpolate@npm:1.0.5"
dependencies:
clamp: "npm:^1.0.1"
color-parse: "npm:^1.2.0"
color-space: "npm:^1.14.3"
lerp: "npm:^1.0.3"
checksum: 10c0/d32de079fa2722b8c0eeb79a45a2400639f2dfafd20a141743b3b068b656fbc844685b589a7ab40ebeec2da72c1b3391c2c2bbaf9e07b1720ee7d3300a99dbde
languageName: node
linkType: hard
"color-name@npm:1.1.3":
version: 1.1.3
resolution: "color-name@npm:1.1.3"
checksum: 10c0/566a3d42cca25b9b3cd5528cd7754b8e89c0eb646b7f214e8e2eaddb69994ac5f0557d9c175eb5d8f0ad73531140d9c47525085ee752a91a2ab15ab459caf6d6
languageName: node
linkType: hard
"color-name@npm:^1.0.0, color-name@npm:~1.1.4":
version: 1.1.4
resolution: "color-name@npm:1.1.4"
checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95
languageName: node
linkType: hard
"color-parse@npm:^1.2.0":
version: 1.4.3
resolution: "color-parse@npm:1.4.3"
dependencies:
color-name: "npm:^1.0.0"
checksum: 10c0/3473e7fb53d643dffc508c4f3161890f405ece9d78cc84277576212346b17ad037d1a0c6beb49e9b55bc11435a8c85b7ff9f94a6b898eb82647d4a46615d23da
languageName: node
linkType: hard
"color-space@npm:^1.14.3":
version: 1.16.0
resolution: "color-space@npm:1.16.0"
dependencies:
hsluv: "npm:^0.0.3"
mumath: "npm:^3.3.4"
checksum: 10c0/93c977671d9b90392477e863c6bf49598256ae63b5196bcdc9f74184a7cd4e125ebf6695e3f34082c1dba8f9eb303eeafd91d8be237064ab7d6a2f6a256014ea
languageName: node
linkType: hard
"color-string@npm:^1.9.0":
version: 1.9.1
resolution: "color-string@npm:1.9.1"
dependencies:
color-name: "npm:^1.0.0"
simple-swizzle: "npm:^0.2.2"
checksum: 10c0/b0bfd74c03b1f837f543898b512f5ea353f71630ccdd0d66f83028d1f0924a7d4272deb278b9aef376cacf1289b522ac3fb175e99895283645a2dc3a33af2404
languageName: node
linkType: hard
"color2k@npm:^2.0.3":
version: 2.0.3
resolution: "color2k@npm:2.0.3"
checksum: 10c0/e7c13d212c9d1abb1690e378bbc0a6fb1751e4b02e9a73ba3b2ade9d54da673834597d342791d577d1ce400ec486c7f92c5098f9fa85cd113bcfde57420a2bb9
languageName: node
linkType: hard
"color@npm:^4.2.3":
version: 4.2.3
resolution: "color@npm:4.2.3"
dependencies:
color-convert: "npm:^2.0.1"
color-string: "npm:^1.9.0"
checksum: 10c0/7fbe7cfb811054c808349de19fb380252e5e34e61d7d168ec3353e9e9aacb1802674bddc657682e4e9730c2786592a4de6f8283e7e0d3870b829bb0b7b2f6118
languageName: node
linkType: hard
"colorbrewer@npm:^1.5.0":
version: 1.5.6
resolution: "colorbrewer@npm:1.5.6"
checksum: 10c0/da8045058698e2df21df1b676184d9db6651b5c4c2d4775d24bfb60c761150c4e102b54db4a85f4b3019726b5a16053b040f026ee0214cc0ee6ba8612d8a54cd
languageName: node
linkType: hard
"combined-stream@npm:^1.0.8":
version: 1.0.8
resolution: "combined-stream@npm:1.0.8"
dependencies:
delayed-stream: "npm:~1.0.0"
checksum: 10c0/0dbb829577e1b1e839fa82b40c07ffaf7de8a09b935cadd355a73652ae70a88b4320db322f6634a4ad93424292fa80973ac6480986247f1734a1137debf271d5
languageName: node
linkType: hard
"comma-separated-tokens@npm:^2.0.0":
version: 2.0.3
resolution: "comma-separated-tokens@npm:2.0.3"
checksum: 10c0/91f90f1aae320f1755d6957ef0b864fe4f54737f3313bd95e0802686ee2ca38bff1dd381964d00ae5db42912dd1f4ae5c2709644e82706ffc6f6842a813cdd67
languageName: node
linkType: hard
"command-line-args@npm:^5.2.1":
version: 5.2.1
resolution: "command-line-args@npm:5.2.1"
dependencies:
array-back: "npm:^3.1.0"
find-replace: "npm:^3.0.0"
lodash.camelcase: "npm:^4.3.0"
typical: "npm:^4.0.0"
checksum: 10c0/a4f6a23a1e420441bd1e44dee24efd12d2e49af7efe6e21eb32fca4e843ca3d5501ddebad86a4e9d99aa626dd6dcb64c04a43695388be54e3a803dbc326cc89f
languageName: node
linkType: hard
"command-line-args@npm:^6.0.1":
version: 6.0.1
resolution: "command-line-args@npm:6.0.1"
dependencies:
array-back: "npm:^6.2.2"
find-replace: "npm:^5.0.2"
lodash.camelcase: "npm:^4.3.0"
typical: "npm:^7.2.0"
peerDependencies:
"@75lb/nature": "*"
peerDependenciesMeta:
"@75lb/nature":
optional: true
checksum: 10c0/45556284f60db8d258fa262a0532ce7eadeb87da3475a5c39191b5c208c02a726f84a117c71d91fe3600f764f77bd5269e0c77444fb3eed4525be610802dcef4
languageName: node
linkType: hard
"command-line-usage@npm:^7.0.1":
version: 7.0.3
resolution: "command-line-usage@npm:7.0.3"
dependencies:
array-back: "npm:^6.2.2"
chalk-template: "npm:^0.4.0"
table-layout: "npm:^4.1.0"
typical: "npm:^7.1.1"
checksum: 10c0/444a3e3c6fcbdcb5802de0fd2864ea5aef83eeeb3a825fd24846b996503d4b4140e75aeb2939b3430a06407f3acc02b76b3e08dafb3a3092d22fdcced0ecb0b0
languageName: node
linkType: hard
"commander@npm:2":
version: 2.20.3
resolution: "commander@npm:2.20.3"
checksum: 10c0/74c781a5248c2402a0a3e966a0a2bba3c054aad144f5c023364be83265e796b20565aa9feff624132ff629aa64e16999fa40a743c10c12f7c61e96a794b99288
languageName: node
linkType: hard
"commander@npm:^4.0.0":
version: 4.1.1
resolution: "commander@npm:4.1.1"
checksum: 10c0/84a76c08fe6cc08c9c93f62ac573d2907d8e79138999312c92d4155bc2325d487d64d13f669b2000c9f8caf70493c1be2dac74fec3c51d5a04f8bc3ae1830bab
languageName: node
linkType: hard
"compute-scroll-into-view@npm:^3.0.2":
version: 3.1.1
resolution: "compute-scroll-into-view@npm:3.1.1"
checksum: 10c0/59761ed62304a9599b52ad75d0d6fbf0669ee2ab7dd472fdb0ad9da36628414c014dea7b5810046560180ad30ffec52a953d19297f66a1d4f3aa0999b9d2521d
languageName: node
linkType: hard
"console-table-printer@npm:^2.12.1":
version: 2.12.1
resolution: "console-table-printer@npm:2.12.1"
dependencies:
simple-wcswidth: "npm:^1.0.1"
checksum: 10c0/8f28e9c0ae5df77f5d60da3da002ecd95ebe1812b0b9e0a6d2795c81b5121b39774f32506bccf68830a838ca4d8fbb2ab8824e729dba2c5e30cdeb9df4dd5f2b
languageName: node
linkType: hard
"copy-to-clipboard@npm:^3.3.1":
version: 3.3.3
resolution: "copy-to-clipboard@npm:3.3.3"
dependencies:
toggle-selection: "npm:^1.0.6"
checksum: 10c0/3ebf5e8ee00601f8c440b83ec08d838e8eabb068c1fae94a9cda6b42f288f7e1b552f3463635f419af44bf7675afc8d0390d30876cf5c2d5d35f86d9c56a3e5f
languageName: node
linkType: hard
"core-assert@npm:^0.2.0":
version: 0.2.1
resolution: "core-assert@npm:0.2.1"
dependencies:
buf-compare: "npm:^1.0.0"
is-error: "npm:^2.2.0"
checksum: 10c0/d4eb0482861a77ac476e01b6eb48f924adeb94003c01c541e020b7cfacddca28fc30be183cdda42231a2e90e66afeeaac46028c9885bfa98faee8d15bdb6e3c6
languageName: node
linkType: hard
"core-js@npm:^1.0.0":
version: 1.2.7
resolution: "core-js@npm:1.2.7"
checksum: 10c0/2b2966e40833f522129da4cc979688760654e9b38e32b06517a94c0edf2882d8990c4b1b0087cb2abfbe6219fdb21dc64343fa264a6b6280ec88c3682b8eee66
languageName: node
linkType: hard
"create-react-class@npm:^15.5.1":
version: 15.7.0
resolution: "create-react-class@npm:15.7.0"
dependencies:
loose-envify: "npm:^1.3.1"
object-assign: "npm:^4.1.1"
checksum: 10c0/bce4b46e6d85b424cb50ca8089266c7664fcecfd81abaafb829680fae2e2e60dc6999cac88f5a16a38473ed284859f2328935a42fc5cd1b7cc48888fdd8363c9
languageName: node
linkType: hard
"cross-env@npm:^6.0.3":
version: 6.0.3
resolution: "cross-env@npm:6.0.3"
dependencies:
cross-spawn: "npm:^7.0.0"
bin:
cross-env: src/bin/cross-env.js
cross-env-shell: src/bin/cross-env-shell.js
checksum: 10c0/0d176b91c730abb08589431970a59771148f8fbf338959f5e3aa71b866d38ba390fc67f5330306d0a37d7cb74675224d0f23086f291661b944abbf5a00bd7080
languageName: node
linkType: hard
"cross-spawn@npm:^7.0.0":
version: 7.0.6
resolution: "cross-spawn@npm:7.0.6"
dependencies:
path-key: "npm:^3.1.0"
shebang-command: "npm:^2.0.0"
which: "npm:^2.0.1"
checksum: 10c0/053ea8b2135caff68a9e81470e845613e374e7309a47731e81639de3eaeb90c3d01af0e0b44d2ab9d50b43467223b88567dfeb3262db942dc063b9976718ffc1
languageName: node
linkType: hard
"css-color-keywords@npm:^1.0.0":
version: 1.0.0
resolution: "css-color-keywords@npm:1.0.0"
checksum: 10c0/af205a86c68e0051846ed91eb3e30b4517e1904aac040013ff1d742019b3f9369ba5658ba40901dbbc121186fc4bf0e75a814321cc3e3182fbb2feb81c6d9cb7
languageName: node
linkType: hard
"css-line-break@npm:^2.1.0":
version: 2.1.0
resolution: "css-line-break@npm:2.1.0"
dependencies:
utrie: "npm:^1.0.2"
checksum: 10c0/b2222d99d5daf7861ecddc050244fdce296fad74b000dcff6bdfb1eb16dc2ef0b9ffe2c1c965e3239bd05ebe9eadb6d5438a91592fa8648d27a338e827cf9048
languageName: node
linkType: hard
"css-to-react-native@npm:3.2.0":
version: 3.2.0
resolution: "css-to-react-native@npm:3.2.0"
dependencies:
camelize: "npm:^1.0.0"
css-color-keywords: "npm:^1.0.0"
postcss-value-parser: "npm:^4.0.2"
checksum: 10c0/fde850a511d5d3d7c55a1e9b8ed26b69a8ad4868b3487e36ebfbfc0b96fc34bc977d9cd1d61a289d0c74d3f9a662d8cee297da53d4433bf2e27d6acdff8e1003
languageName: node
linkType: hard
"csscolorparser@npm:~1.0.3":
version: 1.0.3
resolution: "csscolorparser@npm:1.0.3"
checksum: 10c0/57b30e1dd3e639fb74d63d3ee5a078ae6d0aaba26bc731fdec1a0f50fd77c2531a1fca2bbe07c18e0569255f92064cda0747e0115955fdb8c037332798ca634f
languageName: node
linkType: hard
"cssesc@npm:^3.0.0":
version: 3.0.0
resolution: "cssesc@npm:3.0.0"
bin:
cssesc: bin/cssesc
checksum: 10c0/6bcfd898662671be15ae7827120472c5667afb3d7429f1f917737f3bf84c4176003228131b643ae74543f17a394446247df090c597bb9a728cce298606ed0aa7
languageName: node
linkType: hard
"csstype@npm:3.1.2":
version: 3.1.2
resolution: "csstype@npm:3.1.2"
checksum: 10c0/32c038af259897c807ac738d9eab16b3d86747c72b09d5c740978e06f067f9b7b1737e1b75e407c7ab1fe1543dc95f20e202b4786aeb1b8d3bdf5d5ce655e6c6
languageName: node
linkType: hard
"csstype@npm:^3.0.2":
version: 3.1.3
resolution: "csstype@npm:3.1.3"
checksum: 10c0/80c089d6f7e0c5b2bd83cf0539ab41474198579584fa10d86d0cafe0642202343cbc119e076a0b1aece191989477081415d66c9fefbf3c957fc2fc4b7009f248
languageName: node
linkType: hard
"cubic-hermite-spline@npm:^1.0.1":
version: 1.0.1
resolution: "cubic-hermite-spline@npm:1.0.1"
checksum: 10c0/34d84de4deb69a30ff23f726cbc1666129c3a3ab8ac98b66bd779fdc060a695e114b4505637f554998c764485fd311cba4c5df3120aa1fb18bc9ccbeafdfced2
languageName: node
linkType: hard
"d3-array@npm:1, d3-array@npm:^1.1.1, d3-array@npm:^1.2.0":
version: 1.2.4
resolution: "d3-array@npm:1.2.4"
checksum: 10c0/7ac0ae096838e75d06350381442d84b327e3215d470f26c297851675bd25c47a633d35b04bfaa0397c529f42428d19f3f80bead24e1e866832e064cc6af24f3a
languageName: node
linkType: hard
"d3-array@npm:2, d3-array@npm:^2.3.0, d3-array@npm:^2.8.0":
version: 2.12.1
resolution: "d3-array@npm:2.12.1"
dependencies:
internmap: "npm:^1.0.0"
checksum: 10c0/7eca10427a9f113a4ca6a0f7301127cab26043fd5e362631ef5a0edd1c4b2dd70c56ed317566700c31e4a6d88b55f3951aaba192291817f243b730cb2352882e
languageName: node
linkType: hard
"d3-array@npm:^3.2.4":
version: 3.2.4
resolution: "d3-array@npm:3.2.4"
dependencies:
internmap: "npm:1 - 2"
checksum: 10c0/08b95e91130f98c1375db0e0af718f4371ccacef7d5d257727fe74f79a24383e79aba280b9ffae655483ffbbad4fd1dec4ade0119d88c4749f388641c8bf8c50
languageName: node
linkType: hard
"d3-axis@npm:^2.0.0":
version: 2.1.0
resolution: "d3-axis@npm:2.1.0"
checksum: 10c0/812558c0a016f8541e4704837b4428060695e2397e00a374caab5ae060a8ea6254bb097a4cfb7e01deff61da8a91c582eda614659ada5fd590da902a397428cc
languageName: node
linkType: hard
"d3-brush@npm:^2.1.0":
version: 2.1.0
resolution: "d3-brush@npm:2.1.0"
dependencies:
d3-dispatch: "npm:1 - 2"
d3-drag: "npm:2"
d3-interpolate: "npm:1 - 2"
d3-selection: "npm:2"
d3-transition: "npm:2"
checksum: 10c0/f4221f815f8b0fb5af42a2c5baf7cb884067fdddfe5e3d9ae8b603912a47c205e138b8cdcb19a693feac46aa790c0dc9204c893e4b09cfdb944d31bde0b81126
languageName: node
linkType: hard
"d3-collection@npm:1, d3-collection@npm:^1.0.3":
version: 1.0.7
resolution: "d3-collection@npm:1.0.7"
checksum: 10c0/7a3c7f733ce4a1a02f46a96c7dd02f8e46a2fa83fc4195682fd33624d6a56fbda6388c86ff5d30799cc768cb63bffcdb216b45c51a8d6e0b23117db9c18bedb3
languageName: node
linkType: hard
"d3-color@npm:1 - 2, d3-color@npm:^2.0.0":
version: 2.0.0
resolution: "d3-color@npm:2.0.0"
checksum: 10c0/5aa58dfb78e3db764373a904eabb643dc024ff6071128a41e86faafa100e0e17a796e06ac3f2662e9937242bb75b8286788629773d76936f11c17bd5fe5e15cd
languageName: node
linkType: hard
"d3-color@npm:1, d3-color@npm:^1.0.3":
version: 1.4.1
resolution: "d3-color@npm:1.4.1"
checksum: 10c0/668721dedc1d7e84aa9b3c51ccbaa1facd92ae9303d86ea0d5d0cf589dab892bc4cc7e155696537ed43e8f053d3ad0dde86363e1a789bad800a786f2ede527d7
languageName: node
linkType: hard
"d3-contour@npm:^1.1.0":
version: 1.3.2
resolution: "d3-contour@npm:1.3.2"
dependencies:
d3-array: "npm:^1.1.1"
checksum: 10c0/a9539c6ccb656ae469f341373662d473b9f8991d0d70a28dab053610d41bfff1a07934071f199cc384d914b850765850c1e9e1fa497b36bac78a984633ae077b
languageName: node
linkType: hard
"d3-dispatch@npm:1 - 2":
version: 2.0.0
resolution: "d3-dispatch@npm:2.0.0"
checksum: 10c0/379f7ce1510f529da00a34016630e92e41c0f6bbffef7b849f4e46733c188c67418df266a9a541cda17572b5286e32fbaf66308fe04dcfe52aa551830825bc93
languageName: node
linkType: hard
"d3-drag@npm:2":
version: 2.0.0
resolution: "d3-drag@npm:2.0.0"
dependencies:
d3-dispatch: "npm:1 - 2"
d3-selection: "npm:2"
checksum: 10c0/a6f2cfea47aa888b56476454554b37befb0d332f326704913142c6a89b295edfc0947a9fb5afdd0c6d0028878b832a975c80df55d009ab7ccf7b59faa99e926c
languageName: node
linkType: hard
"d3-dsv@npm:^1.2.0":
version: 1.2.0
resolution: "d3-dsv@npm:1.2.0"
dependencies:
commander: "npm:2"
iconv-lite: "npm:0.4"
rw: "npm:1"
bin:
csv2json: bin/dsv2json
csv2tsv: bin/dsv2dsv
dsv2dsv: bin/dsv2dsv
dsv2json: bin/dsv2json
json2csv: bin/json2dsv
json2dsv: bin/json2dsv
json2tsv: bin/json2dsv
tsv2csv: bin/dsv2dsv
tsv2json: bin/dsv2json
checksum: 10c0/e1698408b3c583d236f2c5f333d793cff2ac65e5ee11c4b6606becf86bf1d089e6de2be730aa9103c3d175fe3d63942de9a5a808e439ff9de7219149aa58aa37
languageName: node
linkType: hard
"d3-dsv@npm:^2.0.0":
version: 2.0.0
resolution: "d3-dsv@npm:2.0.0"
dependencies:
commander: "npm:2"
iconv-lite: "npm:0.4"
rw: "npm:1"
bin:
csv2json: bin/dsv2json
csv2tsv: bin/dsv2dsv
dsv2dsv: bin/dsv2dsv
dsv2json: bin/dsv2json
json2csv: bin/json2dsv
json2dsv: bin/json2dsv
json2tsv: bin/json2dsv
tsv2csv: bin/dsv2dsv
tsv2json: bin/dsv2json
checksum: 10c0/b5e4a0945664a941ad37d3c5ee8c8cbb3c99712ff7f36b2420446ebfc3b3909eb3d9ef2682b4a77afa6a6c5f5af1d659e17d6678863d95b244aed479b6c7c5c3
languageName: node
linkType: hard
"d3-ease@npm:1 - 2":
version: 2.0.0
resolution: "d3-ease@npm:2.0.0"
checksum: 10c0/4c2e74417739b73f5d185675be0a72b19df1f729b87c457d4b13976f7eef5c1f54739b4ccd71d9730521c959cfac28a56f5f4040dd2baf5729ac7e4adce344f1
languageName: node
linkType: hard
"d3-format@npm:1 - 2, d3-format@npm:^2.0.0":
version: 2.0.0
resolution: "d3-format@npm:2.0.0"
checksum: 10c0/c869af459e20767dc3d9cbb2946ba79cc266ae4fb35d11c50c63fc89ea4ed168c702c7e3db94d503b3618de9609bf3bf2d855ef53e21109ddd7eb9c8f3fcf8a1
languageName: node
linkType: hard
"d3-format@npm:1, d3-format@npm:^1.2.0":
version: 1.4.5
resolution: "d3-format@npm:1.4.5"
checksum: 10c0/40800a2fb2182d2d711cea3acc2b8b2b3afdb6f644c51de77feb9b08a6150b14c753933d2fd4ad2f6f45130757b738673372c45b4b820466c560f3b1ec0b3ce8
languageName: node
linkType: hard
"d3-geo@npm:1.7.1":
version: 1.7.1
resolution: "d3-geo@npm:1.7.1"
dependencies:
d3-array: "npm:1"
checksum: 10c0/004f858aafb6d23459efc53596dc8a796d21e294e76074da8abaaf95c8796ad2f6b4825b0e9d9afa79eea87e89f851dbb4ba88a6e8f8646c4d278abd28460419
languageName: node
linkType: hard
"d3-geo@npm:^1.6.4":
version: 1.12.1
resolution: "d3-geo@npm:1.12.1"
dependencies:
d3-array: "npm:1"
checksum: 10c0/ec46ff8fdd824df2fbcb9c6e7a6e8c778ecaa196ba1a3265fa6b58d32e526d258dda7d6033698f9625189d364d70f5a9b9a7f6f54fdefe8ef677c28e9765b602
languageName: node
linkType: hard
"d3-hexbin@npm:^0.2.1, d3-hexbin@npm:^0.2.2":
version: 0.2.2
resolution: "d3-hexbin@npm:0.2.2"
checksum: 10c0/775ed2d2b278836c84de2ce97770e515e74d44cda28bd548fcee90b0fd4026da5abf0cb089d67b7af44e3ad092df5f3da04953172ddf66a6328e2b15d37f70ea
languageName: node
linkType: hard
"d3-hierarchy@npm:^1.1.4":
version: 1.1.9
resolution: "d3-hierarchy@npm:1.1.9"
checksum: 10c0/63b0ae0953bda076866b8705f8ea6fa1f67ded7ee99d98b20ef4364ce21868c292c9b45e887fde0f0dba1d0202466b2a87e7d5a6cc6388e759aadc5f055142e0
languageName: node
linkType: hard
"d3-interpolate@npm:1 - 2, d3-interpolate@npm:1.2.0 - 2, d3-interpolate@npm:^2.0.1":
version: 2.0.1
resolution: "d3-interpolate@npm:2.0.1"
dependencies:
d3-color: "npm:1 - 2"
checksum: 10c0/2a5725b0c9c7fef3e8878cf75ad67be851b1472de3dda1f694c441786a1a32e198ddfaa6880d6b280401c1af5b844b61ccdd63d85d1607c1e6bb3a3f0bf532ea
languageName: node
linkType: hard
"d3-interpolate@npm:1, d3-interpolate@npm:^1.1.4":
version: 1.4.0
resolution: "d3-interpolate@npm:1.4.0"
dependencies:
d3-color: "npm:1"
checksum: 10c0/33274a06d5969f7cf8477f490dd9bea6cf2f5e89da800e0db17e1b6663dfcc288ebc34ae85f891e83f59f87086e9468db0614281b9fe8ba50162d8a45149ed0f
languageName: node
linkType: hard
"d3-path@npm:1":
version: 1.0.9
resolution: "d3-path@npm:1.0.9"
checksum: 10c0/e35e84df5abc18091f585725b8235e1fa97efc287571585427d3a3597301e6c506dea56b11dfb3c06ca5858b3eb7f02c1bf4f6a716aa9eade01c41b92d497eb5
languageName: node
linkType: hard
"d3-sankey@npm:^0.7.1":
version: 0.7.1
resolution: "d3-sankey@npm:0.7.1"
dependencies:
d3-array: "npm:1"
d3-collection: "npm:1"
d3-shape: "npm:^1.2.0"
checksum: 10c0/eba13f931d3bde6eae99c74b966e63400d5a10ecd3627b22f771e11a08eb3239a5e77c81c378533e574444be62b34b5758d757e13c5e55b4ffb63c69c4e7fc88
languageName: node
linkType: hard
"d3-scale-chromatic@npm:2.0.0":
version: 2.0.0
resolution: "d3-scale-chromatic@npm:2.0.0"
dependencies:
d3-color: "npm:1 - 2"
d3-interpolate: "npm:1 - 2"
checksum: 10c0/93cafe497b00046b1d4e237a8bb8981fbb35ba03070f420bd913872f6e9d2c9628ed8bb8c84c6a6ffe16029359fa74b646c5c5129732ef4186ab059a77da3021
languageName: node
linkType: hard
"d3-scale@npm:^1.0.5":
version: 1.0.7
resolution: "d3-scale@npm:1.0.7"
dependencies:
d3-array: "npm:^1.2.0"
d3-collection: "npm:1"
d3-color: "npm:1"
d3-format: "npm:1"
d3-interpolate: "npm:1"
d3-time: "npm:1"
d3-time-format: "npm:2"
checksum: 10c0/95d614fb10fc23cffd42f46cd8bd610a27543dea28f94dec42923a5b85303f8b1d5e8530f7a8f980a47df2d48e1a784dd5cfbd1281f9c646f147f9c8571b4f14
languageName: node
linkType: hard
"d3-scale@npm:^3.2.3":
version: 3.3.0
resolution: "d3-scale@npm:3.3.0"
dependencies:
d3-array: "npm:^2.3.0"
d3-format: "npm:1 - 2"
d3-interpolate: "npm:1.2.0 - 2"
d3-time: "npm:^2.1.1"
d3-time-format: "npm:2 - 3"
checksum: 10c0/cb63c271ec9c5b632c245c63e0d0716b32adcc468247972c552f5be62fb34a17f71e4ac29fd8976704369f4b958bc6789c61a49427efe2160ae979d7843569dc
languageName: node
linkType: hard
"d3-selection@npm:2, d3-selection@npm:^2.0.0":
version: 2.0.0
resolution: "d3-selection@npm:2.0.0"
checksum: 10c0/cd38f5e0baf2011f421e909ff5748235b18510175b7433ddddb04df325a4a03d7db07da09993afb464d5f050174c13cb5d843da902e71e3e8eb5f06c28fc8689
languageName: node
linkType: hard
"d3-shape@npm:^1.1.0, d3-shape@npm:^1.2.0":
version: 1.3.7
resolution: "d3-shape@npm:1.3.7"
dependencies:
d3-path: "npm:1"
checksum: 10c0/548057ce59959815decb449f15632b08e2a1bdce208f9a37b5f98ec7629dda986c2356bc7582308405ce68aedae7d47b324df41507404df42afaf352907577ae
languageName: node
linkType: hard
"d3-time-format@npm:2":
version: 2.3.0
resolution: "d3-time-format@npm:2.3.0"
dependencies:
d3-time: "npm:1"
checksum: 10c0/4ca7b5b4ac8fcf4b7930a5dc4ee5f34b188ebd0a36029df2acee0f68b5028451c045c63a12e3970da8e9840548588bde3d366ef8ee7fcb107459d4a6ad11d8c5
languageName: node
linkType: hard
"d3-time-format@npm:2 - 3":
version: 3.0.0
resolution: "d3-time-format@npm:3.0.0"
dependencies:
d3-time: "npm:1 - 2"
checksum: 10c0/0abe3379f07d1c12ce8930cdddad1223c99cd3e4eac05cf409b5a7953e9ebed56a95a64b0977f63958cfb6101fa4a2a85533a5eae40df84f22c0117dbf5e8982
languageName: node
linkType: hard
"d3-time@npm:1":
version: 1.1.0
resolution: "d3-time@npm:1.1.0"
checksum: 10c0/69ab137adff5b22d0fa148ea514a207bd9cd7d2c042ccf34a268f2ef73720b404f0be6e7b56c95650c53caf52080b5254e2a27f0a676f41d1dd22ef8872c8335
languageName: node
linkType: hard
"d3-time@npm:1 - 2, d3-time@npm:^2.0.0, d3-time@npm:^2.1.1":
version: 2.1.1
resolution: "d3-time@npm:2.1.1"
dependencies:
d3-array: "npm:2"
checksum: 10c0/4a01770a857bc37d2bafb8f00250e0e6a1fcc8051aea93e5eed168d8ee93e92da508a75ab5e42fc5472aa37e2a83aac68afaf3f12d9167c184ce781faadf5682
languageName: node
linkType: hard
"d3-timer@npm:1 - 2":
version: 2.0.0
resolution: "d3-timer@npm:2.0.0"
checksum: 10c0/95f92ed8edbd0844c023de543ebca4d6aba7f9f8b2ecdbc3d61e01e4df5e74ffbce81238a3c4fd63d118bb1d05ca6331522df565fab146a2790e5c6a847f6275
languageName: node
linkType: hard
"d3-transition@npm:2":
version: 2.0.0
resolution: "d3-transition@npm:2.0.0"
dependencies:
d3-color: "npm:1 - 2"
d3-dispatch: "npm:1 - 2"
d3-ease: "npm:1 - 2"
d3-interpolate: "npm:1 - 2"
d3-timer: "npm:1 - 2"
peerDependencies:
d3-selection: 2
checksum: 10c0/a775365c90acfcf5745fb18146ce0a5cb71bfdf69433f4d12cc286da0f88b3b1fbdd6782ccfe8e60de95133107cd8a47a4736fa19e94ffb08f1000e6cd9ebdb6
languageName: node
linkType: hard
"d3-voronoi@npm:^1.1.2":
version: 1.1.4
resolution: "d3-voronoi@npm:1.1.4"
checksum: 10c0/9fd4689323a8eed547dde44e9cae0b3e6a7333447cf37b069e278b8e899fc16e0251d099fe22d751c900a3a0b7a610a16e747224219538758afaf4561749047a
languageName: node
linkType: hard
"data-view-buffer@npm:^1.0.1":
version: 1.0.1
resolution: "data-view-buffer@npm:1.0.1"
dependencies:
call-bind: "npm:^1.0.6"
es-errors: "npm:^1.3.0"
is-data-view: "npm:^1.0.1"
checksum: 10c0/8984119e59dbed906a11fcfb417d7d861936f16697a0e7216fe2c6c810f6b5e8f4a5281e73f2c28e8e9259027190ac4a33e2a65fdd7fa86ac06b76e838918583
languageName: node
linkType: hard
"data-view-byte-length@npm:^1.0.1":
version: 1.0.1
resolution: "data-view-byte-length@npm:1.0.1"
dependencies:
call-bind: "npm:^1.0.7"
es-errors: "npm:^1.3.0"
is-data-view: "npm:^1.0.1"
checksum: 10c0/b7d9e48a0cf5aefed9ab7d123559917b2d7e0d65531f43b2fd95b9d3a6b46042dd3fca597c42bba384e66b70d7ad66ff23932f8367b241f53d93af42cfe04ec2
languageName: node
linkType: hard
"data-view-byte-offset@npm:^1.0.0":
version: 1.0.0
resolution: "data-view-byte-offset@npm:1.0.0"
dependencies:
call-bind: "npm:^1.0.6"
es-errors: "npm:^1.3.0"
is-data-view: "npm:^1.0.1"
checksum: 10c0/21b0d2e53fd6e20cc4257c873bf6d36d77bd6185624b84076c0a1ddaa757b49aaf076254006341d35568e89f52eecd1ccb1a502cfb620f2beca04f48a6a62a8f
languageName: node
linkType: hard
"debug@npm:4, debug@npm:^4.2.0, debug@npm:^4.3.4":
version: 4.4.0
resolution: "debug@npm:4.4.0"
dependencies:
ms: "npm:^2.1.3"
peerDependenciesMeta:
supports-color:
optional: true
checksum: 10c0/db94f1a182bf886f57b4755f85b3a74c39b5114b9377b7ab375dc2cfa3454f09490cc6c30f829df3fc8042bc8b8995f6567ce5cd96f3bc3688bd24027197d9de
languageName: node
linkType: hard
"debug@npm:^4.0.0":
version: 4.3.6
resolution: "debug@npm:4.3.6"
dependencies:
ms: "npm:2.1.2"
peerDependenciesMeta:
supports-color:
optional: true
checksum: 10c0/3293416bff072389c101697d4611c402a6bacd1900ac20c0492f61a9cdd6b3b29750fc7f5e299f8058469ef60ff8fb79b86395a30374fbd2490113c1c7112285
languageName: node
linkType: hard
"decamelize-keys@npm:^1.1.0":
version: 1.1.1
resolution: "decamelize-keys@npm:1.1.1"
dependencies:
decamelize: "npm:^1.1.0"
map-obj: "npm:^1.0.0"
checksum: 10c0/4ca385933127437658338c65fb9aead5f21b28d3dd3ccd7956eb29aab0953b5d3c047fbc207111672220c71ecf7a4d34f36c92851b7bbde6fca1a02c541bdd7d
languageName: node
linkType: hard
"decamelize@npm:1.2.0, decamelize@npm:^1.1.0, decamelize@npm:^1.2.0":
version: 1.2.0
resolution: "decamelize@npm:1.2.0"
checksum: 10c0/85c39fe8fbf0482d4a1e224ef0119db5c1897f8503bcef8b826adff7a1b11414972f6fef2d7dec2ee0b4be3863cf64ac1439137ae9e6af23a3d8dcbe26a5b4b2
languageName: node
linkType: hard
"decimal.js@npm:10, decimal.js@npm:^10.2.0":
version: 10.4.3
resolution: "decimal.js@npm:10.4.3"
checksum: 10c0/6d60206689ff0911f0ce968d40f163304a6c1bc739927758e6efc7921cfa630130388966f16bf6ef6b838cb33679fbe8e7a78a2f3c478afce841fd55ac8fb8ee
languageName: node
linkType: hard
"decode-named-character-reference@npm:^1.0.0":
version: 1.1.0
resolution: "decode-named-character-reference@npm:1.1.0"
dependencies:
character-entities: "npm:^2.0.0"
checksum: 10c0/359c76305b47e67660ec096c5cd3f65972ed75b8a53a40435a7a967cfab3e9516e64b443cbe0c7edcf5ab77f65a6924f12fb1872b1e09e2f044f28f4fd10996a
languageName: node
linkType: hard
"decompress-response@npm:^6.0.0":
version: 6.0.0
resolution: "decompress-response@npm:6.0.0"
dependencies:
mimic-response: "npm:^3.1.0"
checksum: 10c0/bd89d23141b96d80577e70c54fb226b2f40e74a6817652b80a116d7befb8758261ad073a8895648a29cc0a5947021ab66705cb542fa9c143c82022b27c5b175e
languageName: node
linkType: hard
"deep-diff@npm:^0.3.5":
version: 0.3.8
resolution: "deep-diff@npm:0.3.8"
checksum: 10c0/dbb10937ccff21b1ad1ee5e64ad926643a7000cb9837bc2165bacfddf569788c78b8bfd74401c32121af3fb1cb1092b7447319d9f01900676473a1b840c08ade
languageName: node
linkType: hard
"deep-equal@npm:^1.0.1":
version: 1.1.2
resolution: "deep-equal@npm:1.1.2"
dependencies:
is-arguments: "npm:^1.1.1"
is-date-object: "npm:^1.0.5"
is-regex: "npm:^1.1.4"
object-is: "npm:^1.1.5"
object-keys: "npm:^1.1.1"
regexp.prototype.flags: "npm:^1.5.1"
checksum: 10c0/cd85d822d18e9b3e1532d0f6ba412d229aa9d22881d70da161674428ae96e47925191296f7cda29306bac252889007da40ed8449363bd1c96c708acb82068a00
languageName: node
linkType: hard
"deep-strict-equal@npm:^0.2.0":
version: 0.2.0
resolution: "deep-strict-equal@npm:0.2.0"
dependencies:
core-assert: "npm:^0.2.0"
checksum: 10c0/774bffaa22c625e54452de4796183099ad95f03f6a4ead2dac7e61d884fddd7e56d56e07d89d31df5914a7172458377fedc33e84579a47301130c41da6fe06b1
languageName: node
linkType: hard
"deepmerge@npm:4.3.1, deepmerge@npm:^4.2.2":
version: 4.3.1
resolution: "deepmerge@npm:4.3.1"
checksum: 10c0/e53481aaf1aa2c4082b5342be6b6d8ad9dfe387bc92ce197a66dea08bd4265904a087e75e464f14d1347cf2ac8afe1e4c16b266e0561cc5df29382d3c5f80044
languageName: node
linkType: hard
"defer-to-connect@npm:^2.0.0":
version: 2.0.1
resolution: "defer-to-connect@npm:2.0.1"
checksum: 10c0/625ce28e1b5ad10cf77057b9a6a727bf84780c17660f6644dab61dd34c23de3001f03cedc401f7d30a4ed9965c2e8a7336e220a329146f2cf85d4eddea429782
languageName: node
linkType: hard
"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4":
version: 1.1.4
resolution: "define-data-property@npm:1.1.4"
dependencies:
es-define-property: "npm:^1.0.0"
es-errors: "npm:^1.3.0"
gopd: "npm:^1.0.1"
checksum: 10c0/dea0606d1483eb9db8d930d4eac62ca0fa16738b0b3e07046cddfacf7d8c868bbe13fa0cb263eb91c7d0d527960dc3f2f2471a69ed7816210307f6744fe62e37
languageName: node
linkType: hard
"define-properties@npm:^1.2.0, define-properties@npm:^1.2.1":
version: 1.2.1
resolution: "define-properties@npm:1.2.1"
dependencies:
define-data-property: "npm:^1.0.1"
has-property-descriptors: "npm:^1.0.0"
object-keys: "npm:^1.1.1"
checksum: 10c0/88a152319ffe1396ccc6ded510a3896e77efac7a1bfbaa174a7b00414a1747377e0bb525d303794a47cf30e805c2ec84e575758512c6e44a993076d29fd4e6c3
languageName: node
linkType: hard
"delayed-stream@npm:~1.0.0":
version: 1.0.0
resolution: "delayed-stream@npm:1.0.0"
checksum: 10c0/d758899da03392e6712f042bec80aa293bbe9e9ff1b2634baae6a360113e708b91326594c8a486d475c69d6259afb7efacdc3537bfcda1c6c648e390ce601b19
languageName: node
linkType: hard
"dequal@npm:^2.0.0, dequal@npm:^2.0.3":
version: 2.0.3
resolution: "dequal@npm:2.0.3"
checksum: 10c0/f98860cdf58b64991ae10205137c0e97d384c3a4edc7f807603887b7c4b850af1224a33d88012009f150861cbee4fa2d322c4cc04b9313bee312e47f6ecaa888
languageName: node
linkType: hard
"detect-element-overflow@npm:^1.4.0":
version: 1.4.2
resolution: "detect-element-overflow@npm:1.4.2"
checksum: 10c0/dcc5f6d89c31f6035202cce64b96093338e777752b62c401c672e84908097ef01f833af5864e1c86c6440e4f843658f006d1084fb9090983ea5c438c8ad4a180
languageName: node
linkType: hard
"devlop@npm:^1.0.0, devlop@npm:^1.1.0":
version: 1.1.0
resolution: "devlop@npm:1.1.0"
dependencies:
dequal: "npm:^2.0.0"
checksum: 10c0/e0928ab8f94c59417a2b8389c45c55ce0a02d9ac7fd74ef62d01ba48060129e1d594501b77de01f3eeafc7cb00773819b0df74d96251cf20b31c5b3071f45c0e
languageName: node
linkType: hard
"didyoumean@npm:^1.2.2":
version: 1.2.2
resolution: "didyoumean@npm:1.2.2"
checksum: 10c0/95d0b53d23b851aacff56dfadb7ecfedce49da4232233baecfeecb7710248c4aa03f0aa8995062f0acafaf925adf8536bd7044a2e68316fd7d411477599bc27b
languageName: node
linkType: hard
"diff-match-patch@npm:^1.0.5":
version: 1.0.5
resolution: "diff-match-patch@npm:1.0.5"
checksum: 10c0/142b6fad627b9ef309d11bd935e82b84c814165a02500f046e2773f4ea894d10ed3017ac20454900d79d4a0322079f5b713cf0986aaf15fce0ec4a2479980c86
languageName: node
linkType: hard
"dlv@npm:^1.1.3":
version: 1.1.3
resolution: "dlv@npm:1.1.3"
checksum: 10c0/03eb4e769f19a027fd5b43b59e8a05e3fd2100ac239ebb0bf9a745de35d449e2f25cfaf3aa3934664551d72856f4ae8b7822016ce5c42c2d27c18ae79429ec42
languageName: node
linkType: hard
"dom-helpers@npm:^5.1.3":
version: 5.2.1
resolution: "dom-helpers@npm:5.2.1"
dependencies:
"@babel/runtime": "npm:^7.8.7"
csstype: "npm:^3.0.2"
checksum: 10c0/f735074d66dd759b36b158fa26e9d00c9388ee0e8c9b16af941c38f014a37fc80782de83afefd621681b19ac0501034b4f1c4a3bff5caa1b8667f0212b5e124c
languageName: node
linkType: hard
"dom-walk@npm:^0.1.0":
version: 0.1.2
resolution: "dom-walk@npm:0.1.2"
checksum: 10c0/4d2ad9062a9423d890f8577aa202b597a6b85f9489bdde656b9443901b8b322b289655c3affefc58ec2e41931e0828dfee0a1d2db6829a607d76def5901fc5a9
languageName: node
linkType: hard
"dotenv-expand@npm:^10.0.0":
version: 10.0.0
resolution: "dotenv-expand@npm:10.0.0"
checksum: 10c0/298f5018e29cfdcb0b5f463ba8e8627749103fbcf6cf81c561119115754ed582deee37b49dfc7253028aaba875ab7aea5fa90e5dac88e511d009ab0e6677924e
languageName: node
linkType: hard
"dotenv@npm:^16.4.5":
version: 16.4.7
resolution: "dotenv@npm:16.4.7"
checksum: 10c0/be9f597e36a8daf834452daa1f4cc30e5375a5968f98f46d89b16b983c567398a330580c88395069a77473943c06b877d1ca25b4afafcdd6d4adb549e8293462
languageName: node
linkType: hard
"draco3d@npm:1.5.5":
version: 1.5.5
resolution: "draco3d@npm:1.5.5"
checksum: 10c0/bbf5d91ee7fb24aba80d75030590141ac14cf2865ad9d0a5127bdf73e89ce81cce15f28bb262940fd997a4dbae925ea52895a65db2e1941d52be293853fd3df0
languageName: node
linkType: hard
"draco3d@npm:1.5.7":
version: 1.5.7
resolution: "draco3d@npm:1.5.7"
checksum: 10c0/4419509bb93c31560a22a1a54e1c394a5b5017cab39941120c75151d941c11dec05925abf31f597ac2694c570b78c04f82aa3d69e5311f8f8e71fc8b9d92d12f
languageName: node
linkType: hard
"dropbox@npm:^4.0.12":
version: 4.0.30
resolution: "dropbox@npm:4.0.30"
dependencies:
buffer: "npm:^5.0.8"
moment: "npm:^2.19.3"
checksum: 10c0/590c859b4861490158dcc594e62e72e0907106a2eefaa845a8cd9a65595ed876c93eb7c40b672d99d1f5afa66cff2632110a3508f3656a57ea882d04a3648020
languageName: node
linkType: hard
"earcut@npm:^2.0.6, earcut@npm:^2.2.2, earcut@npm:^2.2.4":
version: 2.2.4
resolution: "earcut@npm:2.2.4"
checksum: 10c0/01ca51830edd2787819f904ae580087d37351f6048b4565e7add4b3da8a86b7bc19262ab2aa7fdc64129ab03af2d9cec8cccee4d230c82275f97ef285c79aafb
languageName: node
linkType: hard
"eastasianwidth@npm:^0.2.0":
version: 0.2.0
resolution: "eastasianwidth@npm:0.2.0"
checksum: 10c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39
languageName: node
linkType: hard
"echarts-for-react@npm:^3.0.2":
version: 3.0.2
resolution: "echarts-for-react@npm:3.0.2"
dependencies:
fast-deep-equal: "npm:^3.1.3"
size-sensor: "npm:^1.0.1"
peerDependencies:
echarts: ^3.0.0 || ^4.0.0 || ^5.0.0
react: ^15.0.0 || >=16.0.0
checksum: 10c0/a67d76d2cea6fdb8efa9e305fa998f4933053a647df13ea58b4ea0c7892a72e9afb7523a7382d98b541983e5e073adafc2c4103d7dcb88d86757c4582d45e400
languageName: node
linkType: hard
"echarts@npm:^5.5.1":
version: 5.6.0
resolution: "echarts@npm:5.6.0"
dependencies:
tslib: "npm:2.3.0"
zrender: "npm:5.6.1"
checksum: 10c0/6d6a2ee88534d1ff0433e935c542237b9896de1c94959f47ebc7e0e9da26f59bf11c91ed6fc135b62ad2786c779ee12bc536fa481e60532dad5b6a2f5167e9ea
languageName: node
linkType: hard
"emoji-regex@npm:^8.0.0":
version: 8.0.0
resolution: "emoji-regex@npm:8.0.0"
checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010
languageName: node
linkType: hard
"emoji-regex@npm:^9.2.2":
version: 9.2.2
resolution: "emoji-regex@npm:9.2.2"
checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639
languageName: node
linkType: hard
"encoding@npm:^0.1.11, encoding@npm:^0.1.13":
version: 0.1.13
resolution: "encoding@npm:0.1.13"
dependencies:
iconv-lite: "npm:^0.6.2"
checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039
languageName: node
linkType: hard
"end-of-stream@npm:^1.1.0":
version: 1.4.4
resolution: "end-of-stream@npm:1.4.4"
dependencies:
once: "npm:^1.4.0"
checksum: 10c0/870b423afb2d54bb8d243c63e07c170409d41e20b47eeef0727547aea5740bd6717aca45597a9f2745525667a6b804c1e7bede41f856818faee5806dd9ff3975
languageName: node
linkType: hard
"env-paths@npm:^2.2.0":
version: 2.2.1
resolution: "env-paths@npm:2.2.1"
checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4
languageName: node
linkType: hard
"err-code@npm:^2.0.2":
version: 2.0.3
resolution: "err-code@npm:2.0.3"
checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66
languageName: node
linkType: hard
"error-ex@npm:^1.3.1":
version: 1.3.2
resolution: "error-ex@npm:1.3.2"
dependencies:
is-arrayish: "npm:^0.2.1"
checksum: 10c0/ba827f89369b4c93382cfca5a264d059dfefdaa56ecc5e338ffa58a6471f5ed93b71a20add1d52290a4873d92381174382658c885ac1a2305f7baca363ce9cce
languageName: node
linkType: hard
"es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0":
version: 1.23.3
resolution: "es-abstract@npm:1.23.3"
dependencies:
array-buffer-byte-length: "npm:^1.0.1"
arraybuffer.prototype.slice: "npm:^1.0.3"
available-typed-arrays: "npm:^1.0.7"
call-bind: "npm:^1.0.7"
data-view-buffer: "npm:^1.0.1"
data-view-byte-length: "npm:^1.0.1"
data-view-byte-offset: "npm:^1.0.0"
es-define-property: "npm:^1.0.0"
es-errors: "npm:^1.3.0"
es-object-atoms: "npm:^1.0.0"
es-set-tostringtag: "npm:^2.0.3"
es-to-primitive: "npm:^1.2.1"
function.prototype.name: "npm:^1.1.6"
get-intrinsic: "npm:^1.2.4"
get-symbol-description: "npm:^1.0.2"
globalthis: "npm:^1.0.3"
gopd: "npm:^1.0.1"
has-property-descriptors: "npm:^1.0.2"
has-proto: "npm:^1.0.3"
has-symbols: "npm:^1.0.3"
hasown: "npm:^2.0.2"
internal-slot: "npm:^1.0.7"
is-array-buffer: "npm:^3.0.4"
is-callable: "npm:^1.2.7"
is-data-view: "npm:^1.0.1"
is-negative-zero: "npm:^2.0.3"
is-regex: "npm:^1.1.4"
is-shared-array-buffer: "npm:^1.0.3"
is-string: "npm:^1.0.7"
is-typed-array: "npm:^1.1.13"
is-weakref: "npm:^1.0.2"
object-inspect: "npm:^1.13.1"
object-keys: "npm:^1.1.1"
object.assign: "npm:^4.1.5"
regexp.prototype.flags: "npm:^1.5.2"
safe-array-concat: "npm:^1.1.2"
safe-regex-test: "npm:^1.0.3"
string.prototype.trim: "npm:^1.2.9"
string.prototype.trimend: "npm:^1.0.8"
string.prototype.trimstart: "npm:^1.0.8"
typed-array-buffer: "npm:^1.0.2"
typed-array-byte-length: "npm:^1.0.1"
typed-array-byte-offset: "npm:^1.0.2"
typed-array-length: "npm:^1.0.6"
unbox-primitive: "npm:^1.0.2"
which-typed-array: "npm:^1.1.15"
checksum: 10c0/d27e9afafb225c6924bee9971a7f25f20c314f2d6cb93a63cada4ac11dcf42040896a6c22e5fb8f2a10767055ed4ddf400be3b1eb12297d281726de470b75666
languageName: node
linkType: hard
"es-define-property@npm:^1.0.0":
version: 1.0.0
resolution: "es-define-property@npm:1.0.0"
dependencies:
get-intrinsic: "npm:^1.2.4"
checksum: 10c0/6bf3191feb7ea2ebda48b577f69bdfac7a2b3c9bcf97307f55fd6ef1bbca0b49f0c219a935aca506c993d8c5d8bddd937766cb760cd5e5a1071351f2df9f9aa4
languageName: node
linkType: hard
"es-errors@npm:^1.2.1, es-errors@npm:^1.3.0":
version: 1.3.0
resolution: "es-errors@npm:1.3.0"
checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85
languageName: node
linkType: hard
"es-object-atoms@npm:^1.0.0":
version: 1.0.0
resolution: "es-object-atoms@npm:1.0.0"
dependencies:
es-errors: "npm:^1.3.0"
checksum: 10c0/1fed3d102eb27ab8d983337bb7c8b159dd2a1e63ff833ec54eea1311c96d5b08223b433060ba240541ca8adba9eee6b0a60cdbf2f80634b784febc9cc8b687b4
languageName: node
linkType: hard
"es-set-tostringtag@npm:^2.0.3":
version: 2.0.3
resolution: "es-set-tostringtag@npm:2.0.3"
dependencies:
get-intrinsic: "npm:^1.2.4"
has-tostringtag: "npm:^1.0.2"
hasown: "npm:^2.0.1"
checksum: 10c0/f22aff1585eb33569c326323f0b0d175844a1f11618b86e193b386f8be0ea9474cfbe46df39c45d959f7aa8f6c06985dc51dd6bce5401645ec5a74c4ceaa836a
languageName: node
linkType: hard
"es-to-primitive@npm:^1.2.1":
version: 1.2.1
resolution: "es-to-primitive@npm:1.2.1"
dependencies:
is-callable: "npm:^1.1.4"
is-date-object: "npm:^1.0.1"
is-symbol: "npm:^1.0.2"
checksum: 10c0/0886572b8dc075cb10e50c0af62a03d03a68e1e69c388bd4f10c0649ee41b1fbb24840a1b7e590b393011b5cdbe0144b776da316762653685432df37d6de60f1
languageName: node
linkType: hard
"esbuild-plugin-replace@npm:^1.4.0":
version: 1.4.0
resolution: "esbuild-plugin-replace@npm:1.4.0"
dependencies:
magic-string: "npm:^0.25.7"
checksum: 10c0/9574557ca6a63bb31818df3383618d8c12c32f142145cbdd1a80db5d7b88ed032e989708e302651a74bc9fa40bcf441c1aa6cbbce0fce5c511a5843577906f6a
languageName: node
linkType: hard
"esbuild@npm:^0.25.0":
version: 0.25.0
resolution: "esbuild@npm:0.25.0"
dependencies:
"@esbuild/aix-ppc64": "npm:0.25.0"
"@esbuild/android-arm": "npm:0.25.0"
"@esbuild/android-arm64": "npm:0.25.0"
"@esbuild/android-x64": "npm:0.25.0"
"@esbuild/darwin-arm64": "npm:0.25.0"
"@esbuild/darwin-x64": "npm:0.25.0"
"@esbuild/freebsd-arm64": "npm:0.25.0"
"@esbuild/freebsd-x64": "npm:0.25.0"
"@esbuild/linux-arm": "npm:0.25.0"
"@esbuild/linux-arm64": "npm:0.25.0"
"@esbuild/linux-ia32": "npm:0.25.0"
"@esbuild/linux-loong64": "npm:0.25.0"
"@esbuild/linux-mips64el": "npm:0.25.0"
"@esbuild/linux-ppc64": "npm:0.25.0"
"@esbuild/linux-riscv64": "npm:0.25.0"
"@esbuild/linux-s390x": "npm:0.25.0"
"@esbuild/linux-x64": "npm:0.25.0"
"@esbuild/netbsd-arm64": "npm:0.25.0"
"@esbuild/netbsd-x64": "npm:0.25.0"
"@esbuild/openbsd-arm64": "npm:0.25.0"
"@esbuild/openbsd-x64": "npm:0.25.0"
"@esbuild/sunos-x64": "npm:0.25.0"
"@esbuild/win32-arm64": "npm:0.25.0"
"@esbuild/win32-ia32": "npm:0.25.0"
"@esbuild/win32-x64": "npm:0.25.0"
dependenciesMeta:
"@esbuild/aix-ppc64":
optional: true
"@esbuild/android-arm":
optional: true
"@esbuild/android-arm64":
optional: true
"@esbuild/android-x64":
optional: true
"@esbuild/darwin-arm64":
optional: true
"@esbuild/darwin-x64":
optional: true
"@esbuild/freebsd-arm64":
optional: true
"@esbuild/freebsd-x64":
optional: true
"@esbuild/linux-arm":
optional: true
"@esbuild/linux-arm64":
optional: true
"@esbuild/linux-ia32":
optional: true
"@esbuild/linux-loong64":
optional: true
"@esbuild/linux-mips64el":
optional: true
"@esbuild/linux-ppc64":
optional: true
"@esbuild/linux-riscv64":
optional: true
"@esbuild/linux-s390x":
optional: true
"@esbuild/linux-x64":
optional: true
"@esbuild/netbsd-arm64":
optional: true
"@esbuild/netbsd-x64":
optional: true
"@esbuild/openbsd-arm64":
optional: true
"@esbuild/openbsd-x64":
optional: true
"@esbuild/sunos-x64":
optional: true
"@esbuild/win32-arm64":
optional: true
"@esbuild/win32-ia32":
optional: true
"@esbuild/win32-x64":
optional: true
bin:
esbuild: bin/esbuild
checksum: 10c0/5767b72da46da3cfec51661647ec850ddbf8a8d0662771139f10ef0692a8831396a0004b2be7966cecdb08264fb16bdc16290dcecd92396fac5f12d722fa013d
languageName: node
linkType: hard
"escape-string-regexp@npm:^1.0.5":
version: 1.0.5
resolution: "escape-string-regexp@npm:1.0.5"
checksum: 10c0/a968ad453dd0c2724e14a4f20e177aaf32bb384ab41b674a8454afe9a41c5e6fe8903323e0a1052f56289d04bd600f81278edf140b0fcc02f5cac98d0f5b5371
languageName: node
linkType: hard
"escape-string-regexp@npm:^5.0.0":
version: 5.0.0
resolution: "escape-string-regexp@npm:5.0.0"
checksum: 10c0/6366f474c6f37a802800a435232395e04e9885919873e382b157ab7e8f0feb8fed71497f84a6f6a81a49aab41815522f5839112bd38026d203aea0c91622df95
languageName: node
linkType: hard
"esm@npm:^3.2.25":
version: 3.2.25
resolution: "esm@npm:3.2.25"
checksum: 10c0/8e60e8075506a7ce28681c30c8f54623fe18a251c364cd481d86719fc77f58aa055b293d80632d9686d5408aaf865ffa434897dc9fd9153c8b3f469fad23f094
languageName: node
linkType: hard
"estree-util-is-identifier-name@npm:^3.0.0":
version: 3.0.0
resolution: "estree-util-is-identifier-name@npm:3.0.0"
checksum: 10c0/d1881c6ed14bd588ebd508fc90bf2a541811dbb9ca04dec2f39d27dcaa635f85b5ed9bbbe7fc6fb1ddfca68744a5f7c70456b4b7108b6c4c52780631cc787c5b
languageName: node
linkType: hard
"event-target-shim@npm:^5.0.0":
version: 5.0.1
resolution: "event-target-shim@npm:5.0.1"
checksum: 10c0/0255d9f936215fd206156fd4caa9e8d35e62075d720dc7d847e89b417e5e62cf1ce6c9b4e0a1633a9256de0efefaf9f8d26924b1f3c8620cffb9db78e7d3076b
languageName: node
linkType: hard
"eventemitter3@npm:^3.1.0":
version: 3.1.2
resolution: "eventemitter3@npm:3.1.2"
checksum: 10c0/c67262eccbf85848b7cc6d4abb6c6e34155e15686db2a01c57669fd0d44441a574a19d44d25948b442929e065774cbe5003d8e77eed47674fbf876ac77887793
languageName: node
linkType: hard
"eventemitter3@npm:^4.0.4":
version: 4.0.7
resolution: "eventemitter3@npm:4.0.7"
checksum: 10c0/5f6d97cbcbac47be798e6355e3a7639a84ee1f7d9b199a07017f1d2f1e2fe236004d14fa5dfaeba661f94ea57805385e326236a6debbc7145c8877fbc0297c6b
languageName: node
linkType: hard
"eventsource-parser@npm:^3.0.0":
version: 3.0.6
resolution: "eventsource-parser@npm:3.0.6"
checksum: 10c0/70b8ccec7dac767ef2eca43f355e0979e70415701691382a042a2df8d6a68da6c2fca35363669821f3da876d29c02abe9b232964637c1b6635c940df05ada78a
languageName: node
linkType: hard
"exenv@npm:^1.2.0, exenv@npm:^1.2.2":
version: 1.2.2
resolution: "exenv@npm:1.2.2"
checksum: 10c0/4e96b355a6b9b9547237288ca779dd673b2e698458b409e88b50df09feb7c85ef94c07354b6b87bc3ed0193a94009a6f7a3c71956da12f45911c0d0f5aa3caa0
languageName: node
linkType: hard
"exponential-backoff@npm:^3.1.1":
version: 3.1.1
resolution: "exponential-backoff@npm:3.1.1"
checksum: 10c0/160456d2d647e6019640bd07111634d8c353038d9fa40176afb7cd49b0548bdae83b56d05e907c2cce2300b81cae35d800ef92fefb9d0208e190fa3b7d6bb579
languageName: node
linkType: hard
"extend-shallow@npm:^2.0.1":
version: 2.0.1
resolution: "extend-shallow@npm:2.0.1"
dependencies:
is-extendable: "npm:^0.1.0"
checksum: 10c0/ee1cb0a18c9faddb42d791b2d64867bd6cfd0f3affb711782eb6e894dd193e2934a7f529426aac7c8ddb31ac5d38000a00aa2caf08aa3dfc3e1c8ff6ba340bd9
languageName: node
linkType: hard
"extend-shallow@npm:^3.0.0":
version: 3.0.2
resolution: "extend-shallow@npm:3.0.2"
dependencies:
assign-symbols: "npm:^1.0.0"
is-extendable: "npm:^1.0.1"
checksum: 10c0/f39581b8f98e3ad94995e33214fff725b0297cf09f2725b6f624551cfb71e0764accfd0af80becc0182af5014d2a57b31b85ec999f9eb8a6c45af81752feac9a
languageName: node
linkType: hard
"extend@npm:^3.0.0":
version: 3.0.2
resolution: "extend@npm:3.0.2"
checksum: 10c0/73bf6e27406e80aa3e85b0d1c4fd987261e628064e170ca781125c0b635a3dabad5e05adbf07595ea0cf1e6c5396cacb214af933da7cbaf24fe75ff14818e8f9
languageName: node
linkType: hard
"fast-deep-equal@npm:^3.1.3":
version: 3.1.3
resolution: "fast-deep-equal@npm:3.1.3"
checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0
languageName: node
linkType: hard
"fast-glob@npm:^3.3.2":
version: 3.3.3
resolution: "fast-glob@npm:3.3.3"
dependencies:
"@nodelib/fs.stat": "npm:^2.0.2"
"@nodelib/fs.walk": "npm:^1.2.3"
glob-parent: "npm:^5.1.2"
merge2: "npm:^1.3.0"
micromatch: "npm:^4.0.8"
checksum: 10c0/f6aaa141d0d3384cf73cbcdfc52f475ed293f6d5b65bfc5def368b09163a9f7e5ec2b3014d80f733c405f58e470ee0cc451c2937685045cddcdeaa24199c43fe
languageName: node
linkType: hard
"fast-xml-parser@npm:^4.2.5":
version: 4.5.3
resolution: "fast-xml-parser@npm:4.5.3"
dependencies:
strnum: "npm:^1.1.1"
bin:
fxparser: src/cli/cli.js
checksum: 10c0/bf9ccadacfadc95f6e3f0e7882a380a7f219cf0a6f96575149f02cb62bf44c3b7f0daee75b8ff3847bcfd7fbcb201e402c71045936c265cf6d94b141ec4e9327
languageName: node
linkType: hard
"fastq@npm:^1.6.0":
version: 1.18.0
resolution: "fastq@npm:1.18.0"
dependencies:
reusify: "npm:^1.0.4"
checksum: 10c0/7be87ecc41762adbddf558d24182f50a4b1a3ef3ee807d33b7623da7aee5faecdcc94fce5aa13fe91df93e269f383232bbcdb2dc5338cd1826503d6063221f36
languageName: node
linkType: hard
"fbjs@npm:^0.8.16":
version: 0.8.18
resolution: "fbjs@npm:0.8.18"
dependencies:
core-js: "npm:^1.0.0"
isomorphic-fetch: "npm:^2.1.1"
loose-envify: "npm:^1.0.0"
object-assign: "npm:^4.1.0"
promise: "npm:^7.1.1"
setimmediate: "npm:^1.0.5"
ua-parser-js: "npm:^0.7.30"
checksum: 10c0/a7e1c64c349cde000e5d94ce0289c59b725a95fbdacc22529155c4dacea1dde37a4dae7e16f0f6602dca566f15978b42acd7ee973b620eaac612b5228687ffe0
languageName: node
linkType: hard
"fflate@npm:0.7.4":
version: 0.7.4
resolution: "fflate@npm:0.7.4"
checksum: 10c0/5e749eb3a6ed61a0f6c55756abf9f4258f06f60505db689e22d18503dd252ca5af656d32668e4b7b20714adf8b313febf695d23863a8352f23e325baee0f672d
languageName: node
linkType: hard
"fflate@npm:^0.8.0":
version: 0.8.2
resolution: "fflate@npm:0.8.2"
checksum: 10c0/03448d630c0a583abea594835a9fdb2aaf7d67787055a761515bf4ed862913cfd693b4c4ffd5c3f3b355a70cf1e19033e9ae5aedcca103188aaff91b8bd6e293
languageName: node
linkType: hard
"fill-range@npm:^7.1.1":
version: 7.1.1
resolution: "fill-range@npm:7.1.1"
dependencies:
to-regex-range: "npm:^5.0.1"
checksum: 10c0/b75b691bbe065472f38824f694c2f7449d7f5004aa950426a2c28f0306c60db9b880c0b0e4ed819997ffb882d1da02cfcfc819bddc94d71627f5269682edf018
languageName: node
linkType: hard
"find-replace@npm:^3.0.0":
version: 3.0.0
resolution: "find-replace@npm:3.0.0"
dependencies:
array-back: "npm:^3.0.1"
checksum: 10c0/fcd1bf7960388c8193c2861bcdc760c18ac14edb4bde062a961915d9a25727b2e8aabf0229e90cc09c753fd557e5a3e5ae61e49cadbe727be89a9e8e49ce7668
languageName: node
linkType: hard
"find-replace@npm:^5.0.2":
version: 5.0.2
resolution: "find-replace@npm:5.0.2"
peerDependencies:
"@75lb/nature": "*"
peerDependenciesMeta:
"@75lb/nature":
optional: true
checksum: 10c0/25db7167e8767b0683251a985af82e29b0ac26003fe2cd6ddd86e4f2c83fc10d97a81c6f6686034d8c2b9ee88bc53547bf86cc103479a7323342da5ace9f6504
languageName: node
linkType: hard
"find-up@npm:^4.1.0":
version: 4.1.0
resolution: "find-up@npm:4.1.0"
dependencies:
locate-path: "npm:^5.0.0"
path-exists: "npm:^4.0.0"
checksum: 10c0/0406ee89ebeefa2d507feb07ec366bebd8a6167ae74aa4e34fb4c4abd06cf782a3ce26ae4194d70706f72182841733f00551c209fe575cb00bd92104056e78c1
languageName: node
linkType: hard
"find-up@npm:^5.0.0":
version: 5.0.0
resolution: "find-up@npm:5.0.0"
dependencies:
locate-path: "npm:^6.0.0"
path-exists: "npm:^4.0.0"
checksum: 10c0/062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a
languageName: node
linkType: hard
"flat@npm:^5.0.2":
version: 5.0.2
resolution: "flat@npm:5.0.2"
bin:
flat: cli.js
checksum: 10c0/f178b13482f0cd80c7fede05f4d10585b1f2fdebf26e12edc138e32d3150c6ea6482b7f12813a1091143bad52bb6d3596bca51a162257a21163c0ff438baa5fe
languageName: node
linkType: hard
"flatbuffers@npm:^24.3.25":
version: 24.3.25
resolution: "flatbuffers@npm:24.3.25"
checksum: 10c0/a40a1d46f6d474f1299091970700f36dc5bd86616b71cd99a1b6f521ca33b05f5d7623bd0ffadaa1e10fc63d6663aa3f9595f4916cd379e80c15787257e17a61
languageName: node
linkType: hard
"for-each@npm:^0.3.3":
version: 0.3.3
resolution: "for-each@npm:0.3.3"
dependencies:
is-callable: "npm:^1.1.3"
checksum: 10c0/22330d8a2db728dbf003ec9182c2d421fbcd2969b02b4f97ec288721cda63eb28f2c08585ddccd0f77cb2930af8d958005c9e72f47141dc51816127a118f39aa
languageName: node
linkType: hard
"foreground-child@npm:^3.1.0":
version: 3.3.0
resolution: "foreground-child@npm:3.3.0"
dependencies:
cross-spawn: "npm:^7.0.0"
signal-exit: "npm:^4.0.1"
checksum: 10c0/028f1d41000553fcfa6c4bb5c372963bf3d9bf0b1f25a87d1a6253014343fb69dfb1b42d9625d7cf44c8ba429940f3d0ff718b62105d4d4a4f6ef8ca0a53faa2
languageName: node
linkType: hard
"form-data-encoder@npm:1.7.2":
version: 1.7.2
resolution: "form-data-encoder@npm:1.7.2"
checksum: 10c0/56553768037b6d55d9de524f97fe70555f0e415e781cb56fc457a68263de3d40fadea2304d4beef2d40b1a851269bd7854e42c362107071892cb5238debe9464
languageName: node
linkType: hard
"form-data@npm:^3.0.0":
version: 3.0.1
resolution: "form-data@npm:3.0.1"
dependencies:
asynckit: "npm:^0.4.0"
combined-stream: "npm:^1.0.8"
mime-types: "npm:^2.1.12"
checksum: 10c0/1ccc3ae064a080a799923f754d49fcebdd90515a8924f0f54de557540b50e7f1fe48ba5f2bd0435a5664aa2d49729107e6aaf2155a9abf52339474c5638b4485
languageName: node
linkType: hard
"form-data@npm:^4.0.0":
version: 4.0.1
resolution: "form-data@npm:4.0.1"
dependencies:
asynckit: "npm:^0.4.0"
combined-stream: "npm:^1.0.8"
mime-types: "npm:^2.1.12"
checksum: 10c0/bb102d570be8592c23f4ea72d7df9daa50c7792eb0cf1c5d7e506c1706e7426a4e4ae48a35b109e91c85f1c0ec63774a21ae252b66f4eb981cb8efef7d0463c8
languageName: node
linkType: hard
"formdata-node@npm:^4.3.2":
version: 4.4.1
resolution: "formdata-node@npm:4.4.1"
dependencies:
node-domexception: "npm:1.0.0"
web-streams-polyfill: "npm:4.0.0-beta.3"
checksum: 10c0/74151e7b228ffb33b565cec69182694ad07cc3fdd9126a8240468bb70a8ba66e97e097072b60bcb08729b24c7ce3fd3e0bd7f1f80df6f9f662b9656786e76f6a
languageName: node
linkType: hard
"framer-motion@npm:^11.15.0":
version: 11.18.2
resolution: "framer-motion@npm:11.18.2"
dependencies:
motion-dom: "npm:^11.18.1"
motion-utils: "npm:^11.18.1"
tslib: "npm:^2.4.0"
peerDependencies:
"@emotion/is-prop-valid": "*"
react: ^18.0.0 || ^19.0.0
react-dom: ^18.0.0 || ^19.0.0
peerDependenciesMeta:
"@emotion/is-prop-valid":
optional: true
react:
optional: true
react-dom:
optional: true
checksum: 10c0/41b1ef1b4e54ea13adaf01d61812a8783d2352f74641c91b50519775704bc6274db6b6863ff494a1f705fa6c6ed8f4df3497292327c906d53ea0129cef3ec361
languageName: node
linkType: hard
"framer-motion@npm:^12.12.1":
version: 12.23.12
resolution: "framer-motion@npm:12.23.12"
dependencies:
motion-dom: "npm:^12.23.12"
motion-utils: "npm:^12.23.6"
tslib: "npm:^2.4.0"
peerDependencies:
"@emotion/is-prop-valid": "*"
react: ^18.0.0 || ^19.0.0
react-dom: ^18.0.0 || ^19.0.0
peerDependenciesMeta:
"@emotion/is-prop-valid":
optional: true
react:
optional: true
react-dom:
optional: true
checksum: 10c0/40dfb57bf714075c4f6dd0bbe5b84dd11310114474ebf603846ef9b888ed475fa653271c1fd98ec57a6a1d0b781cdf8b3ebcd5e2c6a3620e934b46304ae0fd39
languageName: node
linkType: hard
"fs-extra@npm:^7.0.0":
version: 7.0.1
resolution: "fs-extra@npm:7.0.1"
dependencies:
graceful-fs: "npm:^4.1.2"
jsonfile: "npm:^4.0.0"
universalify: "npm:^0.1.0"
checksum: 10c0/1943bb2150007e3739921b8d13d4109abdc3cc481e53b97b7ea7f77eda1c3c642e27ae49eac3af074e3496ea02fde30f411ef410c760c70a38b92e656e5da784
languageName: node
linkType: hard
"fs-minipass@npm:^3.0.0":
version: 3.0.3
resolution: "fs-minipass@npm:3.0.3"
dependencies:
minipass: "npm:^7.0.3"
checksum: 10c0/63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94
languageName: node
linkType: hard
"fsevents@npm:~2.3.2":
version: 2.3.3
resolution: "fsevents@npm:2.3.3"
dependencies:
node-gyp: "npm:latest"
checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60
conditions: os=darwin
languageName: node
linkType: hard
"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin":
version: 2.3.3
resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1"
dependencies:
node-gyp: "npm:latest"
conditions: os=darwin
languageName: node
linkType: hard
"function-bind@npm:^1.1.2":
version: 1.1.2
resolution: "function-bind@npm:1.1.2"
checksum: 10c0/d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5
languageName: node
linkType: hard
"function.prototype.name@npm:^1.1.0, function.prototype.name@npm:^1.1.6":
version: 1.1.6
resolution: "function.prototype.name@npm:1.1.6"
dependencies:
call-bind: "npm:^1.0.2"
define-properties: "npm:^1.2.0"
es-abstract: "npm:^1.22.1"
functions-have-names: "npm:^1.2.3"
checksum: 10c0/9eae11294905b62cb16874adb4fc687927cda3162285e0ad9612e6a1d04934005d46907362ea9cdb7428edce05a2f2c3dabc3b2d21e9fd343e9bb278230ad94b
languageName: node
linkType: hard
"functions-have-names@npm:^1.2.3":
version: 1.2.3
resolution: "functions-have-names@npm:1.2.3"
checksum: 10c0/33e77fd29bddc2d9bb78ab3eb854c165909201f88c75faa8272e35899e2d35a8a642a15e7420ef945e1f64a9670d6aa3ec744106b2aa42be68ca5114025954ca
languageName: node
linkType: hard
"fuzzy@npm:^0.1.3":
version: 0.1.3
resolution: "fuzzy@npm:0.1.3"
checksum: 10c0/584fcd57a03431707a6d0c1c4a41f17368cdb23d37dcb176d6cbbeeaecaac51be15dec229b3547acfb7db052cb066fcd86db907d40112ac4a3d3a368f88e7105
languageName: node
linkType: hard
"geojson-types@npm:^2.0.1":
version: 2.0.1
resolution: "geojson-types@npm:2.0.1"
checksum: 10c0/e7828f1c8106778f11d2437e10380be512bca5212e87302a5d856f8d35ef7994908c6dfb700e1e9625c58203b7a489b087b2354b1c8379f7ecc6da6360e84af6
languageName: node
linkType: hard
"geojson-vt@npm:^3.2.1":
version: 3.2.1
resolution: "geojson-vt@npm:3.2.1"
checksum: 10c0/db2fc1a452067ee8436fa86e5a138f6ebd3d64893e0af097bc1cc960ec63d67c0ce77444711e9583036192d6bf9ce754bf9b56a76789684fc0fea4d52321fffc
languageName: node
linkType: hard
"geojson@npm:0.5.0, geojson@npm:^0.5.0":
version: 0.5.0
resolution: "geojson@npm:0.5.0"
checksum: 10c0/d7fd376c201933dea1307b7c08032f249f73b9399d6287211f6a523d0efa9260caf2a38319f55075682d53dc4cb4c52b9f9c845f2fd03bef9832903f16177ab0
languageName: node
linkType: hard
"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4":
version: 1.2.4
resolution: "get-intrinsic@npm:1.2.4"
dependencies:
es-errors: "npm:^1.3.0"
function-bind: "npm:^1.1.2"
has-proto: "npm:^1.0.1"
has-symbols: "npm:^1.0.3"
hasown: "npm:^2.0.0"
checksum: 10c0/0a9b82c16696ed6da5e39b1267104475c47e3a9bdbe8b509dfe1710946e38a87be70d759f4bb3cda042d76a41ef47fe769660f3b7c0d1f68750299344ffb15b7
languageName: node
linkType: hard
"get-stream@npm:^5.1.0":
version: 5.2.0
resolution: "get-stream@npm:5.2.0"
dependencies:
pump: "npm:^3.0.0"
checksum: 10c0/43797ffd815fbb26685bf188c8cfebecb8af87b3925091dd7b9a9c915993293d78e3c9e1bce125928ff92f2d0796f3889b92b5ec6d58d1041b574682132e0a80
languageName: node
linkType: hard
"get-stream@npm:^6.0.1":
version: 6.0.1
resolution: "get-stream@npm:6.0.1"
checksum: 10c0/49825d57d3fd6964228e6200a58169464b8e8970489b3acdc24906c782fb7f01f9f56f8e6653c4a50713771d6658f7cfe051e5eb8c12e334138c9c918b296341
languageName: node
linkType: hard
"get-symbol-description@npm:^1.0.2":
version: 1.0.2
resolution: "get-symbol-description@npm:1.0.2"
dependencies:
call-bind: "npm:^1.0.5"
es-errors: "npm:^1.3.0"
get-intrinsic: "npm:^1.2.4"
checksum: 10c0/867be6d63f5e0eb026cb3b0ef695ec9ecf9310febb041072d2e142f260bd91ced9eeb426b3af98791d1064e324e653424afa6fd1af17dee373bea48ae03162bc
languageName: node
linkType: hard
"get-user-locale@npm:^2.2.1":
version: 2.3.2
resolution: "get-user-locale@npm:2.3.2"
dependencies:
mem: "npm:^8.0.0"
checksum: 10c0/2796b3fc3782b1f4826f31e899642cf72eeb23e296e1cf55280aab5caf7a25f4b906491ee1508a001519d6a410902ccf8fa8edaa895b7aee5dfd422ffe5523b9
languageName: node
linkType: hard
"get-value@npm:^2.0.2, get-value@npm:^2.0.6":
version: 2.0.6
resolution: "get-value@npm:2.0.6"
checksum: 10c0/f069c132791b357c8fc4adfe9e2929b0a2c6e95f98ca7bc6fcbc27f8a302e552f86b4ae61ec56d9e9ac2544b93b6a39743d479866a37b43fcc104088ba74f0d9
languageName: node
linkType: hard
"gl-matrix@npm:^3.0.0, gl-matrix@npm:^3.2.0, gl-matrix@npm:^3.2.1, gl-matrix@npm:^3.4.0, gl-matrix@npm:^3.4.3":
version: 3.4.3
resolution: "gl-matrix@npm:3.4.3"
checksum: 10c0/c8ee6e2ce2d089b4ba4ae13ec9d4cb99bf2abe5f68f0cb08d94bbd8bafbec13aacc7230b86539ce5ca01b79226ea8c3194f971f5ca0c81838bc5e4e619dc398e
languageName: node
linkType: hard
"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2":
version: 5.1.2
resolution: "glob-parent@npm:5.1.2"
dependencies:
is-glob: "npm:^4.0.1"
checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee
languageName: node
linkType: hard
"glob-parent@npm:^6.0.2":
version: 6.0.2
resolution: "glob-parent@npm:6.0.2"
dependencies:
is-glob: "npm:^4.0.3"
checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8
languageName: node
linkType: hard
"glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.3.7":
version: 10.4.5
resolution: "glob@npm:10.4.5"
dependencies:
foreground-child: "npm:^3.1.0"
jackspeak: "npm:^3.1.2"
minimatch: "npm:^9.0.4"
minipass: "npm:^7.1.2"
package-json-from-dist: "npm:^1.0.0"
path-scurry: "npm:^1.11.1"
bin:
glob: dist/esm/bin.mjs
checksum: 10c0/19a9759ea77b8e3ca0a43c2f07ecddc2ad46216b786bb8f993c445aee80d345925a21e5280c7b7c6c59e860a0154b84e4b2b60321fea92cd3c56b4a7489f160e
languageName: node
linkType: hard
"global-prefix@npm:^3.0.0":
version: 3.0.0
resolution: "global-prefix@npm:3.0.0"
dependencies:
ini: "npm:^1.3.5"
kind-of: "npm:^6.0.2"
which: "npm:^1.3.1"
checksum: 10c0/510f489fb68d1cc7060f276541709a0ee6d41356ef852de48f7906c648ac223082a1cc8fce86725ca6c0e032bcdc1189ae77b4744a624b29c34a9d0ece498269
languageName: node
linkType: hard
"global@npm:>=4.3.0, global@npm:^4.3.0, global@npm:^4.3.1":
version: 4.4.0
resolution: "global@npm:4.4.0"
dependencies:
min-document: "npm:^2.19.0"
process: "npm:^0.11.10"
checksum: 10c0/4a467aec6602c00a7c5685f310574ab04e289ad7f894f0f01c9c5763562b82f4b92d1e381ce6c5bbb12173e2a9f759c1b63dda6370cfb199970267e14d90aa91
languageName: node
linkType: hard
"globalthis@npm:^1.0.3":
version: 1.0.4
resolution: "globalthis@npm:1.0.4"
dependencies:
define-properties: "npm:^1.2.1"
gopd: "npm:^1.0.1"
checksum: 10c0/9d156f313af79d80b1566b93e19285f481c591ad6d0d319b4be5e03750d004dde40a39a0f26f7e635f9007a3600802f53ecd85a759b86f109e80a5f705e01846
languageName: node
linkType: hard
"gopd@npm:^1.0.1":
version: 1.0.1
resolution: "gopd@npm:1.0.1"
dependencies:
get-intrinsic: "npm:^1.1.3"
checksum: 10c0/505c05487f7944c552cee72087bf1567debb470d4355b1335f2c262d218ebbff805cd3715448fe29b4b380bae6912561d0467233e4165830efd28da241418c63
languageName: node
linkType: hard
"got@npm:^11.8.5":
version: 11.8.6
resolution: "got@npm:11.8.6"
dependencies:
"@sindresorhus/is": "npm:^4.0.0"
"@szmarczak/http-timer": "npm:^4.0.5"
"@types/cacheable-request": "npm:^6.0.1"
"@types/responselike": "npm:^1.0.0"
cacheable-lookup: "npm:^5.0.3"
cacheable-request: "npm:^7.0.2"
decompress-response: "npm:^6.0.0"
http2-wrapper: "npm:^1.0.0-beta.5.2"
lowercase-keys: "npm:^2.0.0"
p-cancelable: "npm:^2.0.0"
responselike: "npm:^2.0.0"
checksum: 10c0/754dd44877e5cf6183f1e989ff01c648d9a4719e357457bd4c78943911168881f1cfb7b2cb15d885e2105b3ad313adb8f017a67265dd7ade771afdb261ee8cb1
languageName: node
linkType: hard
"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.6":
version: 4.2.11
resolution: "graceful-fs@npm:4.2.11"
checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2
languageName: node
linkType: hard
"grid-index@npm:^1.1.0":
version: 1.1.0
resolution: "grid-index@npm:1.1.0"
checksum: 10c0/0ba2a622a52badc86642a002abee79b48c207092347e869528253e634573b9b55494db649fbd1779122d797aaa3b59e284023a96a7a5c666c7375f0e320f8f57
languageName: node
linkType: hard
"h3-js@npm:^3.1.0, h3-js@npm:^3.6.4, h3-js@npm:^3.7.0":
version: 3.7.2
resolution: "h3-js@npm:3.7.2"
checksum: 10c0/c5a85743619809b81874630d6583fa6153ffa12e8f0aa4edb44bc9f78b2581a3aa84da47a5b1d0a69a20f127f8d943bf0a9c30c8344f1c7de41025486c0177ae
languageName: node
linkType: hard
"hammerjs@npm:^2.0.8":
version: 2.0.8
resolution: "hammerjs@npm:2.0.8"
checksum: 10c0/5c95e5774b5ea49492cb3fa8f1949aea67048a0b84af33acb555e7139abfcf3c83aca2b83e0c5008755bc230166df7b5e469d1e3eb6746c48f215f3672609fed
languageName: node
linkType: hard
"hard-rejection@npm:^2.1.0":
version: 2.1.0
resolution: "hard-rejection@npm:2.1.0"
checksum: 10c0/febc3343a1ad575aedcc112580835b44a89a89e01f400b4eda6e8110869edfdab0b00cd1bd4c3bfec9475a57e79e0b355aecd5be46454b6a62b9a359af60e564
languageName: node
linkType: hard
"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2":
version: 1.0.2
resolution: "has-bigints@npm:1.0.2"
checksum: 10c0/724eb1485bfa3cdff6f18d95130aa190561f00b3fcf9f19dc640baf8176b5917c143b81ec2123f8cddb6c05164a198c94b13e1377c497705ccc8e1a80306e83b
languageName: node
linkType: hard
"has-flag@npm:^3.0.0":
version: 3.0.0
resolution: "has-flag@npm:3.0.0"
checksum: 10c0/1c6c83b14b8b1b3c25b0727b8ba3e3b647f99e9e6e13eb7322107261de07a4c1be56fc0d45678fc376e09772a3a1642ccdaf8fc69bdf123b6c086598397ce473
languageName: node
linkType: hard
"has-flag@npm:^4.0.0":
version: 4.0.0
resolution: "has-flag@npm:4.0.0"
checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1
languageName: node
linkType: hard
"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2":
version: 1.0.2
resolution: "has-property-descriptors@npm:1.0.2"
dependencies:
es-define-property: "npm:^1.0.0"
checksum: 10c0/253c1f59e80bb476cf0dde8ff5284505d90c3bdb762983c3514d36414290475fe3fd6f574929d84de2a8eec00d35cf07cb6776205ff32efd7c50719125f00236
languageName: node
linkType: hard
"has-proto@npm:^1.0.1, has-proto@npm:^1.0.3":
version: 1.0.3
resolution: "has-proto@npm:1.0.3"
checksum: 10c0/35a6989f81e9f8022c2f4027f8b48a552de714938765d019dbea6bb547bd49ce5010a3c7c32ec6ddac6e48fc546166a3583b128f5a7add8b058a6d8b4afec205
languageName: node
linkType: hard
"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3":
version: 1.0.3
resolution: "has-symbols@npm:1.0.3"
checksum: 10c0/e6922b4345a3f37069cdfe8600febbca791c94988c01af3394d86ca3360b4b93928bbf395859158f88099cb10b19d98e3bbab7c9ff2c1bd09cf665ee90afa2c3
languageName: node
linkType: hard
"has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.2":
version: 1.0.2
resolution: "has-tostringtag@npm:1.0.2"
dependencies:
has-symbols: "npm:^1.0.3"
checksum: 10c0/a8b166462192bafe3d9b6e420a1d581d93dd867adb61be223a17a8d6dad147aa77a8be32c961bb2f27b3ef893cae8d36f564ab651f5e9b7938ae86f74027c48c
languageName: node
linkType: hard
"hasown@npm:^2.0.0, hasown@npm:^2.0.1, hasown@npm:^2.0.2":
version: 2.0.2
resolution: "hasown@npm:2.0.2"
dependencies:
function-bind: "npm:^1.1.2"
checksum: 10c0/3769d434703b8ac66b209a4cca0737519925bbdb61dd887f93a16372b14694c63ff4e797686d87c90f08168e81082248b9b028bad60d4da9e0d1148766f56eb9
languageName: node
linkType: hard
"hast-util-to-jsx-runtime@npm:^2.0.0":
version: 2.3.6
resolution: "hast-util-to-jsx-runtime@npm:2.3.6"
dependencies:
"@types/estree": "npm:^1.0.0"
"@types/hast": "npm:^3.0.0"
"@types/unist": "npm:^3.0.0"
comma-separated-tokens: "npm:^2.0.0"
devlop: "npm:^1.0.0"
estree-util-is-identifier-name: "npm:^3.0.0"
hast-util-whitespace: "npm:^3.0.0"
mdast-util-mdx-expression: "npm:^2.0.0"
mdast-util-mdx-jsx: "npm:^3.0.0"
mdast-util-mdxjs-esm: "npm:^2.0.0"
property-information: "npm:^7.0.0"
space-separated-tokens: "npm:^2.0.0"
style-to-js: "npm:^1.0.0"
unist-util-position: "npm:^5.0.0"
vfile-message: "npm:^4.0.0"
checksum: 10c0/27297e02848fe37ef219be04a26ce708d17278a175a807689e94a821dcffc88aa506d62c3a85beed1f9a8544f7211bdcbcde0528b7b456a57c2e342c3fd11056
languageName: node
linkType: hard
"hast-util-whitespace@npm:^3.0.0":
version: 3.0.0
resolution: "hast-util-whitespace@npm:3.0.0"
dependencies:
"@types/hast": "npm:^3.0.0"
checksum: 10c0/b898bc9fe27884b272580d15260b6bbdabe239973a147e97fa98c45fa0ffec967a481aaa42291ec34fb56530dc2d484d473d7e2bae79f39c83f3762307edfea8
languageName: node
linkType: hard
"history@npm:^3.0.0":
version: 3.3.0
resolution: "history@npm:3.3.0"
dependencies:
invariant: "npm:^2.2.1"
loose-envify: "npm:^1.2.0"
query-string: "npm:^4.2.2"
warning: "npm:^3.0.0"
checksum: 10c0/30de5218421dd698718b93e6aeade58cacbfc9403ea336060ef3861f5b3478269785df9df7e0642e10832eedf33d770a08ccfab4407440535f2030e3e31b33be
languageName: node
linkType: hard
"hoek@npm:4.2.1":
version: 4.2.1
resolution: "hoek@npm:4.2.1"
checksum: 10c0/f799216a59cd059ffdb60a0ab6aae87f190606503951ba9cea53185dceae005a5ba3d935a4a356949cd4bb131b93aedcbf330d84d9aec45a5c6a9d03fe727130
languageName: node
linkType: hard
"hoist-non-react-statics@npm:^2.3.1":
version: 2.5.5
resolution: "hoist-non-react-statics@npm:2.5.5"
checksum: 10c0/79c204446a61ad490cc9342b2deeedea5a17f03a5fc091f367b6c08f29387c8d5578634ebfb8733043422a5e1182b372893d63f8737ac4b75da3a2ec4a316162
languageName: node
linkType: hard
"hoist-non-react-statics@npm:^3.3.0, hoist-non-react-statics@npm:^3.3.2":
version: 3.3.2
resolution: "hoist-non-react-statics@npm:3.3.2"
dependencies:
react-is: "npm:^16.7.0"
checksum: 10c0/fe0889169e845d738b59b64badf5e55fa3cf20454f9203d1eb088df322d49d4318df774828e789898dcb280e8a5521bb59b3203385662ca5e9218a6ca5820e74
languageName: node
linkType: hard
"hosted-git-info@npm:^2.1.4":
version: 2.8.9
resolution: "hosted-git-info@npm:2.8.9"
checksum: 10c0/317cbc6b1bbbe23c2a40ae23f3dafe9fa349ce42a89a36f930e3f9c0530c179a3882d2ef1e4141a4c3674d6faaea862138ec55b43ad6f75e387fda2483a13c70
languageName: node
linkType: hard
"hosted-git-info@npm:^4.0.1":
version: 4.1.0
resolution: "hosted-git-info@npm:4.1.0"
dependencies:
lru-cache: "npm:^6.0.0"
checksum: 10c0/150fbcb001600336d17fdbae803264abed013548eea7946c2264c49ebe2ebd8c4441ba71dd23dd8e18c65de79d637f98b22d4760ba5fb2e0b15d62543d0fff07
languageName: node
linkType: hard
"hsluv@npm:^0.0.3":
version: 0.0.3
resolution: "hsluv@npm:0.0.3"
checksum: 10c0/5855c9dec7d82f5da11769adcf035bdccc025ade9e8f58601bdd7541fc33ef6a2a14dcaa89db097775d028db1bf80b5b4f6167140b61fac3957906401823bb4d
languageName: node
linkType: hard
"html-url-attributes@npm:^3.0.0":
version: 3.0.1
resolution: "html-url-attributes@npm:3.0.1"
checksum: 10c0/496e4908aa8b77665f348b4b03521901794f648b8ac34a581022cd6f2c97934d5c910cd91bc6593bbf2994687549037bc2520fcdc769b31484f29ffdd402acd0
languageName: node
linkType: hard
"html2canvas@npm:^1.4.1":
version: 1.4.1
resolution: "html2canvas@npm:1.4.1"
dependencies:
css-line-break: "npm:^2.1.0"
text-segmentation: "npm:^1.0.3"
checksum: 10c0/6de86f75762b00948edf2ea559f16da0a1ec3facc4a8a7d3f35fcec59bb0c5970463478988ae3d9082152e0173690d46ebf4082e7ac803dd4817bae1d355c0db
languageName: node
linkType: hard
"http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.1":
version: 4.1.1
resolution: "http-cache-semantics@npm:4.1.1"
checksum: 10c0/ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc
languageName: node
linkType: hard
"http-proxy-agent@npm:^7.0.0":
version: 7.0.2
resolution: "http-proxy-agent@npm:7.0.2"
dependencies:
agent-base: "npm:^7.1.0"
debug: "npm:^4.3.4"
checksum: 10c0/4207b06a4580fb85dd6dff521f0abf6db517489e70863dca1a0291daa7f2d3d2d6015a57bd702af068ea5cf9f1f6ff72314f5f5b4228d299c0904135d2aef921
languageName: node
linkType: hard
"http2-wrapper@npm:^1.0.0-beta.5.2":
version: 1.0.3
resolution: "http2-wrapper@npm:1.0.3"
dependencies:
quick-lru: "npm:^5.1.1"
resolve-alpn: "npm:^1.0.0"
checksum: 10c0/6a9b72a033e9812e1476b9d776ce2f387bc94bc46c88aea0d5dab6bd47d0a539b8178830e77054dd26d1142c866d515a28a4dc7c3ff4232c88ff2ebe4f5d12d1
languageName: node
linkType: hard
"https-proxy-agent@npm:^7.0.1":
version: 7.0.6
resolution: "https-proxy-agent@npm:7.0.6"
dependencies:
agent-base: "npm:^7.1.2"
debug: "npm:4"
checksum: 10c0/f729219bc735edb621fa30e6e84e60ee5d00802b8247aac0d7b79b0bd6d4b3294737a337b93b86a0bd9e68099d031858a39260c976dc14cdbba238ba1f8779ac
languageName: node
linkType: hard
"humanize-ms@npm:^1.2.1":
version: 1.2.1
resolution: "humanize-ms@npm:1.2.1"
dependencies:
ms: "npm:^2.0.0"
checksum: 10c0/f34a2c20161d02303c2807badec2f3b49cbfbbb409abd4f95a07377ae01cfe6b59e3d15ac609cffcd8f2521f0eb37b7e1091acf65da99aa2a4f1ad63c21e7e7a
languageName: node
linkType: hard
"iconv-lite@npm:0.4":
version: 0.4.24
resolution: "iconv-lite@npm:0.4.24"
dependencies:
safer-buffer: "npm:>= 2.1.2 < 3"
checksum: 10c0/c6886a24cc00f2a059767440ec1bc00d334a89f250db8e0f7feb4961c8727118457e27c495ba94d082e51d3baca378726cd110aaf7ded8b9bbfd6a44760cf1d4
languageName: node
linkType: hard
"iconv-lite@npm:^0.6.2":
version: 0.6.3
resolution: "iconv-lite@npm:0.6.3"
dependencies:
safer-buffer: "npm:>= 2.1.2 < 3.0.0"
checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1
languageName: node
linkType: hard
"ieee754@npm:^1.1.12, ieee754@npm:^1.1.13, ieee754@npm:^1.2.1":
version: 1.2.1
resolution: "ieee754@npm:1.2.1"
checksum: 10c0/b0782ef5e0935b9f12883a2e2aa37baa75da6e66ce6515c168697b42160807d9330de9a32ec1ed73149aea02e0d822e572bca6f1e22bdcbd2149e13b050b17bb
languageName: node
linkType: hard
"image-size@npm:^0.7.4":
version: 0.7.5
resolution: "image-size@npm:0.7.5"
bin:
image-size: bin/image-size.js
checksum: 10c0/74e978c525e7d777df145bc66cfc4a4a7aa56de8e5daead3a69b0872082dbe385deb4a3b80799810df9e34b2031467412ae28810f2f65ec2e5fe08b895aa3491
languageName: node
linkType: hard
"immer@npm:^9.0.21":
version: 9.0.21
resolution: "immer@npm:9.0.21"
checksum: 10c0/03ea3ed5d4d72e8bd428df4a38ad7e483ea8308e9a113d3b42e0ea2cc0cc38340eb0a6aca69592abbbf047c685dbda04e3d34bf2ff438ab57339ed0a34cc0a05
languageName: node
linkType: hard
"imurmurhash@npm:^0.1.4":
version: 0.1.4
resolution: "imurmurhash@npm:0.1.4"
checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6
languageName: node
linkType: hard
"indefinitely-typed@npm:^1.1.0":
version: 1.1.0
resolution: "indefinitely-typed@npm:1.1.0"
dependencies:
fs-extra: "npm:^7.0.0"
minimist: "npm:^1.2.5"
bin:
indefinitely-typed: bin/cli2.js
checksum: 10c0/935a62479ee7faf3705411f38f72ae65c5a8d5b889211e1ff63a66ca48dc5a902be54dc2e9d18612a90772ce7a89f6de28694ad66196c6aab332d559d27870ff
languageName: node
linkType: hard
"indent-string@npm:^4.0.0":
version: 4.0.0
resolution: "indent-string@npm:4.0.0"
checksum: 10c0/1e1904ddb0cb3d6cce7cd09e27a90184908b7a5d5c21b92e232c93579d314f0b83c246ffb035493d0504b1e9147ba2c9b21df0030f48673fba0496ecd698161f
languageName: node
linkType: hard
"inherits@npm:^2.0.3":
version: 2.0.4
resolution: "inherits@npm:2.0.4"
checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2
languageName: node
linkType: hard
"ini@npm:^1.3.5":
version: 1.3.8
resolution: "ini@npm:1.3.8"
checksum: 10c0/ec93838d2328b619532e4f1ff05df7909760b6f66d9c9e2ded11e5c1897d6f2f9980c54dd638f88654b00919ce31e827040631eab0a3969e4d1abefa0719516a
languageName: node
linkType: hard
"inline-style-parser@npm:0.2.4":
version: 0.2.4
resolution: "inline-style-parser@npm:0.2.4"
checksum: 10c0/ddc0b210eaa03e0f98d677b9836242c583c7c6051e84ce0e704ae4626e7871c5b78f8e30853480218b446355745775df318d4f82d33087ff7e393245efa9a881
languageName: node
linkType: hard
"input-otp@npm:1.4.1":
version: 1.4.1
resolution: "input-otp@npm:1.4.1"
peerDependencies:
react: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc
checksum: 10c0/7630c5b2be54a0569d52579c8cc4a66dab5e17afff75adf889f878c2da35cebf391be5fd4f374884e2ca5514b563dfac46eb70f4047282ba8a3c91859ae8500b
languageName: node
linkType: hard
"int53@npm:^0.2.4":
version: 0.2.4
resolution: "int53@npm:0.2.4"
checksum: 10c0/7942bc3cee8aa6ed143b5169bcc2518c7d8d7e67601e3a982e853efb6a67420e863b90ff4d2edf0f4cfe6bd259b16d91690067986f8b2d4f8026c70d369b401a
languageName: node
linkType: hard
"internal-slot@npm:^1.0.7":
version: 1.0.7
resolution: "internal-slot@npm:1.0.7"
dependencies:
es-errors: "npm:^1.3.0"
hasown: "npm:^2.0.0"
side-channel: "npm:^1.0.4"
checksum: 10c0/f8b294a4e6ea3855fc59551bbf35f2b832cf01fd5e6e2a97f5c201a071cc09b49048f856e484b67a6c721da5e55736c5b6ddafaf19e2dbeb4a3ff1821680de6c
languageName: node
linkType: hard
"internmap@npm:1 - 2":
version: 2.0.3
resolution: "internmap@npm:2.0.3"
checksum: 10c0/8cedd57f07bbc22501516fbfc70447f0c6812871d471096fad9ea603516eacc2137b633633daf432c029712df0baefd793686388ddf5737e3ea15074b877f7ed
languageName: node
linkType: hard
"internmap@npm:^1.0.0":
version: 1.0.1
resolution: "internmap@npm:1.0.1"
checksum: 10c0/60942be815ca19da643b6d4f23bd0bf4e8c97abbd080fb963fe67583b60bdfb3530448ad4486bae40810e92317bded9995cc31411218acc750d72cd4e8646eee
languageName: node
linkType: hard
"intl-messageformat@npm:10.5.14":
version: 10.5.14
resolution: "intl-messageformat@npm:10.5.14"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.0.0"
"@formatjs/fast-memoize": "npm:2.2.0"
"@formatjs/icu-messageformat-parser": "npm:2.7.8"
tslib: "npm:^2.4.0"
checksum: 10c0/8ec0a60539f67039356e211bcc8d81cf1bd9d62190a72ab0e94504da92f0242fe2f94ffb512b97cc6f63782b7891874d4038536ce04631e59d762c3441c60b4b
languageName: node
linkType: hard
"intl-messageformat@npm:^10.1.0":
version: 10.7.14
resolution: "intl-messageformat@npm:10.7.14"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.3.2"
"@formatjs/fast-memoize": "npm:2.2.6"
"@formatjs/icu-messageformat-parser": "npm:2.11.0"
tslib: "npm:2"
checksum: 10c0/914c11118c47bb7d0163a7d54afebf52ae4fe9b250bba609b5db4c802a34f8bf758edbbc8c58094203205faf76948c7112399addb32e9b36e40483c4cf7c1cb7
languageName: node
linkType: hard
"invariant@npm:^2.2.1, invariant@npm:^2.2.4":
version: 2.2.4
resolution: "invariant@npm:2.2.4"
dependencies:
loose-envify: "npm:^1.0.0"
checksum: 10c0/5af133a917c0bcf65e84e7f23e779e7abc1cd49cb7fdc62d00d1de74b0d8c1b5ee74ac7766099fb3be1b05b26dfc67bab76a17030d2fe7ea2eef867434362dfc
languageName: node
linkType: hard
"ip-address@npm:^9.0.5":
version: 9.0.5
resolution: "ip-address@npm:9.0.5"
dependencies:
jsbn: "npm:1.1.0"
sprintf-js: "npm:^1.1.3"
checksum: 10c0/331cd07fafcb3b24100613e4b53e1a2b4feab11e671e655d46dc09ee233da5011284d09ca40c4ecbdfe1d0004f462958675c224a804259f2f78d2465a87824bc
languageName: node
linkType: hard
"is-alphabetical@npm:^2.0.0":
version: 2.0.1
resolution: "is-alphabetical@npm:2.0.1"
checksum: 10c0/932367456f17237533fd1fc9fe179df77957271020b83ea31da50e5cc472d35ef6b5fb8147453274ffd251134472ce24eb6f8d8398d96dee98237cdb81a6c9a7
languageName: node
linkType: hard
"is-alphanumerical@npm:^2.0.0":
version: 2.0.1
resolution: "is-alphanumerical@npm:2.0.1"
dependencies:
is-alphabetical: "npm:^2.0.0"
is-decimal: "npm:^2.0.0"
checksum: 10c0/4b35c42b18e40d41378293f82a3ecd9de77049b476f748db5697c297f686e1e05b072a6aaae2d16f54d2a57f85b00cbbe755c75f6d583d1c77d6657bd0feb5a2
languageName: node
linkType: hard
"is-arguments@npm:^1.0.4, is-arguments@npm:^1.1.1":
version: 1.1.1
resolution: "is-arguments@npm:1.1.1"
dependencies:
call-bind: "npm:^1.0.2"
has-tostringtag: "npm:^1.0.0"
checksum: 10c0/5ff1f341ee4475350adfc14b2328b38962564b7c2076be2f5bac7bd9b61779efba99b9f844a7b82ba7654adccf8e8eb19d1bb0cc6d1c1a085e498f6793d4328f
languageName: node
linkType: hard
"is-array-buffer@npm:^3.0.4":
version: 3.0.4
resolution: "is-array-buffer@npm:3.0.4"
dependencies:
call-bind: "npm:^1.0.2"
get-intrinsic: "npm:^1.2.1"
checksum: 10c0/42a49d006cc6130bc5424eae113e948c146f31f9d24460fc0958f855d9d810e6fd2e4519bf19aab75179af9c298ea6092459d8cafdec523cd19e529b26eab860
languageName: node
linkType: hard
"is-arrayish@npm:^0.2.1":
version: 0.2.1
resolution: "is-arrayish@npm:0.2.1"
checksum: 10c0/e7fb686a739068bb70f860b39b67afc62acc62e36bb61c5f965768abce1873b379c563e61dd2adad96ebb7edf6651111b385e490cf508378959b0ed4cac4e729
languageName: node
linkType: hard
"is-arrayish@npm:^0.3.1":
version: 0.3.2
resolution: "is-arrayish@npm:0.3.2"
checksum: 10c0/f59b43dc1d129edb6f0e282595e56477f98c40278a2acdc8b0a5c57097c9eff8fe55470493df5775478cf32a4dc8eaf6d3a749f07ceee5bc263a78b2434f6a54
languageName: node
linkType: hard
"is-bigint@npm:^1.0.1":
version: 1.0.4
resolution: "is-bigint@npm:1.0.4"
dependencies:
has-bigints: "npm:^1.0.1"
checksum: 10c0/eb9c88e418a0d195ca545aff2b715c9903d9b0a5033bc5922fec600eb0c3d7b1ee7f882dbf2e0d5a6e694e42391be3683e4368737bd3c4a77f8ac293e7773696
languageName: node
linkType: hard
"is-binary-path@npm:~2.1.0":
version: 2.1.0
resolution: "is-binary-path@npm:2.1.0"
dependencies:
binary-extensions: "npm:^2.0.0"
checksum: 10c0/a16eaee59ae2b315ba36fad5c5dcaf8e49c3e27318f8ab8fa3cdb8772bf559c8d1ba750a589c2ccb096113bb64497084361a25960899cb6172a6925ab6123d38
languageName: node
linkType: hard
"is-boolean-object@npm:^1.1.0":
version: 1.1.2
resolution: "is-boolean-object@npm:1.1.2"
dependencies:
call-bind: "npm:^1.0.2"
has-tostringtag: "npm:^1.0.0"
checksum: 10c0/6090587f8a8a8534c0f816da868bc94f32810f08807aa72fa7e79f7e11c466d281486ffe7a788178809c2aa71fe3e700b167fe80dd96dad68026bfff8ebf39f7
languageName: node
linkType: hard
"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7":
version: 1.2.7
resolution: "is-callable@npm:1.2.7"
checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f
languageName: node
linkType: hard
"is-core-module@npm:^2.13.0, is-core-module@npm:^2.5.0":
version: 2.15.0
resolution: "is-core-module@npm:2.15.0"
dependencies:
hasown: "npm:^2.0.2"
checksum: 10c0/da161f3d9906f459486da65609b2f1a2dfdc60887c689c234d04e88a062cb7920fa5be5fb7ab08dc43b732929653c4135ef05bf77888ae2a9040ce76815eb7b1
languageName: node
linkType: hard
"is-core-module@npm:^2.16.0":
version: 2.16.1
resolution: "is-core-module@npm:2.16.1"
dependencies:
hasown: "npm:^2.0.2"
checksum: 10c0/898443c14780a577e807618aaae2b6f745c8538eca5c7bc11388a3f2dc6de82b9902bcc7eb74f07be672b11bbe82dd6a6edded44a00cb3d8f933d0459905eedd
languageName: node
linkType: hard
"is-data-view@npm:^1.0.1":
version: 1.0.1
resolution: "is-data-view@npm:1.0.1"
dependencies:
is-typed-array: "npm:^1.1.13"
checksum: 10c0/a3e6ec84efe303da859107aed9b970e018e2bee7ffcb48e2f8096921a493608134240e672a2072577e5f23a729846241d9634806e8a0e51d9129c56d5f65442d
languageName: node
linkType: hard
"is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5":
version: 1.0.5
resolution: "is-date-object@npm:1.0.5"
dependencies:
has-tostringtag: "npm:^1.0.0"
checksum: 10c0/eed21e5dcc619c48ccef804dfc83a739dbb2abee6ca202838ee1bd5f760fe8d8a93444f0d49012ad19bb7c006186e2884a1b92f6e1c056da7fd23d0a9ad5992e
languageName: node
linkType: hard
"is-decimal@npm:^2.0.0":
version: 2.0.1
resolution: "is-decimal@npm:2.0.1"
checksum: 10c0/8085dd66f7d82f9de818fba48b9e9c0429cb4291824e6c5f2622e96b9680b54a07a624cfc663b24148b8e853c62a1c987cfe8b0b5a13f5156991afaf6736e334
languageName: node
linkType: hard
"is-error@npm:^2.2.0":
version: 2.2.2
resolution: "is-error@npm:2.2.2"
checksum: 10c0/475d3463968bf16e94485555d7cb7a879ed68685e08d365a3370972e626054f1846ebbb3934403091e06682445568601fe919e41646096e5007952d0c1f4fd9b
languageName: node
linkType: hard
"is-extendable@npm:^0.1.0, is-extendable@npm:^0.1.1":
version: 0.1.1
resolution: "is-extendable@npm:0.1.1"
checksum: 10c0/dd5ca3994a28e1740d1e25192e66eed128e0b2ff161a7ea348e87ae4f616554b486854de423877a2a2c171d5f7cd6e8093b91f54533bc88a59ee1c9838c43879
languageName: node
linkType: hard
"is-extendable@npm:^1.0.1":
version: 1.0.1
resolution: "is-extendable@npm:1.0.1"
dependencies:
is-plain-object: "npm:^2.0.4"
checksum: 10c0/1d6678a5be1563db6ecb121331c819c38059703f0179f52aa80c242c223ee9c6b66470286636c0e63d7163e4d905c0a7d82a096e0b5eaeabb51b9f8d0af0d73f
languageName: node
linkType: hard
"is-extglob@npm:^2.1.1":
version: 2.1.1
resolution: "is-extglob@npm:2.1.1"
checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912
languageName: node
linkType: hard
"is-fullwidth-code-point@npm:^3.0.0":
version: 3.0.0
resolution: "is-fullwidth-code-point@npm:3.0.0"
checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc
languageName: node
linkType: hard
"is-generator-function@npm:^1.0.7":
version: 1.0.10
resolution: "is-generator-function@npm:1.0.10"
dependencies:
has-tostringtag: "npm:^1.0.0"
checksum: 10c0/df03514df01a6098945b5a0cfa1abff715807c8e72f57c49a0686ad54b3b74d394e2d8714e6f709a71eb00c9630d48e73ca1796c1ccc84ac95092c1fecc0d98b
languageName: node
linkType: hard
"is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1":
version: 4.0.3
resolution: "is-glob@npm:4.0.3"
dependencies:
is-extglob: "npm:^2.1.1"
checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a
languageName: node
linkType: hard
"is-hexadecimal@npm:^2.0.0":
version: 2.0.1
resolution: "is-hexadecimal@npm:2.0.1"
checksum: 10c0/3eb60fe2f1e2bbc760b927dcad4d51eaa0c60138cf7fc671803f66353ad90c301605b502c7ea4c6bb0548e1c7e79dfd37b73b632652e3b76030bba603a7e9626
languageName: node
linkType: hard
"is-negative-zero@npm:^2.0.3":
version: 2.0.3
resolution: "is-negative-zero@npm:2.0.3"
checksum: 10c0/bcdcf6b8b9714063ffcfa9929c575ac69bfdabb8f4574ff557dfc086df2836cf07e3906f5bbc4f2a5c12f8f3ba56af640c843cdfc74da8caed86c7c7d66fd08e
languageName: node
linkType: hard
"is-number-object@npm:^1.0.4":
version: 1.0.7
resolution: "is-number-object@npm:1.0.7"
dependencies:
has-tostringtag: "npm:^1.0.0"
checksum: 10c0/aad266da1e530f1804a2b7bd2e874b4869f71c98590b3964f9d06cc9869b18f8d1f4778f838ecd2a11011bce20aeecb53cb269ba916209b79c24580416b74b1b
languageName: node
linkType: hard
"is-number@npm:^7.0.0":
version: 7.0.0
resolution: "is-number@npm:7.0.0"
checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811
languageName: node
linkType: hard
"is-observable@npm:^2.1.0":
version: 2.1.0
resolution: "is-observable@npm:2.1.0"
checksum: 10c0/f6ae9e136f66ad59c4faa4661112c389b398461cdeb0ef5bc3c505989469b77b2ba4602e2abc54a635d65f616eec9b5a40cd7d2c1f96b2cc4748b56635eba1c6
languageName: node
linkType: hard
"is-plain-obj@npm:^1.1.0":
version: 1.1.0
resolution: "is-plain-obj@npm:1.1.0"
checksum: 10c0/daaee1805add26f781b413fdf192fc91d52409583be30ace35c82607d440da63cc4cac0ac55136716688d6c0a2c6ef3edb2254fecbd1fe06056d6bd15975ee8c
languageName: node
linkType: hard
"is-plain-obj@npm:^4.0.0":
version: 4.1.0
resolution: "is-plain-obj@npm:4.1.0"
checksum: 10c0/32130d651d71d9564dc88ba7e6fda0e91a1010a3694648e9f4f47bb6080438140696d3e3e15c741411d712e47ac9edc1a8a9de1fe76f3487b0d90be06ac9975e
languageName: node
linkType: hard
"is-plain-object@npm:^2.0.3, is-plain-object@npm:^2.0.4":
version: 2.0.4
resolution: "is-plain-object@npm:2.0.4"
dependencies:
isobject: "npm:^3.0.1"
checksum: 10c0/f050fdd5203d9c81e8c4df1b3ff461c4bc64e8b5ca383bcdde46131361d0a678e80bcf00b5257646f6c636197629644d53bd8e2375aea633de09a82d57e942f4
languageName: node
linkType: hard
"is-regex@npm:^1.1.4":
version: 1.1.4
resolution: "is-regex@npm:1.1.4"
dependencies:
call-bind: "npm:^1.0.2"
has-tostringtag: "npm:^1.0.0"
checksum: 10c0/bb72aae604a69eafd4a82a93002058c416ace8cde95873589a97fc5dac96a6c6c78a9977d487b7b95426a8f5073969124dd228f043f9f604f041f32fcc465fc1
languageName: node
linkType: hard
"is-shared-array-buffer@npm:^1.0.2, is-shared-array-buffer@npm:^1.0.3":
version: 1.0.3
resolution: "is-shared-array-buffer@npm:1.0.3"
dependencies:
call-bind: "npm:^1.0.7"
checksum: 10c0/adc11ab0acbc934a7b9e5e9d6c588d4ec6682f6fea8cda5180721704fa32927582ede5b123349e32517fdadd07958973d24716c80e7ab198970c47acc09e59c7
languageName: node
linkType: hard
"is-stream@npm:^1.0.1":
version: 1.1.0
resolution: "is-stream@npm:1.1.0"
checksum: 10c0/b8ae7971e78d2e8488d15f804229c6eed7ed36a28f8807a1815938771f4adff0e705218b7dab968270433f67103e4fef98062a0beea55d64835f705ee72c7002
languageName: node
linkType: hard
"is-string@npm:^1.0.5, is-string@npm:^1.0.7":
version: 1.0.7
resolution: "is-string@npm:1.0.7"
dependencies:
has-tostringtag: "npm:^1.0.0"
checksum: 10c0/905f805cbc6eedfa678aaa103ab7f626aac9ebbdc8737abb5243acaa61d9820f8edc5819106b8fcd1839e33db21de9f0116ae20de380c8382d16dc2a601921f6
languageName: node
linkType: hard
"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3":
version: 1.0.4
resolution: "is-symbol@npm:1.0.4"
dependencies:
has-symbols: "npm:^1.0.2"
checksum: 10c0/9381dd015f7c8906154dbcbf93fad769de16b4b961edc94f88d26eb8c555935caa23af88bda0c93a18e65560f6d7cca0fd5a3f8a8e1df6f1abbb9bead4502ef7
languageName: node
linkType: hard
"is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.3":
version: 1.1.13
resolution: "is-typed-array@npm:1.1.13"
dependencies:
which-typed-array: "npm:^1.1.14"
checksum: 10c0/fa5cb97d4a80e52c2cc8ed3778e39f175a1a2ae4ddf3adae3187d69586a1fd57cfa0b095db31f66aa90331e9e3da79184cea9c6abdcd1abc722dc3c3edd51cca
languageName: node
linkType: hard
"is-url@npm:^1.2.4":
version: 1.2.4
resolution: "is-url@npm:1.2.4"
checksum: 10c0/0157a79874f8f95fdd63540e3f38c8583c2ef572661cd0693cda80ae3e42dfe8e9a4a972ec1b827f861d9a9acf75b37f7d58a37f94a8a053259642912c252bc3
languageName: node
linkType: hard
"is-weakref@npm:^1.0.2":
version: 1.0.2
resolution: "is-weakref@npm:1.0.2"
dependencies:
call-bind: "npm:^1.0.2"
checksum: 10c0/1545c5d172cb690c392f2136c23eec07d8d78a7f57d0e41f10078aa4f5daf5d7f57b6513a67514ab4f073275ad00c9822fc8935e00229d0a2089e1c02685d4b1
languageName: node
linkType: hard
"isarray@npm:^2.0.5":
version: 2.0.5
resolution: "isarray@npm:2.0.5"
checksum: 10c0/4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd
languageName: node
linkType: hard
"isexe@npm:^2.0.0":
version: 2.0.0
resolution: "isexe@npm:2.0.0"
checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d
languageName: node
linkType: hard
"isexe@npm:^3.1.1":
version: 3.1.1
resolution: "isexe@npm:3.1.1"
checksum: 10c0/9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7
languageName: node
linkType: hard
"isobject@npm:^3.0.1":
version: 3.0.1
resolution: "isobject@npm:3.0.1"
checksum: 10c0/03344f5064a82f099a0cd1a8a407f4c0d20b7b8485e8e816c39f249e9416b06c322e8dec5b842b6bb8a06de0af9cb48e7bc1b5352f0fadc2f0abac033db3d4db
languageName: node
linkType: hard
"isomorphic-fetch@npm:^2.1.1":
version: 2.2.1
resolution: "isomorphic-fetch@npm:2.2.1"
dependencies:
node-fetch: "npm:^1.0.1"
whatwg-fetch: "npm:>=0.10.0"
checksum: 10c0/ea9fd37d31ec7b35b82180e1946d4a2f512506d0559fa567ec6ee6701ff1c6d924be90e75499c50982274b707e03ecd9eaa21d618872dd0deff530e4c3bdb074
languageName: node
linkType: hard
"isomorphic-ws@npm:^4.0.1":
version: 4.0.1
resolution: "isomorphic-ws@npm:4.0.1"
peerDependencies:
ws: "*"
checksum: 10c0/7cb90dc2f0eb409825558982fb15d7c1d757a88595efbab879592f9d2b63820d6bbfb5571ab8abe36c715946e165a413a99f6aafd9f40ab1f514d73487bc9996
languageName: node
linkType: hard
"jackspeak@npm:^3.1.2":
version: 3.4.3
resolution: "jackspeak@npm:3.4.3"
dependencies:
"@isaacs/cliui": "npm:^8.0.2"
"@pkgjs/parseargs": "npm:^0.11.0"
dependenciesMeta:
"@pkgjs/parseargs":
optional: true
checksum: 10c0/6acc10d139eaefdbe04d2f679e6191b3abf073f111edf10b1de5302c97ec93fffeb2fdd8681ed17f16268aa9dd4f8c588ed9d1d3bffbbfa6e8bf897cbb3149b9
languageName: node
linkType: hard
"jiti@npm:^1.21.6":
version: 1.21.7
resolution: "jiti@npm:1.21.7"
bin:
jiti: bin/jiti.js
checksum: 10c0/77b61989c758ff32407cdae8ddc77f85e18e1a13fc4977110dbd2e05fc761842f5f71bce684d9a01316e1c4263971315a111385759951080bbfe17cbb5de8f7a
languageName: node
linkType: hard
"js-tiktoken@npm:^1.0.12":
version: 1.0.16
resolution: "js-tiktoken@npm:1.0.16"
dependencies:
base64-js: "npm:^1.5.1"
checksum: 10c0/9c3b7ff9b675334eb939f97fb83da31bb499b2a34cc7da42ee7c1a72f4286b40d2c78c7dca375eece5cc20c35a00f2b6b343387fa14f2472e615cf09b755cfdd
languageName: node
linkType: hard
"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0":
version: 4.0.0
resolution: "js-tokens@npm:4.0.0"
checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed
languageName: node
linkType: hard
"jsbn@npm:1.1.0":
version: 1.1.0
resolution: "jsbn@npm:1.1.0"
checksum: 10c0/4f907fb78d7b712e11dea8c165fe0921f81a657d3443dde75359ed52eb2b5d33ce6773d97985a089f09a65edd80b11cb75c767b57ba47391fee4c969f7215c96
languageName: node
linkType: hard
"json-bignum@npm:^0.0.3":
version: 0.0.3
resolution: "json-bignum@npm:0.0.3"
checksum: 10c0/f9f9312d57a68f72676802fa087da4ed60241d73b6cc0e3fb9f587ca0de7364efb62612a14414ccfbedc0b77ce3c320adca21834a5673c99eb3375aef9f561db
languageName: node
linkType: hard
"json-buffer@npm:3.0.1":
version: 3.0.1
resolution: "json-buffer@npm:3.0.1"
checksum: 10c0/0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7
languageName: node
linkType: hard
"json-parse-even-better-errors@npm:^2.3.0":
version: 2.3.1
resolution: "json-parse-even-better-errors@npm:2.3.1"
checksum: 10c0/140932564c8f0b88455432e0f33c4cb4086b8868e37524e07e723f4eaedb9425bdc2bafd71bd1d9765bd15fd1e2d126972bc83990f55c467168c228c24d665f3
languageName: node
linkType: hard
"json-schema@npm:^0.4.0":
version: 0.4.0
resolution: "json-schema@npm:0.4.0"
checksum: 10c0/d4a637ec1d83544857c1c163232f3da46912e971d5bf054ba44fdb88f07d8d359a462b4aec46f2745efbc57053365608d88bc1d7b1729f7b4fc3369765639ed3
languageName: node
linkType: hard
"json-stringify-pretty-compact@npm:^3.0.0":
version: 3.0.0
resolution: "json-stringify-pretty-compact@npm:3.0.0"
checksum: 10c0/fc522c25047bd96d72ded77af4002e7f12e9ba9f4b7e7e12a9316aee166f1b8f9c7b0d0d989a8494e3fdd804a23819f411479f68f2ef10b2f7a144581b2c68f4
languageName: node
linkType: hard
"jsondiffpatch@npm:0.6.0":
version: 0.6.0
resolution: "jsondiffpatch@npm:0.6.0"
dependencies:
"@types/diff-match-patch": "npm:^1.0.36"
chalk: "npm:^5.3.0"
diff-match-patch: "npm:^1.0.5"
bin:
jsondiffpatch: bin/jsondiffpatch.js
checksum: 10c0/f7822e48a8ef8b9f7c6024cc59b7d3707a9fe6d84fd776d169de5a1803ad551ffe7cfdc7587f3900f224bc70897355884ed43eb1c8ccd02e7f7b43a7ebcfed4f
languageName: node
linkType: hard
"jsonfile@npm:^4.0.0":
version: 4.0.0
resolution: "jsonfile@npm:4.0.0"
dependencies:
graceful-fs: "npm:^4.1.6"
dependenciesMeta:
graceful-fs:
optional: true
checksum: 10c0/7dc94b628d57a66b71fb1b79510d460d662eb975b5f876d723f81549c2e9cd316d58a2ddf742b2b93a4fa6b17b2accaf1a738a0e2ea114bdfb13a32e5377e480
languageName: node
linkType: hard
"jstat@npm:^1.9.6":
version: 1.9.6
resolution: "jstat@npm:1.9.6"
checksum: 10c0/4243295ff7a6f23951ad7247882abe06f08dc5a6cb4086109880642636adaac7f6322d48a0663004b4bd01ed94a64a78cc3a949ce473f23f32a87989a33fda99
languageName: node
linkType: hard
"jsts@npm:2.7.1":
version: 2.7.1
resolution: "jsts@npm:2.7.1"
checksum: 10c0/57752f181eafef7af3f7e0b374ec0a820288bf0c9dc2d3a854643092331431d6f091a26c7a3947634a92cd64990004f4ddd750b0e95d7f8f6711e1d7bdc8237c
languageName: node
linkType: hard
"just-curry-it@npm:^3.1.0":
version: 3.2.1
resolution: "just-curry-it@npm:3.2.1"
checksum: 10c0/8d3e4a0129632fe652b978f7e477e25270ae137c808077881ff5affb91013550ced01fd7508fd786d5e2a00a16ff3f88339d637893a0e77fb82c5ac492b6f410
languageName: node
linkType: hard
"kdbush@npm:^3.0.0":
version: 3.0.0
resolution: "kdbush@npm:3.0.0"
checksum: 10c0/3fc8795870bd04f60627e7345b26fd0644beb91bc4164912c9d9378b39c674ba01c31db68ecaf6266d51c9ad81bf5b770b7effa51eeee37553d38293a094a686
languageName: node
linkType: hard
"kdbush@npm:^4.0.2":
version: 4.0.2
resolution: "kdbush@npm:4.0.2"
checksum: 10c0/d50183b299c57e2573114e902ab47aed7494be3ca41b66d456779ecc3b2f153f491de341f9609965414784f728894f9a9001152eb9f3a40cd3755521c06a45a3
languageName: node
linkType: hard
"keymirror@npm:^0.1.1":
version: 0.1.1
resolution: "keymirror@npm:0.1.1"
checksum: 10c0/5a5196cc7cff6ec844b4f24d73bee65c3023e107a8c423ccc87af61925f953df1bfe3b467deb95644a28240ed8adf5fdac6c5dc45ad0b5ca4feab8c170be9e22
languageName: node
linkType: hard
"keyv@npm:^4.0.0":
version: 4.5.4
resolution: "keyv@npm:4.5.4"
dependencies:
json-buffer: "npm:3.0.1"
checksum: 10c0/aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e
languageName: node
linkType: hard
"kind-of@npm:^6.0.2, kind-of@npm:^6.0.3":
version: 6.0.3
resolution: "kind-of@npm:6.0.3"
checksum: 10c0/61cdff9623dabf3568b6445e93e31376bee1cdb93f8ba7033d86022c2a9b1791a1d9510e026e6465ebd701a6dd2f7b0808483ad8838341ac52f003f512e0b4c4
languageName: node
linkType: hard
"ktx-parse@npm:^0.0.4":
version: 0.0.4
resolution: "ktx-parse@npm:0.0.4"
checksum: 10c0/806d5005696c25147dcc9aa6a2033587041fb391c58faaecd88b94ad17b3edfc145d3d69746a218f569600e8e9c7116886e70251c5fd1c813086a093271643b2
languageName: node
linkType: hard
"ktx-parse@npm:^0.7.0":
version: 0.7.1
resolution: "ktx-parse@npm:0.7.1"
checksum: 10c0/07c0870a0d0fe0bd412b430ac58afd721136a1ca76db83a066b6d20810878822822cbe3b8c8507c15ae8680be0988675b4f5c3d1243262284f161b52c59d09e9
languageName: node
linkType: hard
"langsmith@npm:^0.3.16":
version: 0.3.25
resolution: "langsmith@npm:0.3.25"
dependencies:
"@types/uuid": "npm:^10.0.0"
chalk: "npm:^4.1.2"
console-table-printer: "npm:^2.12.1"
p-queue: "npm:^6.6.2"
p-retry: "npm:4"
semver: "npm:^7.6.3"
uuid: "npm:^10.0.0"
peerDependencies:
openai: "*"
peerDependenciesMeta:
openai:
optional: true
checksum: 10c0/09f912c9bae7f55376dbf96b971a667355ed2449383295bf7c18516202b238bbfeda84bfccdd6216f8626bcea28a8e3c4fb51956fc66fae576be7825f338de90
languageName: node
linkType: hard
"lerc@npm:^4.0.1":
version: 4.0.4
resolution: "lerc@npm:4.0.4"
checksum: 10c0/71a153605ece2bac0c0da71bfae8ac70f0393e8ff7c7e27da20148a7c07f4a1cb421a263bf967dbf4b9a5bcadf8c7f819ab10ee6b8aa6ab59d233cf85cceafa4
languageName: node
linkType: hard
"lerp@npm:^1.0.3":
version: 1.0.3
resolution: "lerp@npm:1.0.3"
checksum: 10c0/cd451cff0b0dc9742bd89f8410468834bd184603f19c915bdf89e5a7f8ce5c67a2a9f5d9be53bb18cd3085db02ecbc1543ab8b7e81293b9c8811cad582f8a9d9
languageName: node
linkType: hard
"lilconfig@npm:^3.0.0, lilconfig@npm:^3.1.3":
version: 3.1.3
resolution: "lilconfig@npm:3.1.3"
checksum: 10c0/f5604e7240c5c275743561442fbc5abf2a84ad94da0f5adc71d25e31fa8483048de3dcedcb7a44112a942fed305fd75841cdf6c9681c7f640c63f1049e9a5dcc
languageName: node
linkType: hard
"lines-and-columns@npm:^1.1.6":
version: 1.2.4
resolution: "lines-and-columns@npm:1.2.4"
checksum: 10c0/3da6ee62d4cd9f03f5dc90b4df2540fb85b352081bee77fe4bbcd12c9000ead7f35e0a38b8d09a9bb99b13223446dd8689ff3c4959807620726d788701a83d2d
languageName: node
linkType: hard
"locate-path@npm:^5.0.0":
version: 5.0.0
resolution: "locate-path@npm:5.0.0"
dependencies:
p-locate: "npm:^4.1.0"
checksum: 10c0/33a1c5247e87e022f9713e6213a744557a3e9ec32c5d0b5efb10aa3a38177615bf90221a5592674857039c1a0fd2063b82f285702d37b792d973e9e72ace6c59
languageName: node
linkType: hard
"locate-path@npm:^6.0.0":
version: 6.0.0
resolution: "locate-path@npm:6.0.0"
dependencies:
p-locate: "npm:^5.0.0"
checksum: 10c0/d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3
languageName: node
linkType: hard
"lodash-es@npm:^4.17.15":
version: 4.17.21
resolution: "lodash-es@npm:4.17.21"
checksum: 10c0/fb407355f7e6cd523a9383e76e6b455321f0f153a6c9625e21a8827d10c54c2a2341bd2ae8d034358b60e07325e1330c14c224ff582d04612a46a4f0479ff2f2
languageName: node
linkType: hard
"lodash.camelcase@npm:^4.3.0":
version: 4.3.0
resolution: "lodash.camelcase@npm:4.3.0"
checksum: 10c0/fcba15d21a458076dd309fce6b1b4bf611d84a0ec252cb92447c948c533ac250b95d2e00955801ebc367e5af5ed288b996d75d37d2035260a937008e14eaf432
languageName: node
linkType: hard
"lodash.debounce@npm:^4.0.8":
version: 4.0.8
resolution: "lodash.debounce@npm:4.0.8"
checksum: 10c0/762998a63e095412b6099b8290903e0a8ddcb353ac6e2e0f2d7e7d03abd4275fe3c689d88960eb90b0dde4f177554d51a690f22a343932ecbc50a5d111849987
languageName: node
linkType: hard
"lodash.throttle@npm:^4.1.1":
version: 4.1.1
resolution: "lodash.throttle@npm:4.1.1"
checksum: 10c0/14628013e9e7f65ac904fc82fd8ecb0e55a9c4c2416434b1dd9cf64ae70a8937f0b15376a39a68248530adc64887ed0fe2b75204b2c9ec3eea1cb2d66ddd125d
languageName: node
linkType: hard
"lodash@npm:4.17.21, lodash@npm:^4.0.1, lodash@npm:^4.17.15":
version: 4.17.21
resolution: "lodash@npm:4.17.21"
checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c
languageName: node
linkType: hard
"long@npm:^3.2.0":
version: 3.2.0
resolution: "long@npm:3.2.0"
checksum: 10c0/03884ad097403bda356228899c8397d7e4e2cd26489983034faa8e52ab9f18df4539de548571ad2f574ecf78454fc377bbcd2ba8ba76d567bf973345aefcbdb2
languageName: node
linkType: hard
"long@npm:^4.0.0":
version: 4.0.0
resolution: "long@npm:4.0.0"
checksum: 10c0/50a6417d15b06104dbe4e3d4a667c39b137f130a9108ea8752b352a4cfae047531a3ac351c181792f3f8768fe17cca6b0f406674a541a86fb638aaac560d83ed
languageName: node
linkType: hard
"long@npm:^5.2.1":
version: 5.2.3
resolution: "long@npm:5.2.3"
checksum: 10c0/6a0da658f5ef683b90330b1af76f06790c623e148222da9d75b60e266bbf88f803232dd21464575681638894a84091616e7f89557aa087fd14116c0f4e0e43d9
languageName: node
linkType: hard
"longest-streak@npm:^3.0.0":
version: 3.1.0
resolution: "longest-streak@npm:3.1.0"
checksum: 10c0/7c2f02d0454b52834d1bcedef79c557bd295ee71fdabb02d041ff3aa9da48a90b5df7c0409156dedbc4df9b65da18742652aaea4759d6ece01f08971af6a7eaa
languageName: node
linkType: hard
"loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.2.0, loose-envify@npm:^1.3.1, loose-envify@npm:^1.4.0":
version: 1.4.0
resolution: "loose-envify@npm:1.4.0"
dependencies:
js-tokens: "npm:^3.0.0 || ^4.0.0"
bin:
loose-envify: cli.js
checksum: 10c0/655d110220983c1a4b9c0c679a2e8016d4b67f6e9c7b5435ff5979ecdb20d0813f4dec0a08674fcbdd4846a3f07edbb50a36811fd37930b94aaa0d9daceb017e
languageName: node
linkType: hard
"lowercase-keys@npm:^2.0.0":
version: 2.0.0
resolution: "lowercase-keys@npm:2.0.0"
checksum: 10c0/f82a2b3568910509da4b7906362efa40f5b54ea14c2584778ddb313226f9cbf21020a5db35f9b9a0e95847a9b781d548601f31793d736b22a2b8ae8eb9ab1082
languageName: node
linkType: hard
"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0":
version: 10.4.3
resolution: "lru-cache@npm:10.4.3"
checksum: 10c0/ebd04fbca961e6c1d6c0af3799adcc966a1babe798f685bb84e6599266599cd95d94630b10262f5424539bc4640107e8a33aa28585374abf561d30d16f4b39fb
languageName: node
linkType: hard
"lru-cache@npm:^6.0.0":
version: 6.0.0
resolution: "lru-cache@npm:6.0.0"
dependencies:
yallist: "npm:^4.0.0"
checksum: 10c0/cb53e582785c48187d7a188d3379c181b5ca2a9c78d2bce3e7dee36f32761d1c42983da3fe12b55cb74e1779fa94cdc2e5367c028a9b35317184ede0c07a30a9
languageName: node
linkType: hard
"lz4js@npm:^0.2.0":
version: 0.2.0
resolution: "lz4js@npm:0.2.0"
checksum: 10c0/73c6dd5117a6fa465e6be1bd5ae34ef4f02e4eb164a47d77f8c2483ccdde43cbdf8509a5e5a4480ef812e5c7a2cb946e026b9c784533775ee5c91861edaefb39
languageName: node
linkType: hard
"lzo-wasm@npm:^0.0.4":
version: 0.0.4
resolution: "lzo-wasm@npm:0.0.4"
checksum: 10c0/33c0d43c9617f23e03196f475fd35b6b4a725e7252cf328002a606a4377ea281d380f12160df80bedfbe5516f7d9ad70592f469a6bef1e91db274e86d411452e
languageName: node
linkType: hard
"magic-string@npm:^0.25.7":
version: 0.25.9
resolution: "magic-string@npm:0.25.9"
dependencies:
sourcemap-codec: "npm:^1.4.8"
checksum: 10c0/37f5e01a7e8b19a072091f0b45ff127cda676232d373ce2c551a162dd4053c575ec048b9cbb4587a1f03adb6c5d0fd0dd49e8ab070cd2c83a4992b2182d9cb56
languageName: node
linkType: hard
"make-event-props@npm:^1.6.0":
version: 1.6.2
resolution: "make-event-props@npm:1.6.2"
checksum: 10c0/ecf0b742e43a392c07e2267baca2397e750d38cc14ef3cb72ef8bfe4a8c8b0fd99a03a2eeab84a26c2b204f7c231da6af31fa26321fbfd413ded43ba1825e867
languageName: node
linkType: hard
"make-fetch-happen@npm:^14.0.3":
version: 14.0.3
resolution: "make-fetch-happen@npm:14.0.3"
dependencies:
"@npmcli/agent": "npm:^3.0.0"
cacache: "npm:^19.0.1"
http-cache-semantics: "npm:^4.1.1"
minipass: "npm:^7.0.2"
minipass-fetch: "npm:^4.0.0"
minipass-flush: "npm:^1.0.5"
minipass-pipeline: "npm:^1.2.4"
negotiator: "npm:^1.0.0"
proc-log: "npm:^5.0.0"
promise-retry: "npm:^2.0.1"
ssri: "npm:^12.0.0"
checksum: 10c0/c40efb5e5296e7feb8e37155bde8eb70bc57d731b1f7d90e35a092fde403d7697c56fb49334d92d330d6f1ca29a98142036d6480a12681133a0a1453164cb2f0
languageName: node
linkType: hard
"map-age-cleaner@npm:^0.1.3":
version: 0.1.3
resolution: "map-age-cleaner@npm:0.1.3"
dependencies:
p-defer: "npm:^1.0.0"
checksum: 10c0/7495236c7b0950956c144fd8b4bc6399d4e78072a8840a4232fe1c4faccbb5eb5d842e5c0a56a60afc36d723f315c1c672325ca03c1b328650f7fcc478f385fd
languageName: node
linkType: hard
"map-obj@npm:^1.0.0":
version: 1.0.1
resolution: "map-obj@npm:1.0.1"
checksum: 10c0/ccca88395e7d38671ed9f5652ecf471ecd546924be2fb900836b9da35e068a96687d96a5f93dcdfa94d9a27d649d2f10a84595590f89a347fb4dda47629dcc52
languageName: node
linkType: hard
"map-obj@npm:^4.0.0":
version: 4.3.0
resolution: "map-obj@npm:4.3.0"
checksum: 10c0/1c19e1c88513c8abdab25c316367154c6a0a6a0f77e3e8c391bb7c0e093aefed293f539d026dc013d86219e5e4c25f23b0003ea588be2101ccd757bacc12d43b
languageName: node
linkType: hard
"mapbox-gl@npm:1.13.1":
version: 1.13.1
resolution: "mapbox-gl@npm:1.13.1"
dependencies:
"@mapbox/geojson-rewind": "npm:^0.5.0"
"@mapbox/geojson-types": "npm:^1.0.2"
"@mapbox/jsonlint-lines-primitives": "npm:^2.0.2"
"@mapbox/mapbox-gl-supported": "npm:^1.5.0"
"@mapbox/point-geometry": "npm:^0.1.0"
"@mapbox/tiny-sdf": "npm:^1.1.1"
"@mapbox/unitbezier": "npm:^0.0.0"
"@mapbox/vector-tile": "npm:^1.3.1"
"@mapbox/whoots-js": "npm:^3.1.0"
csscolorparser: "npm:~1.0.3"
earcut: "npm:^2.2.2"
geojson-vt: "npm:^3.2.1"
gl-matrix: "npm:^3.2.1"
grid-index: "npm:^1.1.0"
minimist: "npm:^1.2.5"
murmurhash-js: "npm:^1.0.0"
pbf: "npm:^3.2.1"
potpack: "npm:^1.0.1"
quickselect: "npm:^2.0.0"
rw: "npm:^1.3.3"
supercluster: "npm:^7.1.0"
tinyqueue: "npm:^2.0.3"
vt-pbf: "npm:^3.1.1"
checksum: 10c0/d507b1ce27fe77ed68250096a60a929ea4149fcab3f7037f60a7b73709391a6f78413aa4e98fd2f5e37388cb1a040b5cc15cbf8b164fdb65d98362ba726523d6
languageName: node
linkType: hard
"mapbox-gl@npm:^1.13.1":
version: 1.13.3
resolution: "mapbox-gl@npm:1.13.3"
dependencies:
"@mapbox/geojson-rewind": "npm:^0.5.2"
"@mapbox/geojson-types": "npm:^1.0.2"
"@mapbox/jsonlint-lines-primitives": "npm:^2.0.2"
"@mapbox/mapbox-gl-supported": "npm:^1.5.0"
"@mapbox/point-geometry": "npm:^0.1.0"
"@mapbox/tiny-sdf": "npm:^1.1.1"
"@mapbox/unitbezier": "npm:^0.0.0"
"@mapbox/vector-tile": "npm:^1.3.1"
"@mapbox/whoots-js": "npm:^3.1.0"
csscolorparser: "npm:~1.0.3"
earcut: "npm:^2.2.2"
geojson-vt: "npm:^3.2.1"
gl-matrix: "npm:^3.2.1"
grid-index: "npm:^1.1.0"
murmurhash-js: "npm:^1.0.0"
pbf: "npm:^3.2.1"
potpack: "npm:^1.0.1"
quickselect: "npm:^2.0.0"
rw: "npm:^1.3.3"
supercluster: "npm:^7.1.0"
tinyqueue: "npm:^2.0.3"
vt-pbf: "npm:^3.1.1"
checksum: 10c0/82bf86daa69e068d4138c4e5a1dbfc2a28c6d0e2cc142ef96d3ce671770e8173d3ffd62e6614b3606f932f99b40eb4dfc52d5f44c48dabd393ba27b61d9e50c4
languageName: node
linkType: hard
"maplibre-gl@npm:^3.6.2":
version: 3.6.2
resolution: "maplibre-gl@npm:3.6.2"
dependencies:
"@mapbox/geojson-rewind": "npm:^0.5.2"
"@mapbox/jsonlint-lines-primitives": "npm:^2.0.2"
"@mapbox/point-geometry": "npm:^0.1.0"
"@mapbox/tiny-sdf": "npm:^2.0.6"
"@mapbox/unitbezier": "npm:^0.0.1"
"@mapbox/vector-tile": "npm:^1.3.1"
"@mapbox/whoots-js": "npm:^3.1.0"
"@maplibre/maplibre-gl-style-spec": "npm:^19.3.3"
"@types/geojson": "npm:^7946.0.13"
"@types/mapbox__point-geometry": "npm:^0.1.4"
"@types/mapbox__vector-tile": "npm:^1.3.4"
"@types/pbf": "npm:^3.0.5"
"@types/supercluster": "npm:^7.1.3"
earcut: "npm:^2.2.4"
geojson-vt: "npm:^3.2.1"
gl-matrix: "npm:^3.4.3"
global-prefix: "npm:^3.0.0"
kdbush: "npm:^4.0.2"
murmurhash-js: "npm:^1.0.0"
pbf: "npm:^3.2.1"
potpack: "npm:^2.0.0"
quickselect: "npm:^2.0.0"
supercluster: "npm:^8.0.1"
tinyqueue: "npm:^2.0.3"
vt-pbf: "npm:^3.1.3"
checksum: 10c0/51245b634087dd5f2a971b1dfa4170b98e10472e0d00859774d2ab1bd646de9a78342616862f4a66e932d0a75a6a5695258ce044f128a26e77d2f6b9efe7dafe
languageName: node
linkType: hard
"maplibregl-mapbox-request-transformer@npm:^0.0.2":
version: 0.0.2
resolution: "maplibregl-mapbox-request-transformer@npm:0.0.2"
checksum: 10c0/fb73e476a94039a884982e831060feae70977edba7963249bb8b924cdc72fdee29e1968710e026a45dcd4079b5c11477689f54d528ea0bd481aba47cc0ac924d
languageName: node
linkType: hard
"markdown-table@npm:^3.0.0":
version: 3.0.4
resolution: "markdown-table@npm:3.0.4"
checksum: 10c0/1257b31827629a54c24a5030a3dac952256c559174c95ce3ef89bebd6bff0cb1444b1fd667b1a1bb53307f83278111505b3e26f0c4e7b731e0060d435d2d930b
languageName: node
linkType: hard
"markdown-to-jsx@npm:^7.7.6":
version: 7.7.6
resolution: "markdown-to-jsx@npm:7.7.6"
peerDependencies:
react: ">= 0.14.0"
checksum: 10c0/be645e0e07cc54e52f2f934c879b10459e33a83f2592d8d7c03eb9ef2c91cdbd777f667040b3d15a5f6fb3b3d77fb7b3428d49e90573581eb85a21011533ee67
languageName: node
linkType: hard
"material-colors@npm:^1.2.1":
version: 1.2.6
resolution: "material-colors@npm:1.2.6"
checksum: 10c0/6502ab25b23b783cca4112946bc28a64fdba8bf8efcfbb1e76028d21ecc4b88a2b1338dacf1b64e4b6af46ab98984080586002cdaa9428dc91f6fdcc6909b12a
languageName: node
linkType: hard
"math.gl@npm:^3.6.2":
version: 3.6.3
resolution: "math.gl@npm:3.6.3"
dependencies:
"@math.gl/core": "npm:3.6.3"
checksum: 10c0/7516182bc7f47fd224e991f97c173d9f628f4aafac72749c403d38d4befdaaaac7dea309826b7710e264ae9e142376f237a0f2b6297ff01654b9771eddc701d0
languageName: node
linkType: hard
"mdast-util-find-and-replace@npm:^3.0.0":
version: 3.0.2
resolution: "mdast-util-find-and-replace@npm:3.0.2"
dependencies:
"@types/mdast": "npm:^4.0.0"
escape-string-regexp: "npm:^5.0.0"
unist-util-is: "npm:^6.0.0"
unist-util-visit-parents: "npm:^6.0.0"
checksum: 10c0/c8417a35605d567772ff5c1aa08363ff3010b0d60c8ea68c53cba09bf25492e3dd261560425c1756535f3b7107f62e7ff3857cdd8fb1e62d1b2cc2ea6e074ca2
languageName: node
linkType: hard
"mdast-util-from-markdown@npm:^2.0.0":
version: 2.0.2
resolution: "mdast-util-from-markdown@npm:2.0.2"
dependencies:
"@types/mdast": "npm:^4.0.0"
"@types/unist": "npm:^3.0.0"
decode-named-character-reference: "npm:^1.0.0"
devlop: "npm:^1.0.0"
mdast-util-to-string: "npm:^4.0.0"
micromark: "npm:^4.0.0"
micromark-util-decode-numeric-character-reference: "npm:^2.0.0"
micromark-util-decode-string: "npm:^2.0.0"
micromark-util-normalize-identifier: "npm:^2.0.0"
micromark-util-symbol: "npm:^2.0.0"
micromark-util-types: "npm:^2.0.0"
unist-util-stringify-position: "npm:^4.0.0"
checksum: 10c0/76eb2bd2c6f7a0318087c73376b8af6d7561c1e16654e7667e640f391341096c56142618fd0ff62f6d39e5ab4895898b9789c84cd7cec2874359a437a0e1ff15
languageName: node
linkType: hard
"mdast-util-gfm-autolink-literal@npm:^2.0.0":
version: 2.0.1
resolution: "mdast-util-gfm-autolink-literal@npm:2.0.1"
dependencies:
"@types/mdast": "npm:^4.0.0"
ccount: "npm:^2.0.0"
devlop: "npm:^1.0.0"
mdast-util-find-and-replace: "npm:^3.0.0"
micromark-util-character: "npm:^2.0.0"
checksum: 10c0/963cd22bd42aebdec7bdd0a527c9494d024d1ad0739c43dc040fee35bdfb5e29c22564330a7418a72b5eab51d47a6eff32bc0255ef3ccb5cebfe8970e91b81b6
languageName: node
linkType: hard
"mdast-util-gfm-footnote@npm:^2.0.0":
version: 2.1.0
resolution: "mdast-util-gfm-footnote@npm:2.1.0"
dependencies:
"@types/mdast": "npm:^4.0.0"
devlop: "npm:^1.1.0"
mdast-util-from-markdown: "npm:^2.0.0"
mdast-util-to-markdown: "npm:^2.0.0"
micromark-util-normalize-identifier: "npm:^2.0.0"
checksum: 10c0/8ab965ee6be3670d76ec0e95b2ba3101fc7444eec47564943ab483d96ac17d29da2a4e6146a2a288be30c21b48c4f3938a1e54b9a46fbdd321d49a5bc0077ed0
languageName: node
linkType: hard
"mdast-util-gfm-strikethrough@npm:^2.0.0":
version: 2.0.0
resolution: "mdast-util-gfm-strikethrough@npm:2.0.0"
dependencies:
"@types/mdast": "npm:^4.0.0"
mdast-util-from-markdown: "npm:^2.0.0"
mdast-util-to-markdown: "npm:^2.0.0"
checksum: 10c0/b053e93d62c7545019bd914271ea9e5667ad3b3b57d16dbf68e56fea39a7e19b4a345e781312714eb3d43fdd069ff7ee22a3ca7f6149dfa774554f19ce3ac056
languageName: node
linkType: hard
"mdast-util-gfm-table@npm:^2.0.0":
version: 2.0.0
resolution: "mdast-util-gfm-table@npm:2.0.0"
dependencies:
"@types/mdast": "npm:^4.0.0"
devlop: "npm:^1.0.0"
markdown-table: "npm:^3.0.0"
mdast-util-from-markdown: "npm:^2.0.0"
mdast-util-to-markdown: "npm:^2.0.0"
checksum: 10c0/128af47c503a53bd1c79f20642561e54a510ad5e2db1e418d28fefaf1294ab839e6c838e341aef5d7e404f9170b9ca3d1d89605f234efafde93ee51174a6e31e
languageName: node
linkType: hard
"mdast-util-gfm-task-list-item@npm:^2.0.0":
version: 2.0.0
resolution: "mdast-util-gfm-task-list-item@npm:2.0.0"
dependencies:
"@types/mdast": "npm:^4.0.0"
devlop: "npm:^1.0.0"
mdast-util-from-markdown: "npm:^2.0.0"
mdast-util-to-markdown: "npm:^2.0.0"
checksum: 10c0/258d725288482b636c0a376c296431390c14b4f29588675297cb6580a8598ed311fc73ebc312acfca12cc8546f07a3a285a53a3b082712e2cbf5c190d677d834
languageName: node
linkType: hard
"mdast-util-gfm@npm:^3.0.0":
version: 3.1.0
resolution: "mdast-util-gfm@npm:3.1.0"
dependencies:
mdast-util-from-markdown: "npm:^2.0.0"
mdast-util-gfm-autolink-literal: "npm:^2.0.0"
mdast-util-gfm-footnote: "npm:^2.0.0"
mdast-util-gfm-strikethrough: "npm:^2.0.0"
mdast-util-gfm-table: "npm:^2.0.0"
mdast-util-gfm-task-list-item: "npm:^2.0.0"
mdast-util-to-markdown: "npm:^2.0.0"
checksum: 10c0/4bedcfb6a20e39901c8772f0d2bb2d7a64ae87a54c13cbd92eec062cf470fbb68c2ad754e149af5b30794e2de61c978ab1de1ace03c0c40f443ca9b9b8044f81
languageName: node
linkType: hard
"mdast-util-mdx-expression@npm:^2.0.0":
version: 2.0.1
resolution: "mdast-util-mdx-expression@npm:2.0.1"
dependencies:
"@types/estree-jsx": "npm:^1.0.0"
"@types/hast": "npm:^3.0.0"
"@types/mdast": "npm:^4.0.0"
devlop: "npm:^1.0.0"
mdast-util-from-markdown: "npm:^2.0.0"
mdast-util-to-markdown: "npm:^2.0.0"
checksum: 10c0/9a1e57940f66431f10312fa239096efa7627f375e7933b5d3162c0b5c1712a72ac87447aff2b6838d2bbd5c1311b188718cc90b33b67dc67a88550e0a6ef6183
languageName: node
linkType: hard
"mdast-util-mdx-jsx@npm:^3.0.0":
version: 3.2.0
resolution: "mdast-util-mdx-jsx@npm:3.2.0"
dependencies:
"@types/estree-jsx": "npm:^1.0.0"
"@types/hast": "npm:^3.0.0"
"@types/mdast": "npm:^4.0.0"
"@types/unist": "npm:^3.0.0"
ccount: "npm:^2.0.0"
devlop: "npm:^1.1.0"
mdast-util-from-markdown: "npm:^2.0.0"
mdast-util-to-markdown: "npm:^2.0.0"
parse-entities: "npm:^4.0.0"
stringify-entities: "npm:^4.0.0"
unist-util-stringify-position: "npm:^4.0.0"
vfile-message: "npm:^4.0.0"
checksum: 10c0/3acadaf3b962254f7ad2990fed4729961dc0217ca31fde9917986e880843f3ecf3392b1f22d569235cacd180d50894ad266db7af598aedca69d330d33c7ac613
languageName: node
linkType: hard
"mdast-util-mdxjs-esm@npm:^2.0.0":
version: 2.0.1
resolution: "mdast-util-mdxjs-esm@npm:2.0.1"
dependencies:
"@types/estree-jsx": "npm:^1.0.0"
"@types/hast": "npm:^3.0.0"
"@types/mdast": "npm:^4.0.0"
devlop: "npm:^1.0.0"
mdast-util-from-markdown: "npm:^2.0.0"
mdast-util-to-markdown: "npm:^2.0.0"
checksum: 10c0/5bda92fc154141705af2b804a534d891f28dac6273186edf1a4c5e3f045d5b01dbcac7400d27aaf91b7e76e8dce007c7b2fdf136c11ea78206ad00bdf9db46bc
languageName: node
linkType: hard
"mdast-util-phrasing@npm:^4.0.0":
version: 4.1.0
resolution: "mdast-util-phrasing@npm:4.1.0"
dependencies:
"@types/mdast": "npm:^4.0.0"
unist-util-is: "npm:^6.0.0"
checksum: 10c0/bf6c31d51349aa3d74603d5e5a312f59f3f65662ed16c58017169a5fb0f84ca98578f626c5ee9e4aa3e0a81c996db8717096705521bddb4a0185f98c12c9b42f
languageName: node
linkType: hard
"mdast-util-to-hast@npm:^13.0.0":
version: 13.2.0
resolution: "mdast-util-to-hast@npm:13.2.0"
dependencies:
"@types/hast": "npm:^3.0.0"
"@types/mdast": "npm:^4.0.0"
"@ungap/structured-clone": "npm:^1.0.0"
devlop: "npm:^1.0.0"
micromark-util-sanitize-uri: "npm:^2.0.0"
trim-lines: "npm:^3.0.0"
unist-util-position: "npm:^5.0.0"
unist-util-visit: "npm:^5.0.0"
vfile: "npm:^6.0.0"
checksum: 10c0/9ee58def9287df8350cbb6f83ced90f9c088d72d4153780ad37854f87144cadc6f27b20347073b285173b1649b0723ddf0b9c78158608a804dcacb6bda6e1816
languageName: node
linkType: hard
"mdast-util-to-markdown@npm:^2.0.0":
version: 2.1.2
resolution: "mdast-util-to-markdown@npm:2.1.2"
dependencies:
"@types/mdast": "npm:^4.0.0"
"@types/unist": "npm:^3.0.0"
longest-streak: "npm:^3.0.0"
mdast-util-phrasing: "npm:^4.0.0"
mdast-util-to-string: "npm:^4.0.0"
micromark-util-classify-character: "npm:^2.0.0"
micromark-util-decode-string: "npm:^2.0.0"
unist-util-visit: "npm:^5.0.0"
zwitch: "npm:^2.0.0"
checksum: 10c0/4649722a6099f12e797bd8d6469b2b43b44e526b5182862d9c7766a3431caad2c0112929c538a972f214e63c015395e5d3f54bd81d9ac1b16e6d8baaf582f749
languageName: node
linkType: hard
"mdast-util-to-string@npm:^4.0.0":
version: 4.0.0
resolution: "mdast-util-to-string@npm:4.0.0"
dependencies:
"@types/mdast": "npm:^4.0.0"
checksum: 10c0/2d3c1af29bf3fe9c20f552ee9685af308002488f3b04b12fa66652c9718f66f41a32f8362aa2d770c3ff464c034860b41715902ada2306bb0a055146cef064d7
languageName: node
linkType: hard
"mem@npm:^8.0.0":
version: 8.1.1
resolution: "mem@npm:8.1.1"
dependencies:
map-age-cleaner: "npm:^0.1.3"
mimic-fn: "npm:^3.1.0"
checksum: 10c0/5829c404d024c1accaf76ebacbc7eae9b59e5ce5722d184aa24e8387a8097a499f6aa7e181021003c51eb87b2dcdc9a2270050c58753cce761de206643cba91c
languageName: node
linkType: hard
"meow@npm:^9.0.0":
version: 9.0.0
resolution: "meow@npm:9.0.0"
dependencies:
"@types/minimist": "npm:^1.2.0"
camelcase-keys: "npm:^6.2.2"
decamelize: "npm:^1.2.0"
decamelize-keys: "npm:^1.1.0"
hard-rejection: "npm:^2.1.0"
minimist-options: "npm:4.1.0"
normalize-package-data: "npm:^3.0.0"
read-pkg-up: "npm:^7.0.1"
redent: "npm:^3.0.0"
trim-newlines: "npm:^3.0.0"
type-fest: "npm:^0.18.0"
yargs-parser: "npm:^20.2.3"
checksum: 10c0/998955ecff999dc3f3867ef3b51999218212497f27d75b9cbe10bdb73aac4ee308d484f7801fd1b3cfa4172819065f65f076ca018c1412fab19d0ea486648722
languageName: node
linkType: hard
"merge2@npm:^1.3.0":
version: 1.4.1
resolution: "merge2@npm:1.4.1"
checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb
languageName: node
linkType: hard
"mgrs@npm:1.0.0":
version: 1.0.0
resolution: "mgrs@npm:1.0.0"
checksum: 10c0/a360853be5a3b4f4734dbf0a193851c08039ccb6077362ab0f890cccd170ef88b59585129757da9fea4d7a313d7dc3ee88f37f594fc1ae3e4e8efc5353144d77
languageName: node
linkType: hard
"micromark-core-commonmark@npm:^2.0.0":
version: 2.0.3
resolution: "micromark-core-commonmark@npm:2.0.3"
dependencies:
decode-named-character-reference: "npm:^1.0.0"
devlop: "npm:^1.0.0"
micromark-factory-destination: "npm:^2.0.0"
micromark-factory-label: "npm:^2.0.0"
micromark-factory-space: "npm:^2.0.0"
micromark-factory-title: "npm:^2.0.0"
micromark-factory-whitespace: "npm:^2.0.0"
micromark-util-character: "npm:^2.0.0"
micromark-util-chunked: "npm:^2.0.0"
micromark-util-classify-character: "npm:^2.0.0"
micromark-util-html-tag-name: "npm:^2.0.0"
micromark-util-normalize-identifier: "npm:^2.0.0"
micromark-util-resolve-all: "npm:^2.0.0"
micromark-util-subtokenize: "npm:^2.0.0"
micromark-util-symbol: "npm:^2.0.0"
micromark-util-types: "npm:^2.0.0"
checksum: 10c0/bd4a794fdc9e88dbdf59eaf1c507ddf26e5f7ddf4e52566c72239c0f1b66adbcd219ba2cd42350debbe24471434d5f5e50099d2b3f4e5762ca222ba8e5b549ee
languageName: node
linkType: hard
"micromark-extension-gfm-autolink-literal@npm:^2.0.0":
version: 2.1.0
resolution: "micromark-extension-gfm-autolink-literal@npm:2.1.0"
dependencies:
micromark-util-character: "npm:^2.0.0"
micromark-util-sanitize-uri: "npm:^2.0.0"
micromark-util-symbol: "npm:^2.0.0"
micromark-util-types: "npm:^2.0.0"
checksum: 10c0/84e6fbb84ea7c161dfa179665dc90d51116de4c28f3e958260c0423e5a745372b7dcbc87d3cde98213b532e6812f847eef5ae561c9397d7f7da1e59872ef3efe
languageName: node
linkType: hard
"micromark-extension-gfm-footnote@npm:^2.0.0":
version: 2.1.0
resolution: "micromark-extension-gfm-footnote@npm:2.1.0"
dependencies:
devlop: "npm:^1.0.0"
micromark-core-commonmark: "npm:^2.0.0"
micromark-factory-space: "npm:^2.0.0"
micromark-util-character: "npm:^2.0.0"
micromark-util-normalize-identifier: "npm:^2.0.0"
micromark-util-sanitize-uri: "npm:^2.0.0"
micromark-util-symbol: "npm:^2.0.0"
micromark-util-types: "npm:^2.0.0"
checksum: 10c0/d172e4218968b7371b9321af5cde8c77423f73b233b2b0fcf3ff6fd6f61d2e0d52c49123a9b7910612478bf1f0d5e88c75a3990dd68f70f3933fe812b9f77edc
languageName: node
linkType: hard
"micromark-extension-gfm-strikethrough@npm:^2.0.0":
version: 2.1.0
resolution: "micromark-extension-gfm-strikethrough@npm:2.1.0"
dependencies:
devlop: "npm:^1.0.0"
micromark-util-chunked: "npm:^2.0.0"
micromark-util-classify-character: "npm:^2.0.0"
micromark-util-resolve-all: "npm:^2.0.0"
micromark-util-symbol: "npm:^2.0.0"
micromark-util-types: "npm:^2.0.0"
checksum: 10c0/ef4f248b865bdda71303b494671b7487808a340b25552b11ca6814dff3fcfaab9be8d294643060bbdb50f79313e4a686ab18b99cbe4d3ee8a4170fcd134234fb
languageName: node
linkType: hard
"micromark-extension-gfm-table@npm:^2.0.0":
version: 2.1.1
resolution: "micromark-extension-gfm-table@npm:2.1.1"
dependencies:
devlop: "npm:^1.0.0"
micromark-factory-space: "npm:^2.0.0"
micromark-util-character: "npm:^2.0.0"
micromark-util-symbol: "npm:^2.0.0"
micromark-util-types: "npm:^2.0.0"
checksum: 10c0/04bc00e19b435fa0add62cd029d8b7eb6137522f77832186b1d5ef34544a9bd030c9cf85e92ddfcc5c31f6f0a58a43d4b96dba4fc21316037c734630ee12c912
languageName: node
linkType: hard
"micromark-extension-gfm-tagfilter@npm:^2.0.0":
version: 2.0.0
resolution: "micromark-extension-gfm-tagfilter@npm:2.0.0"
dependencies:
micromark-util-types: "npm:^2.0.0"
checksum: 10c0/995558843fff137ae4e46aecb878d8a4691cdf23527dcf1e2f0157d66786be9f7bea0109c52a8ef70e68e3f930af811828ba912239438e31a9cfb9981f44d34d
languageName: node
linkType: hard
"micromark-extension-gfm-task-list-item@npm:^2.0.0":
version: 2.1.0
resolution: "micromark-extension-gfm-task-list-item@npm:2.1.0"
dependencies:
devlop: "npm:^1.0.0"
micromark-factory-space: "npm:^2.0.0"
micromark-util-character: "npm:^2.0.0"
micromark-util-symbol: "npm:^2.0.0"
micromark-util-types: "npm:^2.0.0"
checksum: 10c0/78aa537d929e9309f076ba41e5edc99f78d6decd754b6734519ccbbfca8abd52e1c62df68d41a6ae64d2a3fc1646cea955893c79680b0b4385ced4c52296181f
languageName: node
linkType: hard
"micromark-extension-gfm@npm:^3.0.0":
version: 3.0.0
resolution: "micromark-extension-gfm@npm:3.0.0"
dependencies:
micromark-extension-gfm-autolink-literal: "npm:^2.0.0"
micromark-extension-gfm-footnote: "npm:^2.0.0"
micromark-extension-gfm-strikethrough: "npm:^2.0.0"
micromark-extension-gfm-table: "npm:^2.0.0"
micromark-extension-gfm-tagfilter: "npm:^2.0.0"
micromark-extension-gfm-task-list-item: "npm:^2.0.0"
micromark-util-combine-extensions: "npm:^2.0.0"
micromark-util-types: "npm:^2.0.0"
checksum: 10c0/970e28df6ebdd7c7249f52a0dda56e0566fbfa9ae56c8eeeb2445d77b6b89d44096880cd57a1c01e7821b1f4e31009109fbaca4e89731bff7b83b8519690e5d9
languageName: node
linkType: hard
"micromark-factory-destination@npm:^2.0.0":
version: 2.0.1
resolution: "micromark-factory-destination@npm:2.0.1"
dependencies:
micromark-util-character: "npm:^2.0.0"
micromark-util-symbol: "npm:^2.0.0"
micromark-util-types: "npm:^2.0.0"
checksum: 10c0/bbafcf869cee5bf511161354cb87d61c142592fbecea051000ff116068dc85216e6d48519d147890b9ea5d7e2864a6341c0c09d9948c203bff624a80a476023c
languageName: node
linkType: hard
"micromark-factory-label@npm:^2.0.0":
version: 2.0.1
resolution: "micromark-factory-label@npm:2.0.1"
dependencies:
devlop: "npm:^1.0.0"
micromark-util-character: "npm:^2.0.0"
micromark-util-symbol: "npm:^2.0.0"
micromark-util-types: "npm:^2.0.0"
checksum: 10c0/0137716b4ecb428114165505e94a2f18855c8bbea21b07a8b5ce514b32a595ed789d2b967125718fc44c4197ceaa48f6609d58807a68e778138d2e6b91b824e8
languageName: node
linkType: hard
"micromark-factory-space@npm:^2.0.0":
version: 2.0.1
resolution: "micromark-factory-space@npm:2.0.1"
dependencies:
micromark-util-character: "npm:^2.0.0"
micromark-util-types: "npm:^2.0.0"
checksum: 10c0/f9ed43f1c0652d8d898de0ac2be3f77f776fffe7dd96bdbba1e02d7ce33d3853c6ff5daa52568fc4fa32cdf3a62d86b85ead9b9189f7211e1d69ff2163c450fb
languageName: node
linkType: hard
"micromark-factory-title@npm:^2.0.0":
version: 2.0.1
resolution: "micromark-factory-title@npm:2.0.1"
dependencies:
micromark-factory-space: "npm:^2.0.0"
micromark-util-character: "npm:^2.0.0"
micromark-util-symbol: "npm:^2.0.0"
micromark-util-types: "npm:^2.0.0"
checksum: 10c0/e72fad8d6e88823514916890099a5af20b6a9178ccf78e7e5e05f4de99bb8797acb756257d7a3a57a53854cb0086bf8aab15b1a9e9db8982500dd2c9ff5948b6
languageName: node
linkType: hard
"micromark-factory-whitespace@npm:^2.0.0":
version: 2.0.1
resolution: "micromark-factory-whitespace@npm:2.0.1"
dependencies:
micromark-factory-space: "npm:^2.0.0"
micromark-util-character: "npm:^2.0.0"
micromark-util-symbol: "npm:^2.0.0"
micromark-util-types: "npm:^2.0.0"
checksum: 10c0/20a1ec58698f24b766510a309b23a10175034fcf1551eaa9da3adcbed3e00cd53d1ebe5f030cf873f76a1cec3c34eb8c50cc227be3344caa9ed25d56cf611224
languageName: node
linkType: hard
"micromark-util-character@npm:^2.0.0":
version: 2.1.1
resolution: "micromark-util-character@npm:2.1.1"
dependencies:
micromark-util-symbol: "npm:^2.0.0"
micromark-util-types: "npm:^2.0.0"
checksum: 10c0/d3fe7a5e2c4060fc2a076f9ce699c82a2e87190a3946e1e5eea77f563869b504961f5668d9c9c014724db28ac32fa909070ea8b30c3a39bd0483cc6c04cc76a1
languageName: node
linkType: hard
"micromark-util-chunked@npm:^2.0.0":
version: 2.0.1
resolution: "micromark-util-chunked@npm:2.0.1"
dependencies:
micromark-util-symbol: "npm:^2.0.0"
checksum: 10c0/b68c0c16fe8106949537bdcfe1be9cf36c0ccd3bc54c4007003cb0984c3750b6cdd0fd77d03f269a3382b85b0de58bde4f6eedbe7ecdf7244759112289b1ab56
languageName: node
linkType: hard
"micromark-util-classify-character@npm:^2.0.0":
version: 2.0.1
resolution: "micromark-util-classify-character@npm:2.0.1"
dependencies:
micromark-util-character: "npm:^2.0.0"
micromark-util-symbol: "npm:^2.0.0"
micromark-util-types: "npm:^2.0.0"
checksum: 10c0/8a02e59304005c475c332f581697e92e8c585bcd45d5d225a66c1c1b14ab5a8062705188c2ccec33cc998d33502514121478b2091feddbc751887fc9c290ed08
languageName: node
linkType: hard
"micromark-util-combine-extensions@npm:^2.0.0":
version: 2.0.1
resolution: "micromark-util-combine-extensions@npm:2.0.1"
dependencies:
micromark-util-chunked: "npm:^2.0.0"
micromark-util-types: "npm:^2.0.0"
checksum: 10c0/f15e282af24c8372cbb10b9b0b3e2c0aa681fea0ca323a44d6bc537dc1d9382c819c3689f14eaa000118f5a163245358ce6276b2cda9a84439cdb221f5d86ae7
languageName: node
linkType: hard
"micromark-util-decode-numeric-character-reference@npm:^2.0.0":
version: 2.0.2
resolution: "micromark-util-decode-numeric-character-reference@npm:2.0.2"
dependencies:
micromark-util-symbol: "npm:^2.0.0"
checksum: 10c0/9c8a9f2c790e5593ffe513901c3a110e9ec8882a08f466da014112a25e5059b51551ca0aeb7ff494657d86eceb2f02ee556c6558b8d66aadc61eae4a240da0df
languageName: node
linkType: hard
"micromark-util-decode-string@npm:^2.0.0":
version: 2.0.1
resolution: "micromark-util-decode-string@npm:2.0.1"
dependencies:
decode-named-character-reference: "npm:^1.0.0"
micromark-util-character: "npm:^2.0.0"
micromark-util-decode-numeric-character-reference: "npm:^2.0.0"
micromark-util-symbol: "npm:^2.0.0"
checksum: 10c0/f24d75b2e5310be6e7b6dee532e0d17d3bf46996841d6295f2a9c87a2046fff4ab603c52ab9d7a7a6430a8b787b1574ae895849c603d262d1b22eef71736b5cb
languageName: node
linkType: hard
"micromark-util-encode@npm:^2.0.0":
version: 2.0.1
resolution: "micromark-util-encode@npm:2.0.1"
checksum: 10c0/b2b29f901093845da8a1bf997ea8b7f5e061ffdba85070dfe14b0197c48fda64ffcf82bfe53c90cf9dc185e69eef8c5d41cae3ba918b96bc279326921b59008a
languageName: node
linkType: hard
"micromark-util-html-tag-name@npm:^2.0.0":
version: 2.0.1
resolution: "micromark-util-html-tag-name@npm:2.0.1"
checksum: 10c0/ae80444db786fde908e9295f19a27a4aa304171852c77414516418650097b8afb401961c9edb09d677b06e97e8370cfa65638dde8438ebd41d60c0a8678b85b9
languageName: node
linkType: hard
"micromark-util-normalize-identifier@npm:^2.0.0":
version: 2.0.1
resolution: "micromark-util-normalize-identifier@npm:2.0.1"
dependencies:
micromark-util-symbol: "npm:^2.0.0"
checksum: 10c0/5299265fa360769fc499a89f40142f10a9d4a5c3dd8e6eac8a8ef3c2e4a6570e4c009cf75ea46dce5ee31c01f25587bde2f4a5cc0a935584ae86dd857f2babbd
languageName: node
linkType: hard
"micromark-util-resolve-all@npm:^2.0.0":
version: 2.0.1
resolution: "micromark-util-resolve-all@npm:2.0.1"
dependencies:
micromark-util-types: "npm:^2.0.0"
checksum: 10c0/bb6ca28764696bb479dc44a2d5b5fe003e7177aeae1d6b0d43f24cc223bab90234092d9c3ce4a4d2b8df095ccfd820537b10eb96bb7044d635f385d65a4c984a
languageName: node
linkType: hard
"micromark-util-sanitize-uri@npm:^2.0.0":
version: 2.0.1
resolution: "micromark-util-sanitize-uri@npm:2.0.1"
dependencies:
micromark-util-character: "npm:^2.0.0"
micromark-util-encode: "npm:^2.0.0"
micromark-util-symbol: "npm:^2.0.0"
checksum: 10c0/60e92166e1870fd4f1961468c2651013ff760617342918e0e0c3c4e872433aa2e60c1e5a672bfe5d89dc98f742d6b33897585cf86ae002cda23e905a3c02527c
languageName: node
linkType: hard
"micromark-util-subtokenize@npm:^2.0.0":
version: 2.1.0
resolution: "micromark-util-subtokenize@npm:2.1.0"
dependencies:
devlop: "npm:^1.0.0"
micromark-util-chunked: "npm:^2.0.0"
micromark-util-symbol: "npm:^2.0.0"
micromark-util-types: "npm:^2.0.0"
checksum: 10c0/bee69eece4393308e657c293ba80d92ebcb637e5f55e21dcf9c3fa732b91a8eda8ac248d76ff375e675175bfadeae4712e5158ef97eef1111789da1ce7ab5067
languageName: node
linkType: hard
"micromark-util-symbol@npm:^2.0.0":
version: 2.0.1
resolution: "micromark-util-symbol@npm:2.0.1"
checksum: 10c0/f2d1b207771e573232436618e78c5e46cd4b5c560dd4a6d63863d58018abbf49cb96ec69f7007471e51434c60de3c9268ef2bf46852f26ff4aacd10f9da16fe9
languageName: node
linkType: hard
"micromark-util-types@npm:^2.0.0":
version: 2.0.2
resolution: "micromark-util-types@npm:2.0.2"
checksum: 10c0/c8c15b96c858db781c4393f55feec10004bf7df95487636c9a9f7209e51002a5cca6a047c5d2a5dc669ff92da20e57aaa881e81a268d9ccadb647f9dce305298
languageName: node
linkType: hard
"micromark@npm:^4.0.0":
version: 4.0.2
resolution: "micromark@npm:4.0.2"
dependencies:
"@types/debug": "npm:^4.0.0"
debug: "npm:^4.0.0"
decode-named-character-reference: "npm:^1.0.0"
devlop: "npm:^1.0.0"
micromark-core-commonmark: "npm:^2.0.0"
micromark-factory-space: "npm:^2.0.0"
micromark-util-character: "npm:^2.0.0"
micromark-util-chunked: "npm:^2.0.0"
micromark-util-combine-extensions: "npm:^2.0.0"
micromark-util-decode-numeric-character-reference: "npm:^2.0.0"
micromark-util-encode: "npm:^2.0.0"
micromark-util-normalize-identifier: "npm:^2.0.0"
micromark-util-resolve-all: "npm:^2.0.0"
micromark-util-sanitize-uri: "npm:^2.0.0"
micromark-util-subtokenize: "npm:^2.0.0"
micromark-util-symbol: "npm:^2.0.0"
micromark-util-types: "npm:^2.0.0"
checksum: 10c0/07462287254219d6eda6eac8a3cebaff2994e0575499e7088027b825105e096e4f51e466b14b2a81b71933a3b6c48ee069049d87bc2c2127eee50d9cc69e8af6
languageName: node
linkType: hard
"micromatch@npm:^4.0.8":
version: 4.0.8
resolution: "micromatch@npm:4.0.8"
dependencies:
braces: "npm:^3.0.3"
picomatch: "npm:^2.3.1"
checksum: 10c0/166fa6eb926b9553f32ef81f5f531d27b4ce7da60e5baf8c021d043b27a388fb95e46a8038d5045877881e673f8134122b59624d5cecbd16eb50a42e7a6b5ca8
languageName: node
linkType: hard
"mime-db@npm:1.52.0":
version: 1.52.0
resolution: "mime-db@npm:1.52.0"
checksum: 10c0/0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa
languageName: node
linkType: hard
"mime-types@npm:^2.1.12":
version: 2.1.35
resolution: "mime-types@npm:2.1.35"
dependencies:
mime-db: "npm:1.52.0"
checksum: 10c0/82fb07ec56d8ff1fc999a84f2f217aa46cb6ed1033fefaabd5785b9a974ed225c90dc72fff460259e66b95b73648596dbcc50d51ed69cdf464af2d237d3149b2
languageName: node
linkType: hard
"mimic-fn@npm:^3.1.0":
version: 3.1.0
resolution: "mimic-fn@npm:3.1.0"
checksum: 10c0/a07cdd8ed6490c2dff5b11f889b245d9556b80f5a653a552a651d17cff5a2d156e632d235106c2369f00cccef4071704589574cf3601bc1b1400a1f620dff067
languageName: node
linkType: hard
"mimic-response@npm:^1.0.0":
version: 1.0.1
resolution: "mimic-response@npm:1.0.1"
checksum: 10c0/c5381a5eae997f1c3b5e90ca7f209ed58c3615caeee850e85329c598f0c000ae7bec40196580eef1781c60c709f47258131dab237cad8786f8f56750594f27fa
languageName: node
linkType: hard
"mimic-response@npm:^3.1.0":
version: 3.1.0
resolution: "mimic-response@npm:3.1.0"
checksum: 10c0/0d6f07ce6e03e9e4445bee655202153bdb8a98d67ee8dc965ac140900d7a2688343e6b4c9a72cfc9ef2f7944dfd76eef4ab2482eb7b293a68b84916bac735362
languageName: node
linkType: hard
"min-document@npm:^2.19.0":
version: 2.19.0
resolution: "min-document@npm:2.19.0"
dependencies:
dom-walk: "npm:^0.1.0"
checksum: 10c0/783724da716fc73a51c171865d7b29bf2b855518573f82ef61c40d214f6898d7b91b5c5419e4d22693cdb78d4615873ebc3b37d7639d3dd00ca283e5a07c7af9
languageName: node
linkType: hard
"min-indent@npm:^1.0.0":
version: 1.0.1
resolution: "min-indent@npm:1.0.1"
checksum: 10c0/7e207bd5c20401b292de291f02913230cb1163abca162044f7db1d951fa245b174dc00869d40dd9a9f32a885ad6a5f3e767ee104cf278f399cb4e92d3f582d5c
languageName: node
linkType: hard
"mini-svg-data-uri@npm:^1.0.3":
version: 1.4.4
resolution: "mini-svg-data-uri@npm:1.4.4"
bin:
mini-svg-data-uri: cli.js
checksum: 10c0/24545fa30b5a45449241bf19c25b8bc37594b63ec06401b3d563bd1c2e8a6abb7c18741f8b354e0064baa63c291be214154bf3a66f201ae71dfab3cc1a5e3191
languageName: node
linkType: hard
"minimatch@npm:^9.0.4":
version: 9.0.5
resolution: "minimatch@npm:9.0.5"
dependencies:
brace-expansion: "npm:^2.0.1"
checksum: 10c0/de96cf5e35bdf0eab3e2c853522f98ffbe9a36c37797778d2665231ec1f20a9447a7e567cb640901f89e4daaa95ae5d70c65a9e8aa2bb0019b6facbc3c0575ed
languageName: node
linkType: hard
"minimist-options@npm:4.1.0":
version: 4.1.0
resolution: "minimist-options@npm:4.1.0"
dependencies:
arrify: "npm:^1.0.1"
is-plain-obj: "npm:^1.1.0"
kind-of: "npm:^6.0.3"
checksum: 10c0/7871f9cdd15d1e7374e5b013e2ceda3d327a06a8c7b38ae16d9ef941e07d985e952c589e57213f7aa90a8744c60aed9524c0d85e501f5478382d9181f2763f54
languageName: node
linkType: hard
"minimist@npm:^1.2.5, minimist@npm:^1.2.6, minimist@npm:^1.2.8":
version: 1.2.8
resolution: "minimist@npm:1.2.8"
checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6
languageName: node
linkType: hard
"minipass-collect@npm:^2.0.1":
version: 2.0.1
resolution: "minipass-collect@npm:2.0.1"
dependencies:
minipass: "npm:^7.0.3"
checksum: 10c0/5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e
languageName: node
linkType: hard
"minipass-fetch@npm:^4.0.0":
version: 4.0.0
resolution: "minipass-fetch@npm:4.0.0"
dependencies:
encoding: "npm:^0.1.13"
minipass: "npm:^7.0.3"
minipass-sized: "npm:^1.0.3"
minizlib: "npm:^3.0.1"
dependenciesMeta:
encoding:
optional: true
checksum: 10c0/7fa30ce7c373fb6f94c086b374fff1589fd7e78451855d2d06c2e2d9df936d131e73e952163063016592ed3081444bd8d1ea608533313b0149156ce23311da4b
languageName: node
linkType: hard
"minipass-flush@npm:^1.0.5":
version: 1.0.5
resolution: "minipass-flush@npm:1.0.5"
dependencies:
minipass: "npm:^3.0.0"
checksum: 10c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd
languageName: node
linkType: hard
"minipass-pipeline@npm:^1.2.4":
version: 1.2.4
resolution: "minipass-pipeline@npm:1.2.4"
dependencies:
minipass: "npm:^3.0.0"
checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2
languageName: node
linkType: hard
"minipass-sized@npm:^1.0.3":
version: 1.0.3
resolution: "minipass-sized@npm:1.0.3"
dependencies:
minipass: "npm:^3.0.0"
checksum: 10c0/298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb
languageName: node
linkType: hard
"minipass@npm:^3.0.0":
version: 3.3.6
resolution: "minipass@npm:3.3.6"
dependencies:
yallist: "npm:^4.0.0"
checksum: 10c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c
languageName: node
linkType: hard
"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2":
version: 7.1.2
resolution: "minipass@npm:7.1.2"
checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557
languageName: node
linkType: hard
"minizlib@npm:^3.0.1":
version: 3.0.1
resolution: "minizlib@npm:3.0.1"
dependencies:
minipass: "npm:^7.0.4"
rimraf: "npm:^5.0.5"
checksum: 10c0/82f8bf70da8af656909a8ee299d7ed3b3372636749d29e105f97f20e88971be31f5ed7642f2e898f00283b68b701cc01307401cdc209b0efc5dd3818220e5093
languageName: node
linkType: hard
"mitt@npm:^1.1.3":
version: 1.2.0
resolution: "mitt@npm:1.2.0"
checksum: 10c0/81a0f22b7ac1a0ab5f17489e811641ad589b5e9d2a46a25adac19c8c0ba9c3b50bef7b287582357de25eaa0a47e5d4ced63ea8b8641ba6ca1d1f39d3ec47bb11
languageName: node
linkType: hard
"mjolnir.js@npm:^2.7.0":
version: 2.7.3
resolution: "mjolnir.js@npm:2.7.3"
dependencies:
"@types/hammerjs": "npm:^2.0.41"
hammerjs: "npm:^2.0.8"
checksum: 10c0/82f86dedfd410a640e5d0ef6f04e1d72ab292e61d42434bc56f103670ada45b2aacf130527f434d7d4bd0b8d2d5bc82bd36850e7586f1b70ebb72da2fe2c72b2
languageName: node
linkType: hard
"mkdirp@npm:^3.0.1":
version: 3.0.1
resolution: "mkdirp@npm:3.0.1"
bin:
mkdirp: dist/cjs/src/bin.js
checksum: 10c0/9f2b975e9246351f5e3a40dcfac99fcd0baa31fbfab615fe059fb11e51f10e4803c63de1f384c54d656e4db31d000e4767e9ef076a22e12a641357602e31d57d
languageName: node
linkType: hard
"moment-timezone@npm:^0.5.35":
version: 0.5.45
resolution: "moment-timezone@npm:0.5.45"
dependencies:
moment: "npm:^2.29.4"
checksum: 10c0/7497f23c4b8c875dbf07c03f9a1253f79edaeedc29d5732e36bfd3c5577e25aed1924fbd84cbb713ce1920dbe822be0e21bd487851a7d13907226f289a5e568b
languageName: node
linkType: hard
"moment@npm:^2.10.6, moment@npm:^2.19.3, moment@npm:^2.29.4":
version: 2.30.1
resolution: "moment@npm:2.30.1"
checksum: 10c0/865e4279418c6de666fca7786607705fd0189d8a7b7624e2e56be99290ac846f90878a6f602e34b4e0455c549b85385b1baf9966845962b313699e7cb847543a
languageName: node
linkType: hard
"monaco-editor@npm:^0.52.0":
version: 0.52.2
resolution: "monaco-editor@npm:0.52.2"
checksum: 10c0/5a92da64f1e2ab375c0ce99364137f794d057c97bed10ecc65a08d6e6846804b8ecbd377eacf01e498f7dfbe1b21e8be64f728256681448f0484df90e767b435
languageName: node
linkType: hard
"motion-dom@npm:^11.18.1":
version: 11.18.1
resolution: "motion-dom@npm:11.18.1"
dependencies:
motion-utils: "npm:^11.18.1"
checksum: 10c0/98378bdf9d77870829cdf3624c5eff02e48cfa820dfc74450364d7421884700048d60e277bfbf477df33270fbae4c1980e5914586f5b6dff28d4921fdca8ac47
languageName: node
linkType: hard
"motion-dom@npm:^12.23.12":
version: 12.23.12
resolution: "motion-dom@npm:12.23.12"
dependencies:
motion-utils: "npm:^12.23.6"
checksum: 10c0/1b6a4b86c1aed5b5da7b8a5d1f8310ad169125235bdc1953b8c41cf9f4e2c460ee90bb48ffdae54daecb8db1d7006566ceb5f5c9ccdc82606d548c527cb2631e
languageName: node
linkType: hard
"motion-utils@npm:^11.18.1":
version: 11.18.1
resolution: "motion-utils@npm:11.18.1"
checksum: 10c0/dac083bdeb6e433a277ac4362211b0fdce59ff09d6f7897f0f49d1e3561209c6481f676876daf99a33485054bc7e4b1d1b8d1de16f7b1e5c6f117fe76358ca00
languageName: node
linkType: hard
"motion-utils@npm:^12.23.6":
version: 12.23.6
resolution: "motion-utils@npm:12.23.6"
checksum: 10c0/c058e8ba6423b3baa63e985bcc669877ee7d9579d938f5348b4e60c5ea1b4b33dd7f4877434436a4a5807f3cf00370d3fd4079a6fdd6309c5c87aa62b311a897
languageName: node
linkType: hard
"ms@npm:2.1.2":
version: 2.1.2
resolution: "ms@npm:2.1.2"
checksum: 10c0/a437714e2f90dbf881b5191d35a6db792efbca5badf112f87b9e1c712aace4b4b9b742dd6537f3edf90fd6f684de897cec230abde57e87883766712ddda297cc
languageName: node
linkType: hard
"ms@npm:^2.0.0, ms@npm:^2.1.3":
version: 2.1.3
resolution: "ms@npm:2.1.3"
checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48
languageName: node
linkType: hard
"mumath@npm:^3.3.4":
version: 3.3.4
resolution: "mumath@npm:3.3.4"
dependencies:
almost-equal: "npm:^1.1.0"
checksum: 10c0/92b07302674e903b9c2ee0117e04b6783b1619d6bf6c5149d34346e51ce1fb91ab389f30b7f49baa1a9337201afe8f4522120ef8fb7a45bf221f5c1c49da849b
languageName: node
linkType: hard
"murmurhash-js@npm:^1.0.0":
version: 1.0.0
resolution: "murmurhash-js@npm:1.0.0"
checksum: 10c0/f8569e16db0ba6f953bf88286e97cf737f1efe97b224e537c9308566ab963a067c7eca5b636fb473d6413c4cc3b79690b78ff7ab0f290e75db91c6fde0df92b4
languageName: node
linkType: hard
"mustache@npm:^4.2.0":
version: 4.2.0
resolution: "mustache@npm:4.2.0"
bin:
mustache: bin/mustache
checksum: 10c0/1f8197e8a19e63645a786581d58c41df7853da26702dbc005193e2437c98ca49b255345c173d50c08fe4b4dbb363e53cb655ecc570791f8deb09887248dd34a2
languageName: node
linkType: hard
"mz@npm:^2.7.0":
version: 2.7.0
resolution: "mz@npm:2.7.0"
dependencies:
any-promise: "npm:^1.0.0"
object-assign: "npm:^4.0.1"
thenify-all: "npm:^1.0.0"
checksum: 10c0/103114e93f87362f0b56ab5b2e7245051ad0276b646e3902c98397d18bb8f4a77f2ea4a2c9d3ad516034ea3a56553b60d3f5f78220001ca4c404bd711bd0af39
languageName: node
linkType: hard
"nanoid@npm:^3.3.6, nanoid@npm:^3.3.8":
version: 3.3.8
resolution: "nanoid@npm:3.3.8"
bin:
nanoid: bin/nanoid.cjs
checksum: 10c0/4b1bb29f6cfebf3be3bc4ad1f1296fb0a10a3043a79f34fbffe75d1621b4318319211cd420549459018ea3592f0d2f159247a6f874911d6d26eaaadda2478120
languageName: node
linkType: hard
"negotiator@npm:^1.0.0":
version: 1.0.0
resolution: "negotiator@npm:1.0.0"
checksum: 10c0/4c559dd52669ea48e1914f9d634227c561221dd54734070791f999c52ed0ff36e437b2e07d5c1f6e32909fc625fe46491c16e4a8f0572567d4dd15c3a4fda04b
languageName: node
linkType: hard
"next-themes@npm:^0.4.4":
version: 0.4.4
resolution: "next-themes@npm:0.4.4"
peerDependencies:
react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
checksum: 10c0/45d82f968ccfc90f6e6e3cdb95962132f6d1e19eaf614c4e824fc5d079ec522dd50cc196c58da2f000d755b81dbb0caf378c4f512a9e6b6c0a0daa3f99f1a2c7
languageName: node
linkType: hard
"node-domexception@npm:1.0.0":
version: 1.0.0
resolution: "node-domexception@npm:1.0.0"
checksum: 10c0/5e5d63cda29856402df9472335af4bb13875e1927ad3be861dc5ebde38917aecbf9ae337923777af52a48c426b70148815e890a5d72760f1b4d758cc671b1a2b
languageName: node
linkType: hard
"node-fetch@npm:^1.0.1":
version: 1.7.3
resolution: "node-fetch@npm:1.7.3"
dependencies:
encoding: "npm:^0.1.11"
is-stream: "npm:^1.0.1"
checksum: 10c0/5a6b56b3edf909ccd20414355867d24f15f1885da3b26be90840241c46e63754ebf4697050f897daab676e3952d969611ffe1d4bc4506cf50f70837e20ad5328
languageName: node
linkType: hard
"node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.7":
version: 2.7.0
resolution: "node-fetch@npm:2.7.0"
dependencies:
whatwg-url: "npm:^5.0.0"
peerDependencies:
encoding: ^0.1.0
peerDependenciesMeta:
encoding:
optional: true
checksum: 10c0/b55786b6028208e6fbe594ccccc213cab67a72899c9234eb59dba51062a299ea853210fcf526998eaa2867b0963ad72338824450905679ff0fa304b8c5093ae8
languageName: node
linkType: hard
"node-gyp@npm:latest":
version: 11.0.0
resolution: "node-gyp@npm:11.0.0"
dependencies:
env-paths: "npm:^2.2.0"
exponential-backoff: "npm:^3.1.1"
glob: "npm:^10.3.10"
graceful-fs: "npm:^4.2.6"
make-fetch-happen: "npm:^14.0.3"
nopt: "npm:^8.0.0"
proc-log: "npm:^5.0.0"
semver: "npm:^7.3.5"
tar: "npm:^7.4.3"
which: "npm:^5.0.0"
bin:
node-gyp: bin/node-gyp.js
checksum: 10c0/a3b885bbee2d271f1def32ba2e30ffcf4562a3db33af06b8b365e053153e2dd2051b9945783c3c8e852d26a0f20f65b251c7e83361623383a99635c0280ee573
languageName: node
linkType: hard
"node-int64@npm:^0.4.0":
version: 0.4.0
resolution: "node-int64@npm:0.4.0"
checksum: 10c0/a6a4d8369e2f2720e9c645255ffde909c0fbd41c92ea92a5607fc17055955daac99c1ff589d421eee12a0d24e99f7bfc2aabfeb1a4c14742f6c099a51863f31a
languageName: node
linkType: hard
"nopt@npm:^8.0.0":
version: 8.0.0
resolution: "nopt@npm:8.0.0"
dependencies:
abbrev: "npm:^2.0.0"
bin:
nopt: bin/nopt.js
checksum: 10c0/19cb986f79abaca2d0f0b560021da7b32ee6fcc3de48f3eaeb0c324d36755c17754f886a754c091f01f740c17caf7d6aea8237b7fbaf39f476ae5e30a249f18f
languageName: node
linkType: hard
"normalize-package-data@npm:^2.5.0":
version: 2.5.0
resolution: "normalize-package-data@npm:2.5.0"
dependencies:
hosted-git-info: "npm:^2.1.4"
resolve: "npm:^1.10.0"
semver: "npm:2 || 3 || 4 || 5"
validate-npm-package-license: "npm:^3.0.1"
checksum: 10c0/357cb1646deb42f8eb4c7d42c4edf0eec312f3628c2ef98501963cc4bbe7277021b2b1d977f982b2edce78f5a1014613ce9cf38085c3df2d76730481357ca504
languageName: node
linkType: hard
"normalize-package-data@npm:^3.0.0":
version: 3.0.3
resolution: "normalize-package-data@npm:3.0.3"
dependencies:
hosted-git-info: "npm:^4.0.1"
is-core-module: "npm:^2.5.0"
semver: "npm:^7.3.4"
validate-npm-package-license: "npm:^3.0.1"
checksum: 10c0/e5d0f739ba2c465d41f77c9d950e291ea4af78f8816ddb91c5da62257c40b76d8c83278b0d08ffbcd0f187636ebddad20e181e924873916d03e6e5ea2ef026be
languageName: node
linkType: hard
"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0":
version: 3.0.0
resolution: "normalize-path@npm:3.0.0"
checksum: 10c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046
languageName: node
linkType: hard
"normalize-url@npm:^6.0.1":
version: 6.1.0
resolution: "normalize-url@npm:6.1.0"
checksum: 10c0/95d948f9bdd2cfde91aa786d1816ae40f8262946e13700bf6628105994fe0ff361662c20af3961161c38a119dc977adeb41fc0b41b1745eb77edaaf9cb22db23
languageName: node
linkType: hard
"object-assign@npm:^4.0.1, object-assign@npm:^4.1.0, object-assign@npm:^4.1.1":
version: 4.1.1
resolution: "object-assign@npm:4.1.1"
checksum: 10c0/1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414
languageName: node
linkType: hard
"object-hash@npm:^3.0.0":
version: 3.0.0
resolution: "object-hash@npm:3.0.0"
checksum: 10c0/a06844537107b960c1c8b96cd2ac8592a265186bfa0f6ccafe0d34eabdb526f6fa81da1f37c43df7ed13b12a4ae3457a16071603bcd39d8beddb5f08c37b0f47
languageName: node
linkType: hard
"object-inspect@npm:^1.13.1":
version: 1.13.2
resolution: "object-inspect@npm:1.13.2"
checksum: 10c0/b97835b4c91ec37b5fd71add84f21c3f1047d1d155d00c0fcd6699516c256d4fcc6ff17a1aced873197fe447f91a3964178fd2a67a1ee2120cdaf60e81a050b4
languageName: node
linkType: hard
"object-is@npm:^1.1.5":
version: 1.1.6
resolution: "object-is@npm:1.1.6"
dependencies:
call-bind: "npm:^1.0.7"
define-properties: "npm:^1.2.1"
checksum: 10c0/506af444c4dce7f8e31f34fc549e2fb8152d6b9c4a30c6e62852badd7f520b579c679af433e7a072f9d78eb7808d230dc12e1cf58da9154dfbf8813099ea0fe0
languageName: node
linkType: hard
"object-keys@npm:^1.1.1":
version: 1.1.1
resolution: "object-keys@npm:1.1.1"
checksum: 10c0/b11f7ccdbc6d406d1f186cdadb9d54738e347b2692a14439ca5ac70c225fa6db46db809711b78589866d47b25fc3e8dee0b4c722ac751e11180f9380e3d8601d
languageName: node
linkType: hard
"object-stream@npm:0.0.1":
version: 0.0.1
resolution: "object-stream@npm:0.0.1"
checksum: 10c0/f8ecf919b3e10917daf34fb2bb94521108b85411b8a94d5a996e6d40eb4c6e2246e179067dc528b83e86c51b01b1fd16c617da0e2193dd00f0bf74a1efb8f048
languageName: node
linkType: hard
"object.assign@npm:^4.1.5":
version: 4.1.5
resolution: "object.assign@npm:4.1.5"
dependencies:
call-bind: "npm:^1.0.5"
define-properties: "npm:^1.2.1"
has-symbols: "npm:^1.0.3"
object-keys: "npm:^1.1.1"
checksum: 10c0/60108e1fa2706f22554a4648299b0955236c62b3685c52abf4988d14fffb0e7731e00aa8c6448397e3eb63d087dcc124a9f21e1980f36d0b2667f3c18bacd469
languageName: node
linkType: hard
"observable-fns@npm:^0.6.1":
version: 0.6.1
resolution: "observable-fns@npm:0.6.1"
checksum: 10c0/bf25d5b3e4040233e886800c48b347361d9c7a1179f345590e671c2dd5ea9b4447bd5037f8ed40b2bb6fd7e205f0c5450eff15f48efdf91b3dec027007cf2834
languageName: node
linkType: hard
"ollama-ai-provider-v2@npm:^0.0.5":
version: 0.0.5
resolution: "ollama-ai-provider-v2@npm:0.0.5"
dependencies:
"@ai-sdk/provider": "npm:1.0.7"
"@ai-sdk/provider-utils": "npm:2.1.6"
peerDependencies:
zod: ^3.0.0
checksum: 10c0/d5e251a2f4d00dc9829538a3aa284446c77365ea36cc371898231b91e764727a0de4af88e76bdba7545fe78bdc79f6f851aebeaff1d8f20cb89ab14487e02840
languageName: node
linkType: hard
"once@npm:^1.3.1, once@npm:^1.4.0":
version: 1.4.0
resolution: "once@npm:1.4.0"
dependencies:
wrappy: "npm:1"
checksum: 10c0/5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0
languageName: node
linkType: hard
"openai-zod-functions@npm:^0.1.2":
version: 0.1.2
resolution: "openai-zod-functions@npm:0.1.2"
dependencies:
zod: "npm:^3.22.4"
zod-to-json-schema: "npm:^3.22.3"
zod-validation-error: "npm:^2.1.0"
peerDependencies:
openai: ">= 4.20.0"
checksum: 10c0/439a3af9afbe2e9c672a0539026e26046969d8d4db8887330f4c2a7f0b4a653ba15bd735d0bd9c392b7d59e05649fa8ab9e52ae8de7f622caec953048e1c5a92
languageName: node
linkType: hard
"openai@npm:^4.93.0":
version: 4.97.0
resolution: "openai@npm:4.97.0"
dependencies:
"@types/node": "npm:^18.11.18"
"@types/node-fetch": "npm:^2.6.4"
abort-controller: "npm:^3.0.0"
agentkeepalive: "npm:^4.2.1"
form-data-encoder: "npm:1.7.2"
formdata-node: "npm:^4.3.2"
node-fetch: "npm:^2.6.7"
peerDependencies:
ws: ^8.18.0
zod: ^3.23.8
peerDependenciesMeta:
ws:
optional: true
zod:
optional: true
bin:
openai: bin/cli
checksum: 10c0/9938eb85102dd0465197e79c0912df9f3afd52be2d9524fd5100f5befbfa70e6bb7803120515ffa0925b7afc14762052b087c7c2f3d0b85852efa22aa1d745d6
languageName: node
linkType: hard
"p-cancelable@npm:^2.0.0":
version: 2.1.1
resolution: "p-cancelable@npm:2.1.1"
checksum: 10c0/8c6dc1f8dd4154fd8b96a10e55a3a832684c4365fb9108056d89e79fbf21a2465027c04a59d0d797b5ffe10b54a61a32043af287d5c4860f1e996cbdbc847f01
languageName: node
linkType: hard
"p-defer@npm:^1.0.0":
version: 1.0.0
resolution: "p-defer@npm:1.0.0"
checksum: 10c0/ed603c3790e74b061ac2cb07eb6e65802cf58dce0fbee646c113a7b71edb711101329ad38f99e462bd2e343a74f6e9366b496a35f1d766c187084d3109900487
languageName: node
linkType: hard
"p-finally@npm:^1.0.0":
version: 1.0.0
resolution: "p-finally@npm:1.0.0"
checksum: 10c0/6b8552339a71fe7bd424d01d8451eea92d379a711fc62f6b2fe64cad8a472c7259a236c9a22b4733abca0b5666ad503cb497792a0478c5af31ded793d00937e7
languageName: node
linkType: hard
"p-limit@npm:^2.2.0":
version: 2.3.0
resolution: "p-limit@npm:2.3.0"
dependencies:
p-try: "npm:^2.0.0"
checksum: 10c0/8da01ac53efe6a627080fafc127c873da40c18d87b3f5d5492d465bb85ec7207e153948df6b9cbaeb130be70152f874229b8242ee2be84c0794082510af97f12
languageName: node
linkType: hard
"p-limit@npm:^3.0.2":
version: 3.1.0
resolution: "p-limit@npm:3.1.0"
dependencies:
yocto-queue: "npm:^0.1.0"
checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a
languageName: node
linkType: hard
"p-locate@npm:^4.1.0":
version: 4.1.0
resolution: "p-locate@npm:4.1.0"
dependencies:
p-limit: "npm:^2.2.0"
checksum: 10c0/1b476ad69ad7f6059744f343b26d51ce091508935c1dbb80c4e0a2f397ffce0ca3a1f9f5cd3c7ce19d7929a09719d5c65fe70d8ee289c3f267cd36f2881813e9
languageName: node
linkType: hard
"p-locate@npm:^5.0.0":
version: 5.0.0
resolution: "p-locate@npm:5.0.0"
dependencies:
p-limit: "npm:^3.0.2"
checksum: 10c0/2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a
languageName: node
linkType: hard
"p-map@npm:^7.0.2":
version: 7.0.3
resolution: "p-map@npm:7.0.3"
checksum: 10c0/46091610da2b38ce47bcd1d8b4835a6fa4e832848a6682cf1652bc93915770f4617afc844c10a77d1b3e56d2472bb2d5622353fa3ead01a7f42b04fc8e744a5c
languageName: node
linkType: hard
"p-queue@npm:^6.6.2":
version: 6.6.2
resolution: "p-queue@npm:6.6.2"
dependencies:
eventemitter3: "npm:^4.0.4"
p-timeout: "npm:^3.2.0"
checksum: 10c0/5739ecf5806bbeadf8e463793d5e3004d08bb3f6177bd1a44a005da8fd81bb90f80e4633e1fb6f1dfd35ee663a5c0229abe26aebb36f547ad5a858347c7b0d3e
languageName: node
linkType: hard
"p-retry@npm:4":
version: 4.6.2
resolution: "p-retry@npm:4.6.2"
dependencies:
"@types/retry": "npm:0.12.0"
retry: "npm:^0.13.1"
checksum: 10c0/d58512f120f1590cfedb4c2e0c42cb3fa66f3cea8a4646632fcb834c56055bb7a6f138aa57b20cc236fb207c9d694e362e0b5c2b14d9b062f67e8925580c73b0
languageName: node
linkType: hard
"p-timeout@npm:^3.2.0":
version: 3.2.0
resolution: "p-timeout@npm:3.2.0"
dependencies:
p-finally: "npm:^1.0.0"
checksum: 10c0/524b393711a6ba8e1d48137c5924749f29c93d70b671e6db761afa784726572ca06149c715632da8f70c090073afb2af1c05730303f915604fd38ee207b70a61
languageName: node
linkType: hard
"p-try@npm:^2.0.0":
version: 2.2.0
resolution: "p-try@npm:2.2.0"
checksum: 10c0/c36c19907734c904b16994e6535b02c36c2224d433e01a2f1ab777237f4d86e6289fd5fd464850491e940379d4606ed850c03e0f9ab600b0ebddb511312e177f
languageName: node
linkType: hard
"package-json-from-dist@npm:^1.0.0":
version: 1.0.1
resolution: "package-json-from-dist@npm:1.0.1"
checksum: 10c0/62ba2785eb655fec084a257af34dbe24292ab74516d6aecef97ef72d4897310bc6898f6c85b5cd22770eaa1ce60d55a0230e150fb6a966e3ecd6c511e23d164b
languageName: node
linkType: hard
"pako@npm:1.0.11":
version: 1.0.11
resolution: "pako@npm:1.0.11"
checksum: 10c0/86dd99d8b34c3930345b8bbeb5e1cd8a05f608eeb40967b293f72fe469d0e9c88b783a8777e4cc7dc7c91ce54c5e93d88ff4b4f060e6ff18408fd21030d9ffbe
languageName: node
linkType: hard
"parquet-wasm@npm:^0.6.1":
version: 0.6.1
resolution: "parquet-wasm@npm:0.6.1"
checksum: 10c0/dcade4b006ff86edca711dacf3c71997b4a86985384fc183119f73d5dae1d0c94d3e7fa5b48845845df5db97d3eb445d6c137f3459a5d9a66a3b9b3bc0474497
languageName: node
linkType: hard
"parse-entities@npm:^4.0.0":
version: 4.0.2
resolution: "parse-entities@npm:4.0.2"
dependencies:
"@types/unist": "npm:^2.0.0"
character-entities-legacy: "npm:^3.0.0"
character-reference-invalid: "npm:^2.0.0"
decode-named-character-reference: "npm:^1.0.0"
is-alphanumerical: "npm:^2.0.0"
is-decimal: "npm:^2.0.0"
is-hexadecimal: "npm:^2.0.0"
checksum: 10c0/a13906b1151750b78ed83d386294066daf5fb559e08c5af9591b2d98cc209123103016a01df776f65f8219ad26652d6d6b210d0974d452049cddfc53a8916c34
languageName: node
linkType: hard
"parse-json@npm:^5.0.0":
version: 5.2.0
resolution: "parse-json@npm:5.2.0"
dependencies:
"@babel/code-frame": "npm:^7.0.0"
error-ex: "npm:^1.3.1"
json-parse-even-better-errors: "npm:^2.3.0"
lines-and-columns: "npm:^1.1.6"
checksum: 10c0/77947f2253005be7a12d858aedbafa09c9ae39eb4863adf330f7b416ca4f4a08132e453e08de2db46459256fb66afaac5ee758b44fe6541b7cdaf9d252e59585
languageName: node
linkType: hard
"path-exists@npm:^4.0.0":
version: 4.0.0
resolution: "path-exists@npm:4.0.0"
checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b
languageName: node
linkType: hard
"path-key@npm:^3.1.0":
version: 3.1.1
resolution: "path-key@npm:3.1.1"
checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c
languageName: node
linkType: hard
"path-parse@npm:^1.0.7":
version: 1.0.7
resolution: "path-parse@npm:1.0.7"
checksum: 10c0/11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1
languageName: node
linkType: hard
"path-scurry@npm:^1.11.1":
version: 1.11.1
resolution: "path-scurry@npm:1.11.1"
dependencies:
lru-cache: "npm:^10.2.0"
minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0"
checksum: 10c0/32a13711a2a505616ae1cc1b5076801e453e7aae6ac40ab55b388bb91b9d0547a52f5aaceff710ea400205f18691120d4431e520afbe4266b836fadede15872d
languageName: node
linkType: hard
"pbf@npm:^3.1.0, pbf@npm:^3.2.1":
version: 3.3.0
resolution: "pbf@npm:3.3.0"
dependencies:
ieee754: "npm:^1.1.12"
resolve-protobuf-schema: "npm:^2.1.0"
bin:
pbf: bin/pbf
checksum: 10c0/79e5dc59a9391789de84b0a6d713fad0dd1e5ce6eb721536af8c9ec49feae04fdebab9f077b760bba858e615a95ac714a7d248ecb43736e904bb8396885e16d6
languageName: node
linkType: hard
"performance-now@npm:^0.2.0":
version: 0.2.0
resolution: "performance-now@npm:0.2.0"
checksum: 10c0/d7f3824e443491208f7124b45d3280dbff889f8f048c3aee507109c24644d51a226eb07fd7ac51dd0eef144639590c57410c2d167bd4fdf0c5caa0101a449c3d
languageName: node
linkType: hard
"performance-now@npm:^2.1.0":
version: 2.1.0
resolution: "performance-now@npm:2.1.0"
checksum: 10c0/22c54de06f269e29f640e0e075207af57de5052a3d15e360c09b9a8663f393f6f45902006c1e71aa8a5a1cdfb1a47fe268826f8496d6425c362f00f5bc3e85d9
languageName: node
linkType: hard
"picocolors@npm:^1.0.0":
version: 1.0.1
resolution: "picocolors@npm:1.0.1"
checksum: 10c0/c63cdad2bf812ef0d66c8db29583802355d4ca67b9285d846f390cc15c2f6ccb94e8cb7eb6a6e97fc5990a6d3ad4ae42d86c84d3146e667c739a4234ed50d400
languageName: node
linkType: hard
"picocolors@npm:^1.1.1":
version: 1.1.1
resolution: "picocolors@npm:1.1.1"
checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58
languageName: node
linkType: hard
"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.1":
version: 2.3.1
resolution: "picomatch@npm:2.3.1"
checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be
languageName: node
linkType: hard
"pify@npm:^2.3.0":
version: 2.3.0
resolution: "pify@npm:2.3.0"
checksum: 10c0/551ff8ab830b1052633f59cb8adc9ae8407a436e06b4a9718bcb27dc5844b83d535c3a8512b388b6062af65a98c49bdc0dd523d8b2617b188f7c8fee457158dc
languageName: node
linkType: hard
"pirates@npm:^4.0.1":
version: 4.0.6
resolution: "pirates@npm:4.0.6"
checksum: 10c0/00d5fa51f8dded94d7429700fb91a0c1ead00ae2c7fd27089f0c5b63e6eca36197fe46384631872690a66f390c5e27198e99006ab77ae472692ab9c2ca903f36
languageName: node
linkType: hard
"pmtiles@npm:^3.0.4":
version: 3.2.1
resolution: "pmtiles@npm:3.2.1"
dependencies:
"@types/leaflet": "npm:^1.9.8"
fflate: "npm:^0.8.0"
checksum: 10c0/645612bb23837808345581dde9cee89c2987b0556c26ac0b661dffeef42c53ceb888bb5be8817ef3fd40623b96dc6036808773529ee5f6694ddbb38af4bc5bcb
languageName: node
linkType: hard
"point-in-polygon-hao@npm:^1.1.0":
version: 1.1.0
resolution: "point-in-polygon-hao@npm:1.1.0"
checksum: 10c0/2f992143b7b7ba095e43e98d6df6c5ad2d381f03fe6ac54e0f84aa0032fccf3996906ba06b8541014c6d59ee4ecef934c9356b9e34b3dc450e6ee0f13fe1f39e
languageName: node
linkType: hard
"polygon-clipping@npm:^0.15.3":
version: 0.15.7
resolution: "polygon-clipping@npm:0.15.7"
dependencies:
robust-predicates: "npm:^3.0.2"
splaytree: "npm:^3.1.0"
checksum: 10c0/9515283509f1793f22fd87e68662838a6ebbd33cca4fc4bccd9f1b4f366383a4590e9a1cd48287e6897ad018803aeb97ed9ebe38bada5cffa7b4551539a9ab10
languageName: node
linkType: hard
"possible-typed-array-names@npm:^1.0.0":
version: 1.0.0
resolution: "possible-typed-array-names@npm:1.0.0"
checksum: 10c0/d9aa22d31f4f7680e20269db76791b41c3a32c01a373e25f8a4813b4d45f7456bfc2b6d68f752dc4aab0e0bb0721cb3d76fb678c9101cb7a16316664bc2c73fd
languageName: node
linkType: hard
"postcss-import@npm:^15.1.0":
version: 15.1.0
resolution: "postcss-import@npm:15.1.0"
dependencies:
postcss-value-parser: "npm:^4.0.0"
read-cache: "npm:^1.0.0"
resolve: "npm:^1.1.7"
peerDependencies:
postcss: ^8.0.0
checksum: 10c0/518aee5c83ea6940e890b0be675a2588db68b2582319f48c3b4e06535a50ea6ee45f7e63e4309f8754473245c47a0372632378d1d73d901310f295a92f26f17b
languageName: node
linkType: hard
"postcss-js@npm:^4.0.1":
version: 4.0.1
resolution: "postcss-js@npm:4.0.1"
dependencies:
camelcase-css: "npm:^2.0.1"
peerDependencies:
postcss: ^8.4.21
checksum: 10c0/af35d55cb873b0797d3b42529514f5318f447b134541844285c9ac31a17497297eb72296902967911bb737a75163441695737300ce2794e3bd8c70c13a3b106e
languageName: node
linkType: hard
"postcss-load-config@npm:^4.0.2":
version: 4.0.2
resolution: "postcss-load-config@npm:4.0.2"
dependencies:
lilconfig: "npm:^3.0.0"
yaml: "npm:^2.3.4"
peerDependencies:
postcss: ">=8.0.9"
ts-node: ">=9.0.0"
peerDependenciesMeta:
postcss:
optional: true
ts-node:
optional: true
checksum: 10c0/3d7939acb3570b0e4b4740e483d6e555a3e2de815219cb8a3c8fc03f575a6bde667443aa93369c0be390af845cb84471bf623e24af833260de3a105b78d42519
languageName: node
linkType: hard
"postcss-nested@npm:^6.2.0":
version: 6.2.0
resolution: "postcss-nested@npm:6.2.0"
dependencies:
postcss-selector-parser: "npm:^6.1.1"
peerDependencies:
postcss: ^8.2.14
checksum: 10c0/7f9c3f2d764191a39364cbdcec350f26a312431a569c9ef17408021424726b0d67995ff5288405e3724bb7152a4c92f73c027e580ec91e798800ed3c52e2bc6e
languageName: node
linkType: hard
"postcss-selector-parser@npm:^6.1.1, postcss-selector-parser@npm:^6.1.2":
version: 6.1.2
resolution: "postcss-selector-parser@npm:6.1.2"
dependencies:
cssesc: "npm:^3.0.0"
util-deprecate: "npm:^1.0.2"
checksum: 10c0/523196a6bd8cf660bdf537ad95abd79e546d54180f9afb165a4ab3e651ac705d0f8b8ce6b3164fb9e3279ce482c5f751a69eb2d3a1e8eb0fd5e82294fb3ef13e
languageName: node
linkType: hard
"postcss-value-parser@npm:^4.0.0, postcss-value-parser@npm:^4.0.2":
version: 4.2.0
resolution: "postcss-value-parser@npm:4.2.0"
checksum: 10c0/f4142a4f56565f77c1831168e04e3effd9ffcc5aebaf0f538eee4b2d465adfd4b85a44257bb48418202a63806a7da7fe9f56c330aebb3cac898e46b4cbf49161
languageName: node
linkType: hard
"postcss@npm:8.4.31":
version: 8.4.31
resolution: "postcss@npm:8.4.31"
dependencies:
nanoid: "npm:^3.3.6"
picocolors: "npm:^1.0.0"
source-map-js: "npm:^1.0.2"
checksum: 10c0/748b82e6e5fc34034dcf2ae88ea3d11fd09f69b6c50ecdd3b4a875cfc7cdca435c958b211e2cb52355422ab6fccb7d8f2f2923161d7a1b281029e4a913d59acf
languageName: node
linkType: hard
"postcss@npm:^8.4.47":
version: 8.5.1
resolution: "postcss@npm:8.5.1"
dependencies:
nanoid: "npm:^3.3.8"
picocolors: "npm:^1.1.1"
source-map-js: "npm:^1.2.1"
checksum: 10c0/c4d90c59c98e8a0c102b77d3f4cac190f883b42d63dc60e2f3ed840f16197c0c8e25a4327d2e9a847b45a985612317dc0534178feeebd0a1cf3eb0eecf75cae4
languageName: node
linkType: hard
"potpack@npm:^1.0.1":
version: 1.0.2
resolution: "potpack@npm:1.0.2"
checksum: 10c0/670c23898a4257130858b960c2e654d3327c0f6a7e7091ff5846f213e65af8f9476320b995b8ad561a47a4d1c359c7ef347de57d22e7b02597051abb52bc85c4
languageName: node
linkType: hard
"potpack@npm:^2.0.0":
version: 2.0.0
resolution: "potpack@npm:2.0.0"
checksum: 10c0/8df693484486535b95586a624c5abf3fd7bebad161b1c10c10d86562c870fe1c90703b862a19020b1d1c2f3fbd6cea1e9d699c6eca6ded4b5792873a992c81e1
languageName: node
linkType: hard
"proc-log@npm:^5.0.0":
version: 5.0.0
resolution: "proc-log@npm:5.0.0"
checksum: 10c0/bbe5edb944b0ad63387a1d5b1911ae93e05ce8d0f60de1035b218cdcceedfe39dbd2c697853355b70f1a090f8f58fe90da487c85216bf9671f9499d1a897e9e3
languageName: node
linkType: hard
"process@npm:^0.11.10":
version: 0.11.10
resolution: "process@npm:0.11.10"
checksum: 10c0/40c3ce4b7e6d4b8c3355479df77aeed46f81b279818ccdc500124e6a5ab882c0cc81ff7ea16384873a95a74c4570b01b120f287abbdd4c877931460eca6084b3
languageName: node
linkType: hard
"proj4@npm:^2.9.2":
version: 2.15.0
resolution: "proj4@npm:2.15.0"
dependencies:
mgrs: "npm:1.0.0"
wkt-parser: "npm:^1.4.0"
checksum: 10c0/01c0ef831247e08f4e0fce3193033913ca07be0301522bdefddabe1bb783b947bf731425f0aa6b14a01ee546f90cd6301a3eefed859afad3345884d1d01ec8f4
languageName: node
linkType: hard
"promise-retry@npm:^2.0.1":
version: 2.0.1
resolution: "promise-retry@npm:2.0.1"
dependencies:
err-code: "npm:^2.0.2"
retry: "npm:^0.12.0"
checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96
languageName: node
linkType: hard
"promise@npm:^7.1.1":
version: 7.3.1
resolution: "promise@npm:7.3.1"
dependencies:
asap: "npm:~2.0.3"
checksum: 10c0/742e5c0cc646af1f0746963b8776299701ad561ce2c70b49365d62c8db8ea3681b0a1bf0d4e2fe07910bf72f02d39e51e8e73dc8d7503c3501206ac908be107f
languageName: node
linkType: hard
"prop-types@npm:^15.5.10, prop-types@npm:^15.5.7, prop-types@npm:^15.5.8, prop-types@npm:^15.6.0, prop-types@npm:^15.6.2, prop-types@npm:^15.7.2, prop-types@npm:^15.8.1":
version: 15.8.1
resolution: "prop-types@npm:15.8.1"
dependencies:
loose-envify: "npm:^1.4.0"
object-assign: "npm:^4.1.1"
react-is: "npm:^16.13.1"
checksum: 10c0/59ece7ca2fb9838031d73a48d4becb9a7cc1ed10e610517c7d8f19a1e02fa47f7c27d557d8a5702bec3cfeccddc853579832b43f449e54635803f277b1c78077
languageName: node
linkType: hard
"property-information@npm:^7.0.0":
version: 7.0.0
resolution: "property-information@npm:7.0.0"
checksum: 10c0/bf443e3bbdfc154da8f4ff4c85ed97c3d21f5e5f77cce84d2fd653c6dfb974a75ad61eafbccb2b8d2285942be35d763eaa99d51e29dccc28b40917d3f018107e
languageName: node
linkType: hard
"protocol-buffers-schema@npm:^3.3.1":
version: 3.6.0
resolution: "protocol-buffers-schema@npm:3.6.0"
checksum: 10c0/23a08612e5cc903f917ae3b680216ccaf2d889c61daa68d224237f455182fa96fff16872ac94b1954b5dd26fc7e8ce7e9360c54d54ea26218d107b2f059fca37
languageName: node
linkType: hard
"pump@npm:^3.0.0":
version: 3.0.0
resolution: "pump@npm:3.0.0"
dependencies:
end-of-stream: "npm:^1.1.0"
once: "npm:^1.3.1"
checksum: 10c0/bbdeda4f747cdf47db97428f3a135728669e56a0ae5f354a9ac5b74556556f5446a46f720a8f14ca2ece5be9b4d5d23c346db02b555f46739934cc6c093a5478
languageName: node
linkType: hard
"q@npm:^1.5.0":
version: 1.5.1
resolution: "q@npm:1.5.1"
checksum: 10c0/7855fbdba126cb7e92ef3a16b47ba998c0786ec7fface236e3eb0135b65df36429d91a86b1fff3ab0927b4ac4ee88a2c44527c7c3b8e2a37efbec9fe34803df4
languageName: node
linkType: hard
"query-string@npm:^4.2.2":
version: 4.3.4
resolution: "query-string@npm:4.3.4"
dependencies:
object-assign: "npm:^4.1.0"
strict-uri-encode: "npm:^1.0.0"
checksum: 10c0/6181c343074c2049fbbcde63f87c1da5d3a49c6e34c8d94a61d692e886e0b8cd1ae4a4be00b598112bb9c4cb819e423ed503a5d246e4d24ecb0990d8bb21570b
languageName: node
linkType: hard
"queue-microtask@npm:^1.2.2":
version: 1.2.3
resolution: "queue-microtask@npm:1.2.3"
checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102
languageName: node
linkType: hard
"quick-lru@npm:^4.0.1":
version: 4.0.1
resolution: "quick-lru@npm:4.0.1"
checksum: 10c0/f9b1596fa7595a35c2f9d913ac312fede13d37dc8a747a51557ab36e11ce113bbe88ef4c0154968845559a7709cb6a7e7cbe75f7972182451cd45e7f057a334d
languageName: node
linkType: hard
"quick-lru@npm:^5.1.1":
version: 5.1.1
resolution: "quick-lru@npm:5.1.1"
checksum: 10c0/a24cba5da8cec30d70d2484be37622580f64765fb6390a928b17f60cd69e8dbd32a954b3ff9176fa1b86d86ff2ba05252fae55dc4d40d0291c60412b0ad096da
languageName: node
linkType: hard
"quickselect@npm:^2.0.0":
version: 2.0.0
resolution: "quickselect@npm:2.0.0"
checksum: 10c0/6c8d591bc73beae4c1996b7b7138233a7dbbbdde29b7b6d822a02d08cd220fd27613f47d6e9635989b12e250d42ef9da3448de1ed12ad962974e207ab3c3562c
languageName: node
linkType: hard
"raf@npm:^3.1.0":
version: 3.4.1
resolution: "raf@npm:3.4.1"
dependencies:
performance-now: "npm:^2.1.0"
checksum: 10c0/337f0853c9e6a77647b0f499beedafea5d6facfb9f2d488a624f88b03df2be72b8a0e7f9118a3ff811377d534912039a3311815700d2b6d2313f82f736f9eb6e
languageName: node
linkType: hard
"react-audio-visualize@npm:^1.1.3":
version: 1.2.0
resolution: "react-audio-visualize@npm:1.2.0"
peerDependencies:
react: ">=16.2.0"
react-dom: ">=16.2.0"
checksum: 10c0/d6899be0a34b853a3354b53d067299d03f08288ec427d076efdb360582be2f32db1b2883ac9f9669430306177930aea4777e08e869925cc752279e558f41bc78
languageName: node
linkType: hard
"react-audio-voice-recorder@npm:^2.2.0":
version: 2.2.0
resolution: "react-audio-voice-recorder@npm:2.2.0"
dependencies:
"@ffmpeg/ffmpeg": "npm:^0.11.6"
react-audio-visualize: "npm:^1.1.3"
peerDependencies:
react: ">=16.2.0"
react-dom: ">=16.2.0"
checksum: 10c0/07a3637a7806940718fcffca9ecfa41d2b85d6cc5f25bcbddc8a8a924e4be05e2497d5b070876ba459ac6738d6e427f85489e847ea82008f32382ba06218849c
languageName: node
linkType: hard
"react-calendar@npm:^4.6.0":
version: 4.8.0
resolution: "react-calendar@npm:4.8.0"
dependencies:
"@wojtekmaj/date-utils": "npm:^1.1.3"
clsx: "npm:^2.0.0"
get-user-locale: "npm:^2.2.1"
prop-types: "npm:^15.6.0"
warning: "npm:^4.0.0"
peerDependencies:
"@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0
react: ^16.8.0 || ^17.0.0 || ^18.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
peerDependenciesMeta:
"@types/react":
optional: true
checksum: 10c0/ae2d978c0a37f71688f2a1f3e2ee99c5713207257a066dd54b8bdb020f422d8370bd9b4bbeba0c802ad089352e84343087e085d29f1e1593d020e92d1328deaf
languageName: node
linkType: hard
"react-clock@npm:^4.5.0":
version: 4.6.0
resolution: "react-clock@npm:4.6.0"
dependencies:
"@wojtekmaj/date-utils": "npm:^1.5.0"
clsx: "npm:^2.0.0"
get-user-locale: "npm:^2.2.1"
prop-types: "npm:^15.6.0"
peerDependencies:
"@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0
react: ^16.8.0 || ^17.0.0 || ^18.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
peerDependenciesMeta:
"@types/react":
optional: true
checksum: 10c0/0b567a6fcec8fefe8ccbbe656307bdd10bea0b75daf446ed36c5fc9972ba4b12f6acce0e9f884f09cc97995bec21d29b6720affe31e4786ded8b966e9c6b1ed5
languageName: node
linkType: hard
"react-color@npm:^2.19.3":
version: 2.19.3
resolution: "react-color@npm:2.19.3"
dependencies:
"@icons/material": "npm:^0.2.4"
lodash: "npm:^4.17.15"
lodash-es: "npm:^4.17.15"
material-colors: "npm:^1.2.1"
prop-types: "npm:^15.5.10"
reactcss: "npm:^1.2.0"
tinycolor2: "npm:^1.4.1"
peerDependencies:
react: "*"
checksum: 10c0/6f9fce9ff3014926d960abccd5d79ecb391a41f835a4b85663fd48ff933554391222f40ed8cfc5417305d47b1e480023981ec22e13c3b16b0d8d718270fa815e
languageName: node
linkType: hard
"react-copy-to-clipboard@npm:^5.0.2":
version: 5.1.0
resolution: "react-copy-to-clipboard@npm:5.1.0"
dependencies:
copy-to-clipboard: "npm:^3.3.1"
prop-types: "npm:^15.8.1"
peerDependencies:
react: ^15.3.0 || 16 || 17 || 18
checksum: 10c0/de70d9f9c2d17cee207888ed791d4a042c300e5ca732503434d49e6745cff56c0d5ebcc82ab86237e9c2248e636d1d031b9f9cf9913ecec61d82a0e5ebc93881
languageName: node
linkType: hard
"react-date-picker@npm:^10.2.0":
version: 10.6.0
resolution: "react-date-picker@npm:10.6.0"
dependencies:
"@wojtekmaj/date-utils": "npm:^1.1.3"
clsx: "npm:^2.0.0"
get-user-locale: "npm:^2.2.1"
make-event-props: "npm:^1.6.0"
prop-types: "npm:^15.6.0"
react-calendar: "npm:^4.6.0"
react-fit: "npm:^1.7.0"
update-input-width: "npm:^1.4.0"
peerDependencies:
"@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0
react: ^16.8.0 || ^17.0.0 || ^18.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
peerDependenciesMeta:
"@types/react":
optional: true
checksum: 10c0/8b94dfbbf5f6c52e943f5402d721397cd307baf9b2deb4beee33acecbcdfce90a8144ffa6db2c68cd140e53482bf130627839f0cd51c2d2ddbbe6a4677597eb6
languageName: node
linkType: hard
"react-dom@npm:^16.4.2":
version: 16.14.0
resolution: "react-dom@npm:16.14.0"
dependencies:
loose-envify: "npm:^1.1.0"
object-assign: "npm:^4.1.1"
prop-types: "npm:^15.6.2"
scheduler: "npm:^0.19.1"
peerDependencies:
react: ^16.14.0
checksum: 10c0/ca146e780631672a2d57c8d77775d38f394a6cd67db30c6af7964d0b3574ef7edccb1de8d592e990b98f4f5f8d1c8460b0691f04e7a45799962a51dcbaaa1371
languageName: node
linkType: hard
"react-dom@npm:^18.2.0":
version: 18.3.1
resolution: "react-dom@npm:18.3.1"
dependencies:
loose-envify: "npm:^1.1.0"
scheduler: "npm:^0.23.2"
peerDependencies:
react: ^18.3.1
checksum: 10c0/a752496c1941f958f2e8ac56239172296fcddce1365ce45222d04a1947e0cc5547df3e8447f855a81d6d39f008d7c32eab43db3712077f09e3f67c4874973e85
languageName: node
linkType: hard
"react-fit@npm:^1.7.0":
version: 1.7.1
resolution: "react-fit@npm:1.7.1"
dependencies:
detect-element-overflow: "npm:^1.4.0"
prop-types: "npm:^15.6.0"
tiny-warning: "npm:^1.0.0"
peerDependencies:
"@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0
"@types/react-dom": ^16.8.0 || ^17.0.0 || ^18.0.0
react: ^16.8.0 || ^17.0.0 || ^18.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
peerDependenciesMeta:
"@types/react":
optional: true
"@types/react-dom":
optional: true
checksum: 10c0/263b36d3d9cf34f0e6e7942cb94686d4e971dec056f37747d7f1683c5510db55affc2d2687812592b53f9077b437cf5b97d9483a6d07b7a2d1b12d93e795fde6
languageName: node
linkType: hard
"react-intl@npm:^6.3.0":
version: 6.6.8
resolution: "react-intl@npm:6.6.8"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.0.0"
"@formatjs/icu-messageformat-parser": "npm:2.7.8"
"@formatjs/intl": "npm:2.10.4"
"@formatjs/intl-displaynames": "npm:6.6.8"
"@formatjs/intl-listformat": "npm:7.5.7"
"@types/hoist-non-react-statics": "npm:^3.3.1"
"@types/react": "npm:16 || 17 || 18"
hoist-non-react-statics: "npm:^3.3.2"
intl-messageformat: "npm:10.5.14"
tslib: "npm:^2.4.0"
peerDependencies:
react: ^16.6.0 || 17 || 18
typescript: ^4.7 || 5
peerDependenciesMeta:
typescript:
optional: true
checksum: 10c0/7673507eb73ad4edd1593da7173cec68f316cf77037e0959900babd32d5984a39ba7fa10aaa0a23bcddb7b98daf7dd007cb73ddfc39127ede87c18ec780a519c
languageName: node
linkType: hard
"react-is@npm:^16.13.1, react-is@npm:^16.7.0, react-is@npm:^16.8.6":
version: 16.13.1
resolution: "react-is@npm:16.13.1"
checksum: 10c0/33977da7a5f1a287936a0c85639fec6ca74f4f15ef1e59a6bc20338fc73dc69555381e211f7a3529b8150a1f71e4225525b41b60b52965bda53ce7d47377ada1
languageName: node
linkType: hard
"react-is@npm:^18.0.0":
version: 18.3.1
resolution: "react-is@npm:18.3.1"
checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072
languageName: node
linkType: hard
"react-json-pretty@npm:^2.2.0":
version: 2.2.0
resolution: "react-json-pretty@npm:2.2.0"
dependencies:
prop-types: "npm:^15.6.2"
peerDependencies:
react: ">=15.0"
react-dom: ">=15.0"
checksum: 10c0/d0073a1406ab7bec0369ae31279d74f963dfb47d2890c4a51e69f23506c07cb4a761f5925042db3585634b91ee66f5d737b61153c5578c8750d4e4137b1e0395
languageName: node
linkType: hard
"react-lifecycles-compat@npm:^3.0.0, react-lifecycles-compat@npm:^3.0.4":
version: 3.0.4
resolution: "react-lifecycles-compat@npm:3.0.4"
checksum: 10c0/1d0df3c85af79df720524780f00c064d53a9dd1899d785eddb7264b378026979acbddb58a4b7e06e7d0d12aa1494fd5754562ee55d32907b15601068dae82c27
languageName: node
linkType: hard
"react-map-gl@npm:^7.1.6":
version: 7.1.7
resolution: "react-map-gl@npm:7.1.7"
dependencies:
"@maplibre/maplibre-gl-style-spec": "npm:^19.2.1"
"@types/mapbox-gl": "npm:>=1.0.0"
peerDependencies:
mapbox-gl: ">=1.13.0"
maplibre-gl: ">=1.13.0"
react: ">=16.3.0"
react-dom: ">=16.3.0"
peerDependenciesMeta:
mapbox-gl:
optional: true
maplibre-gl:
optional: true
checksum: 10c0/bd289f2f466a905d1ef23459c49deb9b71d51aa569f59e098e64fe984c5b8c04cce589ebf59642e09142a61077bd995ae4ad1641318a15640a63ffaf28c148b8
languageName: node
linkType: hard
"react-markdown@npm:^10.0.0":
version: 10.1.0
resolution: "react-markdown@npm:10.1.0"
dependencies:
"@types/hast": "npm:^3.0.0"
"@types/mdast": "npm:^4.0.0"
devlop: "npm:^1.0.0"
hast-util-to-jsx-runtime: "npm:^2.0.0"
html-url-attributes: "npm:^3.0.0"
mdast-util-to-hast: "npm:^13.0.0"
remark-parse: "npm:^11.0.0"
remark-rehype: "npm:^11.0.0"
unified: "npm:^11.0.0"
unist-util-visit: "npm:^5.0.0"
vfile: "npm:^6.0.0"
peerDependencies:
"@types/react": ">=18"
react: ">=18"
checksum: 10c0/4a5dc7d15ca6d05e9ee95318c1904f83b111a76f7588c44f50f1d54d4c97193b84e4f64c4b592057c989228238a2590306cedd0c4d398e75da49262b2b5ae1bf
languageName: node
linkType: hard
"react-modal@npm:^3.12.1":
version: 3.16.1
resolution: "react-modal@npm:3.16.1"
dependencies:
exenv: "npm:^1.2.0"
prop-types: "npm:^15.7.2"
react-lifecycles-compat: "npm:^3.0.0"
warning: "npm:^4.0.3"
peerDependencies:
react: ^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18
react-dom: ^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18
checksum: 10c0/7b56e2c505b2b924736c471a34754a4211df40ac2d6fb0949cf095aea5e65d3326bd9f111fa7898acf40afa54f526809ad8aa47e02b8328663d11422568dc7b1
languageName: node
linkType: hard
"react-motion@npm:^0.5.2":
version: 0.5.2
resolution: "react-motion@npm:0.5.2"
dependencies:
performance-now: "npm:^0.2.0"
prop-types: "npm:^15.5.8"
raf: "npm:^3.1.0"
peerDependencies:
react: ^0.14.9 || ^15.3.0 || ^16.0.0
checksum: 10c0/4ea6f1cc7079f0161fd786cc755133a822d87d9c0510369b8fb348d9ad602111efa2e3496dbcc390c967229e39e3eb5f6dd5dd6d3d124289443de31d6035a6c8
languageName: node
linkType: hard
"react-palm@npm:^3.3.8":
version: 3.3.8
resolution: "react-palm@npm:3.3.8"
dependencies:
function.prototype.name: "npm:^1.1.0"
react-dom: "npm:^16.4.2"
react-reconciler: "npm:^0.12.0"
react-test-renderer: "npm:^16.4.2"
peerDependencies:
enzyme: ^3.6.0
enzyme-adapter-utils: ^1.13.0
react: ^16.4.1
react-test-renderer: ^16.4.1
checksum: 10c0/dd052acbeff68e55f184f2c181d5ceb9aa129598ff3116fa9e5921b4d720957e0314efe7346620e6f1971cbfc574f39fd3d79b1659b8bf560feb5f54fe03a7c5
languageName: node
linkType: hard
"react-reconciler@npm:^0.12.0":
version: 0.12.0
resolution: "react-reconciler@npm:0.12.0"
dependencies:
fbjs: "npm:^0.8.16"
loose-envify: "npm:^1.1.0"
object-assign: "npm:^4.1.1"
prop-types: "npm:^15.6.0"
peerDependencies:
react: ^16.0.0
checksum: 10c0/2e3262b276751465fb833ef6c989cee0716742c2d90a1bafe574f19d8cacefdc3b94dda0f25c3e664711ca8b25d35a033a3bafa21d733d7334c2611d81a54694
languageName: node
linkType: hard
"react-redux@npm:^8.0.5":
version: 8.1.3
resolution: "react-redux@npm:8.1.3"
dependencies:
"@babel/runtime": "npm:^7.12.1"
"@types/hoist-non-react-statics": "npm:^3.3.1"
"@types/use-sync-external-store": "npm:^0.0.3"
hoist-non-react-statics: "npm:^3.3.2"
react-is: "npm:^18.0.0"
use-sync-external-store: "npm:^1.0.0"
peerDependencies:
"@types/react": ^16.8 || ^17.0 || ^18.0
"@types/react-dom": ^16.8 || ^17.0 || ^18.0
react: ^16.8 || ^17.0 || ^18.0
react-dom: ^16.8 || ^17.0 || ^18.0
react-native: ">=0.59"
redux: ^4 || ^5.0.0-beta.0
peerDependenciesMeta:
"@types/react":
optional: true
"@types/react-dom":
optional: true
react-dom:
optional: true
react-native:
optional: true
redux:
optional: true
checksum: 10c0/64c8be2765568dc66a3c442a41dd0ed74fe048d5ceb7a4fe72e5bac3d3687996a7115f57b5156af7406521087065a0e60f9194318c8ca99c55e9ce48558980ce
languageName: node
linkType: hard
"react-resizable-panels@npm:^2.1.7":
version: 2.1.7
resolution: "react-resizable-panels@npm:2.1.7"
peerDependencies:
react: ^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
react-dom: ^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
checksum: 10c0/644a57960507b809f571bf8c95f07a04e3aeb9b20405a1d9d8cb6deb72d2462192e6e5e9751237347e7818179a619a6f65de4b355e276334d10b8cfe737ca4e1
languageName: node
linkType: hard
"react-router-redux@npm:^4.0.8":
version: 4.0.8
resolution: "react-router-redux@npm:4.0.8"
checksum: 10c0/01b1b2f6b350cd428424f3bdccf0e7ff4a37f8426074a941690e7fce2ef391cae95401d1903eb297e7ba58c2c8fc12e2e71c87b494e5983e16297d99211647fb
languageName: node
linkType: hard
"react-router@npm:3.2.5":
version: 3.2.5
resolution: "react-router@npm:3.2.5"
dependencies:
create-react-class: "npm:^15.5.1"
history: "npm:^3.0.0"
hoist-non-react-statics: "npm:^2.3.1"
invariant: "npm:^2.2.1"
loose-envify: "npm:^1.2.0"
prop-types: "npm:^15.7.2"
react-is: "npm:^16.8.6"
warning: "npm:^3.0.0"
peerDependencies:
react: ^0.14.0 || ^15.0.0 || ^16.0.0
checksum: 10c0/87687ac4ad414a93811ddfe1ac0c31207a79a297a8146def4de77c465f21162af9884c9a3aa874318fb4a68fc2f80f81fd0e85083da5f11f15497721528d6693
languageName: node
linkType: hard
"react-sortable-hoc@npm:^1.8.3":
version: 1.11.0
resolution: "react-sortable-hoc@npm:1.11.0"
dependencies:
"@babel/runtime": "npm:^7.2.0"
invariant: "npm:^2.2.4"
prop-types: "npm:^15.5.7"
peerDependencies:
prop-types: ^15.5.7
react: ^0.14.0 || ^15.0.0 || ^16.0.0
react-dom: ^0.14.0 || ^15.0.0 || ^16.0.0
checksum: 10c0/d226693ba7b24e86be81c639fd489ccb461e7f3b625faa991f67b68e72bb9349bae57f2135c158691afe08c7459b5183a65a8fff709eb32f2b18c68d00caf522
languageName: node
linkType: hard
"react-test-renderer@npm:^16.4.2":
version: 16.14.0
resolution: "react-test-renderer@npm:16.14.0"
dependencies:
object-assign: "npm:^4.1.1"
prop-types: "npm:^15.6.2"
react-is: "npm:^16.8.6"
scheduler: "npm:^0.19.1"
peerDependencies:
react: ^16.14.0
checksum: 10c0/119e3ce5509c3443393ca750e39dd4ac9ee9ddfaafca58c9067b477447edc2badb75660b9fea7e9ddef012e37bbba427681cf6f8d3fde61b8054655a133bfbf5
languageName: node
linkType: hard
"react-textarea-autosize@npm:^8.5.3":
version: 8.5.7
resolution: "react-textarea-autosize@npm:8.5.7"
dependencies:
"@babel/runtime": "npm:^7.20.13"
use-composed-ref: "npm:^1.3.0"
use-latest: "npm:^1.2.1"
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
checksum: 10c0/ff004797ea28faca442460c42b30042d4c34a140f324eeeddee74508688dbc0f98966d21282c945630655006ad28a87edbcb59e6da7f9e762f4f3042c72f9f24
languageName: node
linkType: hard
"react-time-picker@npm:^6.2.0":
version: 6.6.0
resolution: "react-time-picker@npm:6.6.0"
dependencies:
"@wojtekmaj/date-utils": "npm:^1.1.3"
clsx: "npm:^2.0.0"
get-user-locale: "npm:^2.2.1"
make-event-props: "npm:^1.6.0"
prop-types: "npm:^15.6.0"
react-clock: "npm:^4.5.0"
react-fit: "npm:^1.7.0"
update-input-width: "npm:^1.4.0"
peerDependencies:
"@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0
react: ^16.8.0 || ^17.0.0 || ^18.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
peerDependenciesMeta:
"@types/react":
optional: true
checksum: 10c0/748935912991864cba126c5436e3d04680dfebafd8f6f2d7588c6904460a9568176177dfbef0e6025a5ef7b89f37e3e726c0037196b7a42866dc272ab45b28bf
languageName: node
linkType: hard
"react-tooltip@npm:^4.2.17":
version: 4.5.1
resolution: "react-tooltip@npm:4.5.1"
dependencies:
prop-types: "npm:^15.8.1"
uuid: "npm:^7.0.3"
peerDependencies:
react: ">=16.0.0"
react-dom: ">=16.0.0"
checksum: 10c0/fc6d9046c5cc3fa05e63c4015a8dfc0170097ca3a5e8fa2147242405892d05eea3630ceee0c72b6ae2420f7893f4bff0f5fa0a2828937a988109a8258c3cfae6
languageName: node
linkType: hard
"react-virtualized@npm:^9.21.0":
version: 9.22.5
resolution: "react-virtualized@npm:9.22.5"
dependencies:
"@babel/runtime": "npm:^7.7.2"
clsx: "npm:^1.0.4"
dom-helpers: "npm:^5.1.3"
loose-envify: "npm:^1.4.0"
prop-types: "npm:^15.7.2"
react-lifecycles-compat: "npm:^3.0.4"
peerDependencies:
react: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0
react-dom: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0
checksum: 10c0/b0444b472f317dce61119c07426c5e9ebfe5125d049996678da922717715a1aa83df755aa36877f4b1718aa2e181d22f15ebb807ee356418c56f922f865628c1
languageName: node
linkType: hard
"react-virtualized@npm:^9.22.5":
version: 9.22.6
resolution: "react-virtualized@npm:9.22.6"
dependencies:
"@babel/runtime": "npm:^7.7.2"
clsx: "npm:^1.0.4"
dom-helpers: "npm:^5.1.3"
loose-envify: "npm:^1.4.0"
prop-types: "npm:^15.7.2"
react-lifecycles-compat: "npm:^3.0.4"
peerDependencies:
react: ^16.3.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^16.3.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
checksum: 10c0/0c4fbe86e0c121adcdb7a3f322601eee4661afe65e31ef767c6d876016b1e7043fdad7998b4fa0252eaf73ffb6c14effcf0f729d154cd15304a8b15ad42b7b06
languageName: node
linkType: hard
"react-vis@npm:1.11.7":
version: 1.11.7
resolution: "react-vis@npm:1.11.7"
dependencies:
d3-array: "npm:^1.2.0"
d3-collection: "npm:^1.0.3"
d3-color: "npm:^1.0.3"
d3-contour: "npm:^1.1.0"
d3-format: "npm:^1.2.0"
d3-geo: "npm:^1.6.4"
d3-hexbin: "npm:^0.2.2"
d3-hierarchy: "npm:^1.1.4"
d3-interpolate: "npm:^1.1.4"
d3-sankey: "npm:^0.7.1"
d3-scale: "npm:^1.0.5"
d3-shape: "npm:^1.1.0"
d3-voronoi: "npm:^1.1.2"
deep-equal: "npm:^1.0.1"
global: "npm:^4.3.1"
hoek: "npm:4.2.1"
prop-types: "npm:^15.5.8"
react-motion: "npm:^0.5.2"
peerDependencies:
react: 15.3.0 - 16.x
checksum: 10c0/1cfbe734806bf1c5cd21b49e42c4a1cb7b239c2943dbbc23fdbee468acfc72c22e0fafd46a346e8686040ed7d454abab4d9372d8756a78972743417cf1a5ac0f
languageName: node
linkType: hard
"react@npm:^18.2.0":
version: 18.3.1
resolution: "react@npm:18.3.1"
dependencies:
loose-envify: "npm:^1.1.0"
checksum: 10c0/283e8c5efcf37802c9d1ce767f302dd569dd97a70d9bb8c7be79a789b9902451e0d16334b05d73299b20f048cbc3c7d288bbbde10b701fa194e2089c237dbea3
languageName: node
linkType: hard
"reactcss@npm:^1.2.0":
version: 1.2.3
resolution: "reactcss@npm:1.2.3"
dependencies:
lodash: "npm:^4.0.1"
checksum: 10c0/a3aceb0fbfd58312f0c7fadbe92920e6536ec24d17ebee44fd4a14dd831d413fff5c2df0e85579b440667935e57a06876325cbd1368d3131824a8c2ec43b7978
languageName: node
linkType: hard
"read-cache@npm:^1.0.0":
version: 1.0.0
resolution: "read-cache@npm:1.0.0"
dependencies:
pify: "npm:^2.3.0"
checksum: 10c0/90cb2750213c7dd7c80cb420654344a311fdec12944e81eb912cd82f1bc92aea21885fa6ce442e3336d9fccd663b8a7a19c46d9698e6ca55620848ab932da814
languageName: node
linkType: hard
"read-pkg-up@npm:^7.0.1":
version: 7.0.1
resolution: "read-pkg-up@npm:7.0.1"
dependencies:
find-up: "npm:^4.1.0"
read-pkg: "npm:^5.2.0"
type-fest: "npm:^0.8.1"
checksum: 10c0/82b3ac9fd7c6ca1bdc1d7253eb1091a98ff3d195ee0a45386582ce3e69f90266163c34121e6a0a02f1630073a6c0585f7880b3865efcae9c452fa667f02ca385
languageName: node
linkType: hard
"read-pkg@npm:^5.2.0":
version: 5.2.0
resolution: "read-pkg@npm:5.2.0"
dependencies:
"@types/normalize-package-data": "npm:^2.4.0"
normalize-package-data: "npm:^2.5.0"
parse-json: "npm:^5.0.0"
type-fest: "npm:^0.6.0"
checksum: 10c0/b51a17d4b51418e777029e3a7694c9bd6c578a5ab99db544764a0b0f2c7c0f58f8a6bc101f86a6fceb8ba6d237d67c89acf6170f6b98695d0420ddc86cf109fb
languageName: node
linkType: hard
"readdirp@npm:~3.6.0":
version: 3.6.0
resolution: "readdirp@npm:3.6.0"
dependencies:
picomatch: "npm:^2.2.1"
checksum: 10c0/6fa848cf63d1b82ab4e985f4cf72bd55b7dcfd8e0a376905804e48c3634b7e749170940ba77b32804d5fe93b3cc521aa95a8d7e7d725f830da6d93f3669ce66b
languageName: node
linkType: hard
"redent@npm:^3.0.0":
version: 3.0.0
resolution: "redent@npm:3.0.0"
dependencies:
indent-string: "npm:^4.0.0"
strip-indent: "npm:^3.0.0"
checksum: 10c0/d64a6b5c0b50eb3ddce3ab770f866658a2b9998c678f797919ceb1b586bab9259b311407280bd80b804e2a7c7539b19238ae6a2a20c843f1a7fcff21d48c2eae
languageName: node
linkType: hard
"reduce-reducers@npm:^0.4.3":
version: 0.4.3
resolution: "reduce-reducers@npm:0.4.3"
checksum: 10c0/6e0f8b5d92d9ca66b36b5462c9f31c15b24aca2b761effb7e9740264edde86e069949d4ee8e408b2c0b3c54c939f8e0b36c9791b102fc50ed62e9276d8061e17
languageName: node
linkType: hard
"redux-actions@npm:^2.2.1":
version: 2.6.5
resolution: "redux-actions@npm:2.6.5"
dependencies:
invariant: "npm:^2.2.4"
just-curry-it: "npm:^3.1.0"
loose-envify: "npm:^1.4.0"
reduce-reducers: "npm:^0.4.3"
to-camel-case: "npm:^1.0.0"
checksum: 10c0/10a05b22847e2fe8c3bda9257322a10a0adcc803970e8b15db1b2f823143f9d3ca1aa2e55ae27fc945ac90c775f25302a2f84c44f6f44fb63984066f3f7ca478
languageName: node
linkType: hard
"redux-logger@npm:^3.0.6":
version: 3.0.6
resolution: "redux-logger@npm:3.0.6"
dependencies:
deep-diff: "npm:^0.3.5"
checksum: 10c0/65eb71a1c72d9636368672a684bde62c746e64c19c8b92e3f00bdf5cf240ea1695eccb95a0fa3d5044f6a86cbf11fd35dc5150fd3351fa53c72721c336e9098f
languageName: node
linkType: hard
"redux-thunk@npm:^1.0.0":
version: 1.0.3
resolution: "redux-thunk@npm:1.0.3"
checksum: 10c0/b708c4df202f906edbe79a1f07fe78a69fe184f6059a0abab2c42f016a5b2b9af96b821d859a10f949ae1aee16f745ab6d446753b75d999867fe75e87eae3e8f
languageName: node
linkType: hard
"redux-thunk@npm:^2.4.2":
version: 2.4.2
resolution: "redux-thunk@npm:2.4.2"
peerDependencies:
redux: ^4
checksum: 10c0/e202d6ef7dfa7df08ed24cb221aa89d6c84dbaa7d65fe90dbd8e826d0c10d801f48388f9a7598a4fd970ecbc93d335014570a61ca7bc8bf569eab5de77b31a3c
languageName: node
linkType: hard
"redux@npm:^4.0.0, redux@npm:^4.2.1":
version: 4.2.1
resolution: "redux@npm:4.2.1"
dependencies:
"@babel/runtime": "npm:^7.9.2"
checksum: 10c0/136d98b3d5dbed1cd6279c8c18a6a74c416db98b8a432a46836bdd668475de6279a2d4fd9d1363f63904e00f0678a8a3e7fa532c897163340baf1e71bb42c742
languageName: node
linkType: hard
"regenerator-runtime@npm:^0.13.7":
version: 0.13.11
resolution: "regenerator-runtime@npm:0.13.11"
checksum: 10c0/12b069dc774001fbb0014f6a28f11c09ebfe3c0d984d88c9bced77fdb6fedbacbca434d24da9ae9371bfbf23f754869307fb51a4c98a8b8b18e5ef748677ca24
languageName: node
linkType: hard
"regenerator-runtime@npm:^0.14.0":
version: 0.14.1
resolution: "regenerator-runtime@npm:0.14.1"
checksum: 10c0/1b16eb2c4bceb1665c89de70dcb64126a22bc8eb958feef3cd68fe11ac6d2a4899b5cd1b80b0774c7c03591dc57d16631a7f69d2daa2ec98100e2f29f7ec4cc4
languageName: node
linkType: hard
"regexp.prototype.flags@npm:^1.5.1, regexp.prototype.flags@npm:^1.5.2":
version: 1.5.2
resolution: "regexp.prototype.flags@npm:1.5.2"
dependencies:
call-bind: "npm:^1.0.6"
define-properties: "npm:^1.2.1"
es-errors: "npm:^1.3.0"
set-function-name: "npm:^2.0.1"
checksum: 10c0/0f3fc4f580d9c349f8b560b012725eb9c002f36daa0041b3fbf6f4238cb05932191a4d7d5db3b5e2caa336d5150ad0402ed2be81f711f9308fe7e1a9bf9bd552
languageName: node
linkType: hard
"remark-gfm@npm:^4.0.1":
version: 4.0.1
resolution: "remark-gfm@npm:4.0.1"
dependencies:
"@types/mdast": "npm:^4.0.0"
mdast-util-gfm: "npm:^3.0.0"
micromark-extension-gfm: "npm:^3.0.0"
remark-parse: "npm:^11.0.0"
remark-stringify: "npm:^11.0.0"
unified: "npm:^11.0.0"
checksum: 10c0/427ecc6af3e76222662061a5f670a3e4e33ec5fffe2cabf04034da6a3f9a1bda1fc023e838a636385ba314e66e2bebbf017ca61ebea357eb0f5200fe0625a4b7
languageName: node
linkType: hard
"remark-parse@npm:^11.0.0":
version: 11.0.0
resolution: "remark-parse@npm:11.0.0"
dependencies:
"@types/mdast": "npm:^4.0.0"
mdast-util-from-markdown: "npm:^2.0.0"
micromark-util-types: "npm:^2.0.0"
unified: "npm:^11.0.0"
checksum: 10c0/6eed15ddb8680eca93e04fcb2d1b8db65a743dcc0023f5007265dda558b09db595a087f622062ccad2630953cd5cddc1055ce491d25a81f3317c858348a8dd38
languageName: node
linkType: hard
"remark-rehype@npm:^11.0.0":
version: 11.1.2
resolution: "remark-rehype@npm:11.1.2"
dependencies:
"@types/hast": "npm:^3.0.0"
"@types/mdast": "npm:^4.0.0"
mdast-util-to-hast: "npm:^13.0.0"
unified: "npm:^11.0.0"
vfile: "npm:^6.0.0"
checksum: 10c0/f9eccacfb596d9605581dc05bfad28635d6ded5dd0a18e88af5fd4df0d3fcf9612e1501d4513bc2164d833cfe9636dab20400080b09e53f155c6e1442a1231fb
languageName: node
linkType: hard
"remark-stringify@npm:^11.0.0":
version: 11.0.0
resolution: "remark-stringify@npm:11.0.0"
dependencies:
"@types/mdast": "npm:^4.0.0"
mdast-util-to-markdown: "npm:^2.0.0"
unified: "npm:^11.0.0"
checksum: 10c0/0cdb37ce1217578f6f847c7ec9f50cbab35df5b9e3903d543e74b405404e67c07defcb23cd260a567b41b769400f6de03c2c3d9cd6ae7a6707d5c8d89ead489f
languageName: node
linkType: hard
"reselect@npm:^4.1.0, reselect@npm:^4.1.8":
version: 4.1.8
resolution: "reselect@npm:4.1.8"
checksum: 10c0/06a305a504affcbb67dd0561ddc8306b35796199c7e15b38934c80606938a021eadcf68cfd58e7bb5e17786601c37602a3362a4665c7bf0a96c1041ceee9d0b7
languageName: node
linkType: hard
"resize-observer-polyfill@npm:^1.5.1":
version: 1.5.1
resolution: "resize-observer-polyfill@npm:1.5.1"
checksum: 10c0/5e882475067f0b97dc07e0f37c3e335ac5bc3520d463f777cec7e894bb273eddbfecb857ae668e6fb6881fd6f6bb7148246967172139302da50fa12ea3a15d95
languageName: node
linkType: hard
"resolve-alpn@npm:^1.0.0":
version: 1.2.1
resolution: "resolve-alpn@npm:1.2.1"
checksum: 10c0/b70b29c1843bc39781ef946c8cd4482e6d425976599c0f9c138cec8209e4e0736161bf39319b01676a847000085dfdaf63583c6fb4427bf751a10635bd2aa0c4
languageName: node
linkType: hard
"resolve-protobuf-schema@npm:^2.1.0":
version: 2.1.0
resolution: "resolve-protobuf-schema@npm:2.1.0"
dependencies:
protocol-buffers-schema: "npm:^3.3.1"
checksum: 10c0/8e656b9072b1c001952f851251413bc79d8c771c3015f607b75e1ca3b8bd7c4396068dd19cdbb3019affa03f6457d2c0fd38d981ffd714215cd2e7c2b67221a7
languageName: node
linkType: hard
"resolve-url@npm:^0.2.1":
version: 0.2.1
resolution: "resolve-url@npm:0.2.1"
checksum: 10c0/c285182cfcddea13a12af92129ce0569be27fb0074ffaefbd3ba3da2eac2acecdfc996d435c4982a9fa2b4708640e52837c9153a5ab9255886a00b0b9e8d2a54
languageName: node
linkType: hard
"resolve@npm:^1.1.7, resolve@npm:^1.22.8":
version: 1.22.10
resolution: "resolve@npm:1.22.10"
dependencies:
is-core-module: "npm:^2.16.0"
path-parse: "npm:^1.0.7"
supports-preserve-symlinks-flag: "npm:^1.0.0"
bin:
resolve: bin/resolve
checksum: 10c0/8967e1f4e2cc40f79b7e080b4582b9a8c5ee36ffb46041dccb20e6461161adf69f843b43067b4a375de926a2cd669157e29a29578191def399dd5ef89a1b5203
languageName: node
linkType: hard
"resolve@npm:^1.10.0":
version: 1.22.8
resolution: "resolve@npm:1.22.8"
dependencies:
is-core-module: "npm:^2.13.0"
path-parse: "npm:^1.0.7"
supports-preserve-symlinks-flag: "npm:^1.0.0"
bin:
resolve: bin/resolve
checksum: 10c0/07e179f4375e1fd072cfb72ad66d78547f86e6196c4014b31cb0b8bb1db5f7ca871f922d08da0fbc05b94e9fd42206f819648fa3b5b873ebbc8e1dc68fec433a
languageName: node
linkType: hard
"resolve@patch:resolve@npm%3A^1.1.7#optional!builtin, resolve@patch:resolve@npm%3A^1.22.8#optional!builtin":
version: 1.22.10
resolution: "resolve@patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d"
dependencies:
is-core-module: "npm:^2.16.0"
path-parse: "npm:^1.0.7"
supports-preserve-symlinks-flag: "npm:^1.0.0"
bin:
resolve: bin/resolve
checksum: 10c0/52a4e505bbfc7925ac8f4cd91fd8c4e096b6a89728b9f46861d3b405ac9a1ccf4dcbf8befb4e89a2e11370dacd0160918163885cbc669369590f2f31f4c58939
languageName: node
linkType: hard
"resolve@patch:resolve@npm%3A^1.10.0#optional!builtin":
version: 1.22.8
resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d"
dependencies:
is-core-module: "npm:^2.13.0"
path-parse: "npm:^1.0.7"
supports-preserve-symlinks-flag: "npm:^1.0.0"
bin:
resolve: bin/resolve
checksum: 10c0/0446f024439cd2e50c6c8fa8ba77eaa8370b4180f401a96abf3d1ebc770ac51c1955e12764cde449fde3fff480a61f84388e3505ecdbab778f4bef5f8212c729
languageName: node
linkType: hard
"responselike@npm:^2.0.0":
version: 2.0.1
resolution: "responselike@npm:2.0.1"
dependencies:
lowercase-keys: "npm:^2.0.0"
checksum: 10c0/360b6deb5f101a9f8a4174f7837c523c3ec78b7ca8a7c1d45a1062b303659308a23757e318b1e91ed8684ad1205721142dd664d94771cd63499353fd4ee732b5
languageName: node
linkType: hard
"retry@npm:^0.12.0":
version: 0.12.0
resolution: "retry@npm:0.12.0"
checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe
languageName: node
linkType: hard
"retry@npm:^0.13.1":
version: 0.13.1
resolution: "retry@npm:0.13.1"
checksum: 10c0/9ae822ee19db2163497e074ea919780b1efa00431d197c7afdb950e42bf109196774b92a49fc9821f0b8b328a98eea6017410bfc5e8a0fc19c85c6d11adb3772
languageName: node
linkType: hard
"reusify@npm:^1.0.4":
version: 1.0.4
resolution: "reusify@npm:1.0.4"
checksum: 10c0/c19ef26e4e188f408922c46f7ff480d38e8dfc55d448310dfb518736b23ed2c4f547fb64a6ed5bdba92cd7e7ddc889d36ff78f794816d5e71498d645ef476107
languageName: node
linkType: hard
"rimraf@npm:^5.0.5":
version: 5.0.10
resolution: "rimraf@npm:5.0.10"
dependencies:
glob: "npm:^10.3.7"
bin:
rimraf: dist/esm/bin.mjs
checksum: 10c0/7da4fd0e15118ee05b918359462cfa1e7fe4b1228c7765195a45b55576e8c15b95db513b8466ec89129666f4af45ad978a3057a02139afba1a63512a2d9644cc
languageName: node
linkType: hard
"robust-predicates@npm:^3.0.2":
version: 3.0.2
resolution: "robust-predicates@npm:3.0.2"
checksum: 10c0/4ecd53649f1c2d49529c85518f2fa69ffb2f7a4453f7fd19c042421c7b4d76c3efb48bc1c740c8f7049346d7cb58cf08ee0c9adaae595cc23564d360adb1fde4
languageName: node
linkType: hard
"root-workspace-0b6124@workspace:.":
version: 0.0.0-use.local
resolution: "root-workspace-0b6124@workspace:."
dependencies:
"@auth0/auth0-spa-js": "npm:^2.1.2"
"@carto/toolkit": "npm:0.0.1-rc.18"
"@dotenv-run/esbuild": "npm:^1.5.0"
"@emotion/is-prop-valid": "npm:^1.2.1"
"@kepler.gl/actions": "npm:^3.2.0"
"@kepler.gl/ai-assistant": "npm:^3.2.0"
"@kepler.gl/cloud-providers": "npm:^3.2.0"
"@kepler.gl/components": "npm:^3.2.0"
"@kepler.gl/constants": "npm:^3.2.0"
"@kepler.gl/duckdb": "npm:^3.2.0"
"@kepler.gl/processors": "npm:^3.2.0"
"@kepler.gl/reducers": "npm:^3.2.0"
"@kepler.gl/schemas": "npm:^3.2.0"
"@kepler.gl/styles": "npm:^3.2.0"
"@kepler.gl/utils": "npm:^3.2.0"
"@loaders.gl/arrow": "npm:^4.3.2"
"@loaders.gl/core": "npm:^4.3.2"
"@loaders.gl/csv": "npm:^4.3.2"
"@loaders.gl/json": "npm:^4.3.2"
"@loaders.gl/parquet": "npm:^4.3.2"
"@openassistant/core": "npm:^0.5.17"
"@openassistant/ui": "npm:^0.5.17"
"@types/classnames": "npm:^2.3.1"
"@types/keymirror": "npm:^0.1.1"
apache-arrow: "npm:>=15.0.0"
classnames: "npm:^2.2.1"
d3-format: "npm:^2.0.0"
dropbox: "npm:^4.0.12"
esbuild: "npm:^0.25.0"
esbuild-plugin-replace: "npm:^1.4.0"
global: "npm:^4.3.0"
keymirror: "npm:^0.1.1"
markdown-to-jsx: "npm:^7.7.6"
prop-types: "npm:^15.6.0"
react: "npm:^18.2.0"
react-dom: "npm:^18.2.0"
react-intl: "npm:^6.3.0"
react-redux: "npm:^8.0.5"
react-resizable-panels: "npm:^2.1.7"
react-router: "npm:3.2.5"
react-router-redux: "npm:^4.0.8"
react-virtualized: "npm:^9.21.0"
redux: "npm:^4.2.1"
redux-actions: "npm:^2.2.1"
redux-logger: "npm:^3.0.6"
redux-thunk: "npm:^1.0.0"
styled-components: "npm:6.1.8"
usehooks-ts: "npm:^3.1.0"
languageName: unknown
linkType: soft
"run-parallel@npm:^1.1.9":
version: 1.2.0
resolution: "run-parallel@npm:1.2.0"
dependencies:
queue-microtask: "npm:^1.2.2"
checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39
languageName: node
linkType: hard
"rw@npm:1, rw@npm:^1.3.3":
version: 1.3.3
resolution: "rw@npm:1.3.3"
checksum: 10c0/b1e1ef37d1e79d9dc7050787866e30b6ddcb2625149276045c262c6b4d53075ddc35f387a856a8e76f0d0df59f4cd58fe24707e40797ebee66e542b840ed6a53
languageName: node
linkType: hard
"s2-geometry@npm:^1.2.10":
version: 1.2.10
resolution: "s2-geometry@npm:1.2.10"
dependencies:
long: "npm:^3.2.0"
checksum: 10c0/4cc50d9ee56a15731d8952755ef30f22c5139158c77b4ee0d015fc3676049ffc632d7e6fd489aeeabb04b8ded59d1577b8a270b0317f675a31b70adfecd9e9df
languageName: node
linkType: hard
"safe-array-concat@npm:^1.1.2":
version: 1.1.2
resolution: "safe-array-concat@npm:1.1.2"
dependencies:
call-bind: "npm:^1.0.7"
get-intrinsic: "npm:^1.2.4"
has-symbols: "npm:^1.0.3"
isarray: "npm:^2.0.5"
checksum: 10c0/12f9fdb01c8585e199a347eacc3bae7b5164ae805cdc8c6707199dbad5b9e30001a50a43c4ee24dc9ea32dbb7279397850e9208a7e217f4d8b1cf5d90129dec9
languageName: node
linkType: hard
"safe-regex-test@npm:^1.0.3":
version: 1.0.3
resolution: "safe-regex-test@npm:1.0.3"
dependencies:
call-bind: "npm:^1.0.6"
es-errors: "npm:^1.3.0"
is-regex: "npm:^1.1.4"
checksum: 10c0/900bf7c98dc58f08d8523b7012b468e4eb757afa624f198902c0643d7008ba777b0bdc35810ba0b758671ce887617295fb742b3f3968991b178ceca54cb07603
languageName: node
linkType: hard
"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0":
version: 2.1.2
resolution: "safer-buffer@npm:2.1.2"
checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4
languageName: node
linkType: hard
"scheduler@npm:^0.19.1":
version: 0.19.1
resolution: "scheduler@npm:0.19.1"
dependencies:
loose-envify: "npm:^1.1.0"
object-assign: "npm:^4.1.1"
checksum: 10c0/9658932a73148a93d791c064b331d9690ddfecc4de25bcd6c9b89f5f1166e3d23d9c31c1595d66565e5ffbb34d47035cb14841aba6444bc266bfcd215cefe9c0
languageName: node
linkType: hard
"scheduler@npm:^0.23.2":
version: 0.23.2
resolution: "scheduler@npm:0.23.2"
dependencies:
loose-envify: "npm:^1.1.0"
checksum: 10c0/26383305e249651d4c58e6705d5f8425f153211aef95f15161c151f7b8de885f24751b377e4a0b3dd42cce09aad3f87a61dab7636859c0d89b7daf1a1e2a5c78
languageName: node
linkType: hard
"scroll-into-view-if-needed@npm:3.0.10":
version: 3.0.10
resolution: "scroll-into-view-if-needed@npm:3.0.10"
dependencies:
compute-scroll-into-view: "npm:^3.0.2"
checksum: 10c0/8bce433c0139cfd74d5b784113251f1c1783bcd4152c2f3a7e4ca6ff73d644eafd891747bdfb02456d7437835991b142ddd2cfa8c6ef78dd0d7fd6eb4c7c70b4
languageName: node
linkType: hard
"secure-json-parse@npm:^2.7.0":
version: 2.7.0
resolution: "secure-json-parse@npm:2.7.0"
checksum: 10c0/f57eb6a44a38a3eeaf3548228585d769d788f59007454214fab9ed7f01fbf2e0f1929111da6db28cf0bcc1a2e89db5219a59e83eeaec3a54e413a0197ce879e4
languageName: node
linkType: hard
"semver@npm:2 || 3 || 4 || 5":
version: 5.7.2
resolution: "semver@npm:5.7.2"
bin:
semver: bin/semver
checksum: 10c0/e4cf10f86f168db772ae95d86ba65b3fd6c5967c94d97c708ccb463b778c2ee53b914cd7167620950fc07faf5a564e6efe903836639e512a1aa15fbc9667fa25
languageName: node
linkType: hard
"semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.6.3":
version: 7.6.3
resolution: "semver@npm:7.6.3"
bin:
semver: bin/semver.js
checksum: 10c0/88f33e148b210c153873cb08cfe1e281d518aaa9a666d4d148add6560db5cd3c582f3a08ccb91f38d5f379ead256da9931234ed122057f40bb5766e65e58adaf
languageName: node
linkType: hard
"set-function-length@npm:^1.2.1":
version: 1.2.2
resolution: "set-function-length@npm:1.2.2"
dependencies:
define-data-property: "npm:^1.1.4"
es-errors: "npm:^1.3.0"
function-bind: "npm:^1.1.2"
get-intrinsic: "npm:^1.2.4"
gopd: "npm:^1.0.1"
has-property-descriptors: "npm:^1.0.2"
checksum: 10c0/82850e62f412a258b71e123d4ed3873fa9377c216809551192bb6769329340176f109c2eeae8c22a8d386c76739855f78e8716515c818bcaef384b51110f0f3c
languageName: node
linkType: hard
"set-function-name@npm:^2.0.1":
version: 2.0.2
resolution: "set-function-name@npm:2.0.2"
dependencies:
define-data-property: "npm:^1.1.4"
es-errors: "npm:^1.3.0"
functions-have-names: "npm:^1.2.3"
has-property-descriptors: "npm:^1.0.2"
checksum: 10c0/fce59f90696c450a8523e754abb305e2b8c73586452619c2bad5f7bf38c7b6b4651895c9db895679c5bef9554339cf3ef1c329b66ece3eda7255785fbe299316
languageName: node
linkType: hard
"set-value@npm:^2.0.1":
version: 2.0.1
resolution: "set-value@npm:2.0.1"
dependencies:
extend-shallow: "npm:^2.0.1"
is-extendable: "npm:^0.1.1"
is-plain-object: "npm:^2.0.3"
split-string: "npm:^3.0.1"
checksum: 10c0/4c40573c4f6540456e4b38b95f570272c4cfbe1d12890ad4057886da8535047cd772dfadf5b58e2e87aa244dfb4c57e3586f6716b976fc47c5144b6b09e1811b
languageName: node
linkType: hard
"setimmediate@npm:^1.0.5":
version: 1.0.5
resolution: "setimmediate@npm:1.0.5"
checksum: 10c0/5bae81bfdbfbd0ce992893286d49c9693c82b1bcc00dcaaf3a09c8f428fdeacf4190c013598b81875dfac2b08a572422db7df779a99332d0fce186d15a3e4d49
languageName: node
linkType: hard
"shallowequal@npm:1.1.0":
version: 1.1.0
resolution: "shallowequal@npm:1.1.0"
checksum: 10c0/b926efb51cd0f47aa9bc061add788a4a650550bbe50647962113a4579b60af2abe7b62f9b02314acc6f97151d4cf87033a2b15fc20852fae306d1a095215396c
languageName: node
linkType: hard
"shebang-command@npm:^2.0.0":
version: 2.0.0
resolution: "shebang-command@npm:2.0.0"
dependencies:
shebang-regex: "npm:^3.0.0"
checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e
languageName: node
linkType: hard
"shebang-regex@npm:^3.0.0":
version: 3.0.0
resolution: "shebang-regex@npm:3.0.0"
checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690
languageName: node
linkType: hard
"side-channel@npm:^1.0.4":
version: 1.0.6
resolution: "side-channel@npm:1.0.6"
dependencies:
call-bind: "npm:^1.0.7"
es-errors: "npm:^1.3.0"
get-intrinsic: "npm:^1.2.4"
object-inspect: "npm:^1.13.1"
checksum: 10c0/d2afd163dc733cc0a39aa6f7e39bf0c436293510dbccbff446733daeaf295857dbccf94297092ec8c53e2503acac30f0b78830876f0485991d62a90e9cad305f
languageName: node
linkType: hard
"signal-exit@npm:^4.0.1":
version: 4.1.0
resolution: "signal-exit@npm:4.1.0"
checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83
languageName: node
linkType: hard
"simple-statistics@npm:^7.8.7":
version: 7.8.8
resolution: "simple-statistics@npm:7.8.8"
checksum: 10c0/728083b6d6f478959436223164ff94c4a1fb627e601669150afff280620aea61d575826583e1ed3904f7bb86e3d9572dac3769f213707df740889f84529de0a6
languageName: node
linkType: hard
"simple-swizzle@npm:^0.2.2":
version: 0.2.2
resolution: "simple-swizzle@npm:0.2.2"
dependencies:
is-arrayish: "npm:^0.3.1"
checksum: 10c0/df5e4662a8c750bdba69af4e8263c5d96fe4cd0f9fe4bdfa3cbdeb45d2e869dff640beaaeb1ef0e99db4d8d2ec92f85508c269f50c972174851bc1ae5bd64308
languageName: node
linkType: hard
"simple-wcswidth@npm:^1.0.1":
version: 1.0.1
resolution: "simple-wcswidth@npm:1.0.1"
checksum: 10c0/2befead4c97134424aa3fba593a81daa9934fd61b9e4c65374b57ac5eecc2f2be1984b017bbdbc919923e19b77f2fcbdb94434789b9643fa8c3fde3a2a6a4b6f
languageName: node
linkType: hard
"size-sensor@npm:^1.0.1":
version: 1.0.2
resolution: "size-sensor@npm:1.0.2"
checksum: 10c0/2cb020cd54ae7bea76a0600ba82c1a09daf51e8bec6f96355e17b4806eb24003626e3349d6cb091f821ed5fbba193f59ca59f0ea7f6dd8b75d7c20b96c465c26
languageName: node
linkType: hard
"smart-buffer@npm:^4.2.0":
version: 4.2.0
resolution: "smart-buffer@npm:4.2.0"
checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539
languageName: node
linkType: hard
"snappyjs@npm:^0.6.0, snappyjs@npm:^0.6.1":
version: 0.6.1
resolution: "snappyjs@npm:0.6.1"
checksum: 10c0/6fa62bb62adfc2bad577db78c58b1c52aba5482f749018ff3000f13bf660f13ec5f16ab80673ce4e8792902a16c30e5fb40a3b67dbca9af525658c9d343c5b1c
languageName: node
linkType: hard
"socks-proxy-agent@npm:^8.0.3":
version: 8.0.5
resolution: "socks-proxy-agent@npm:8.0.5"
dependencies:
agent-base: "npm:^7.1.2"
debug: "npm:^4.3.4"
socks: "npm:^2.8.3"
checksum: 10c0/5d2c6cecba6821389aabf18728325730504bf9bb1d9e342e7987a5d13badd7a98838cc9a55b8ed3cb866ad37cc23e1086f09c4d72d93105ce9dfe76330e9d2a6
languageName: node
linkType: hard
"socks@npm:^2.8.3":
version: 2.8.3
resolution: "socks@npm:2.8.3"
dependencies:
ip-address: "npm:^9.0.5"
smart-buffer: "npm:^4.2.0"
checksum: 10c0/d54a52bf9325165770b674a67241143a3d8b4e4c8884560c4e0e078aace2a728dffc7f70150660f51b85797c4e1a3b82f9b7aa25e0a0ceae1a243365da5c51a7
languageName: node
linkType: hard
"sort-asc@npm:^0.2.0":
version: 0.2.0
resolution: "sort-asc@npm:0.2.0"
checksum: 10c0/637d08a3f42d9b20ad489fa50970cc46ff606764ecfc95f00e607151d38a4b9086b74366ef99177783ff2da75ad821dff5d76557caa7206e5b3082e1e743e7cf
languageName: node
linkType: hard
"sort-desc@npm:^0.2.0":
version: 0.2.0
resolution: "sort-desc@npm:0.2.0"
checksum: 10c0/d9b49e49c8aa1d443ace95a86845f7ad9c9aeb9bb231f43adf7af22109bbd05b11983497f7c449d88ee6c499f43cf0591cde59975f5321c7883c6a395dce8482
languageName: node
linkType: hard
"sort-object@npm:^3.0.3":
version: 3.0.3
resolution: "sort-object@npm:3.0.3"
dependencies:
bytewise: "npm:^1.1.0"
get-value: "npm:^2.0.2"
is-extendable: "npm:^0.1.1"
sort-asc: "npm:^0.2.0"
sort-desc: "npm:^0.2.0"
union-value: "npm:^1.0.1"
checksum: 10c0/b19518e3659875d0997bfb6e4a2bc681a71b3cc30a39b7ab673fcb5c32e65b2c9d4b66eba6c97c29c78b5fc437306ec0e0a85a381565d54eff8716388535db5d
languageName: node
linkType: hard
"source-map-js@npm:^1.0.2, source-map-js@npm:^1.2.1":
version: 1.2.1
resolution: "source-map-js@npm:1.2.1"
checksum: 10c0/7bda1fc4c197e3c6ff17de1b8b2c20e60af81b63a52cb32ec5a5d67a20a7d42651e2cb34ebe93833c5a2a084377e17455854fee3e21e7925c64a51b6a52b0faf
languageName: node
linkType: hard
"sourcemap-codec@npm:^1.4.8":
version: 1.4.8
resolution: "sourcemap-codec@npm:1.4.8"
checksum: 10c0/f099279fdaae070ff156df7414bbe39aad69cdd615454947ed3e19136bfdfcb4544952685ee73f56e17038f4578091e12b17b283ed8ac013882916594d95b9e6
languageName: node
linkType: hard
"space-separated-tokens@npm:^2.0.0":
version: 2.0.2
resolution: "space-separated-tokens@npm:2.0.2"
checksum: 10c0/6173e1d903dca41dcab6a2deed8b4caf61bd13b6d7af8374713500570aa929ff9414ae09a0519f4f8772df993300305a395d4871f35bc4ca72b6db57e1f30af8
languageName: node
linkType: hard
"spdx-correct@npm:^3.0.0":
version: 3.2.0
resolution: "spdx-correct@npm:3.2.0"
dependencies:
spdx-expression-parse: "npm:^3.0.0"
spdx-license-ids: "npm:^3.0.0"
checksum: 10c0/49208f008618b9119208b0dadc9208a3a55053f4fd6a0ae8116861bd22696fc50f4142a35ebfdb389e05ccf2de8ad142573fefc9e26f670522d899f7b2fe7386
languageName: node
linkType: hard
"spdx-exceptions@npm:^2.1.0":
version: 2.5.0
resolution: "spdx-exceptions@npm:2.5.0"
checksum: 10c0/37217b7762ee0ea0d8b7d0c29fd48b7e4dfb94096b109d6255b589c561f57da93bf4e328c0290046115961b9209a8051ad9f525e48d433082fc79f496a4ea940
languageName: node
linkType: hard
"spdx-expression-parse@npm:^3.0.0":
version: 3.0.1
resolution: "spdx-expression-parse@npm:3.0.1"
dependencies:
spdx-exceptions: "npm:^2.1.0"
spdx-license-ids: "npm:^3.0.0"
checksum: 10c0/6f8a41c87759fa184a58713b86c6a8b028250f158159f1d03ed9d1b6ee4d9eefdc74181c8ddc581a341aa971c3e7b79e30b59c23b05d2436d5de1c30bdef7171
languageName: node
linkType: hard
"spdx-license-ids@npm:^3.0.0":
version: 3.0.20
resolution: "spdx-license-ids@npm:3.0.20"
checksum: 10c0/bdff7534fad6ef59be49becda1edc3fb7f5b3d6f296a715516ab9d972b8ad59af2c34b2003e01db8970d4c673d185ff696ba74c6b61d3bf327e2b3eac22c297c
languageName: node
linkType: hard
"splaytree@npm:^3.1.0":
version: 3.1.2
resolution: "splaytree@npm:3.1.2"
checksum: 10c0/ba82da4e4185d692eb2b1c9e000a9dde6cd713ec447f5c90ec97264ce9de19ba1f5f90fbef8a9ffa37bbbe2e9f4b031c6ee45d4119acbf1cddb93112ec5ecf86
languageName: node
linkType: hard
"split-string@npm:^3.0.1":
version: 3.1.0
resolution: "split-string@npm:3.1.0"
dependencies:
extend-shallow: "npm:^3.0.0"
checksum: 10c0/72d7cd625445c7af215130e1e2bc183013bb9dd48a074eda1d35741e2b0dcb355e6df5b5558a62543a24dcec37dd1d6eb7a6228ff510d3c9de0f3dc1d1da8a70
languageName: node
linkType: hard
"sprintf-js@npm:^1.1.3":
version: 1.1.3
resolution: "sprintf-js@npm:1.1.3"
checksum: 10c0/09270dc4f30d479e666aee820eacd9e464215cdff53848b443964202bf4051490538e5dd1b42e1a65cf7296916ca17640aebf63dae9812749c7542ee5f288dec
languageName: node
linkType: hard
"sprintf-js@npm:~1.0.2":
version: 1.0.3
resolution: "sprintf-js@npm:1.0.3"
checksum: 10c0/ecadcfe4c771890140da5023d43e190b7566d9cf8b2d238600f31bec0fc653f328da4450eb04bd59a431771a8e9cc0e118f0aa3974b683a4981b4e07abc2a5bb
languageName: node
linkType: hard
"ssri@npm:^12.0.0":
version: 12.0.0
resolution: "ssri@npm:12.0.0"
dependencies:
minipass: "npm:^7.0.3"
checksum: 10c0/caddd5f544b2006e88fa6b0124d8d7b28208b83c72d7672d5ade44d794525d23b540f3396108c4eb9280dcb7c01f0bef50682f5b4b2c34291f7c5e211fd1417d
languageName: node
linkType: hard
"state-local@npm:^1.0.6":
version: 1.0.7
resolution: "state-local@npm:1.0.7"
checksum: 10c0/8dc7daeac71844452fafb514a6d6b6f40d7e2b33df398309ea1c7b3948d6110c57f112b7196500a10c54fdde40291488c52c875575670fb5c819602deca48bd9
languageName: node
linkType: hard
"strict-uri-encode@npm:^1.0.0":
version: 1.1.0
resolution: "strict-uri-encode@npm:1.1.0"
checksum: 10c0/eb8a4109ba2588239787389313ba58ec49e043d4c64a1d44716defe5821a68ae49abe0cdefed9946ca9fc2a4af7ecf321da92422b0a67258ec0a3638b053ae62
languageName: node
linkType: hard
"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0":
version: 4.2.3
resolution: "string-width@npm:4.2.3"
dependencies:
emoji-regex: "npm:^8.0.0"
is-fullwidth-code-point: "npm:^3.0.0"
strip-ansi: "npm:^6.0.1"
checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b
languageName: node
linkType: hard
"string-width@npm:^5.0.1, string-width@npm:^5.1.2":
version: 5.1.2
resolution: "string-width@npm:5.1.2"
dependencies:
eastasianwidth: "npm:^0.2.0"
emoji-regex: "npm:^9.2.2"
strip-ansi: "npm:^7.0.1"
checksum: 10c0/ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca
languageName: node
linkType: hard
"string.prototype.trim@npm:^1.2.9":
version: 1.2.9
resolution: "string.prototype.trim@npm:1.2.9"
dependencies:
call-bind: "npm:^1.0.7"
define-properties: "npm:^1.2.1"
es-abstract: "npm:^1.23.0"
es-object-atoms: "npm:^1.0.0"
checksum: 10c0/dcef1a0fb61d255778155006b372dff8cc6c4394bc39869117e4241f41a2c52899c0d263ffc7738a1f9e61488c490b05c0427faa15151efad721e1a9fb2663c2
languageName: node
linkType: hard
"string.prototype.trimend@npm:^1.0.8":
version: 1.0.8
resolution: "string.prototype.trimend@npm:1.0.8"
dependencies:
call-bind: "npm:^1.0.7"
define-properties: "npm:^1.2.1"
es-object-atoms: "npm:^1.0.0"
checksum: 10c0/0a0b54c17c070551b38e756ae271865ac6cc5f60dabf2e7e343cceae7d9b02e1a1120a824e090e79da1b041a74464e8477e2da43e2775c85392be30a6f60963c
languageName: node
linkType: hard
"string.prototype.trimstart@npm:^1.0.8":
version: 1.0.8
resolution: "string.prototype.trimstart@npm:1.0.8"
dependencies:
call-bind: "npm:^1.0.7"
define-properties: "npm:^1.2.1"
es-object-atoms: "npm:^1.0.0"
checksum: 10c0/d53af1899959e53c83b64a5fd120be93e067da740e7e75acb433849aa640782fb6c7d4cd5b84c954c84413745a3764df135a8afeb22908b86a835290788d8366
languageName: node
linkType: hard
"stringify-entities@npm:^4.0.0":
version: 4.0.4
resolution: "stringify-entities@npm:4.0.4"
dependencies:
character-entities-html4: "npm:^2.0.0"
character-entities-legacy: "npm:^3.0.0"
checksum: 10c0/537c7e656354192406bdd08157d759cd615724e9d0873602d2c9b2f6a5c0a8d0b1d73a0a08677848105c5eebac6db037b57c0b3a4ec86331117fa7319ed50448
languageName: node
linkType: hard
"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1":
version: 6.0.1
resolution: "strip-ansi@npm:6.0.1"
dependencies:
ansi-regex: "npm:^5.0.1"
checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952
languageName: node
linkType: hard
"strip-ansi@npm:^7.0.1":
version: 7.1.0
resolution: "strip-ansi@npm:7.1.0"
dependencies:
ansi-regex: "npm:^6.0.1"
checksum: 10c0/a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4
languageName: node
linkType: hard
"strip-indent@npm:^3.0.0":
version: 3.0.0
resolution: "strip-indent@npm:3.0.0"
dependencies:
min-indent: "npm:^1.0.0"
checksum: 10c0/ae0deaf41c8d1001c5d4fbe16cb553865c1863da4fae036683b474fa926af9fc121e155cb3fc57a68262b2ae7d5b8420aa752c97a6428c315d00efe2a3875679
languageName: node
linkType: hard
"strnum@npm:^1.1.1":
version: 1.1.1
resolution: "strnum@npm:1.1.1"
checksum: 10c0/c016034f9896ea99c4a22a8a8142d1ec72dba8d514ddec399f96998d5d2ab9f9e5b6c75c761d9730c3244b794022b1a63ec293f0da41ab0a994e3584020ba1ad
languageName: node
linkType: hard
"style-to-js@npm:^1.0.0":
version: 1.1.16
resolution: "style-to-js@npm:1.1.16"
dependencies:
style-to-object: "npm:1.0.8"
checksum: 10c0/578a4dff804539ec7e64d3cc8d327540befb9ad30e3cd0b6b0392f93f793f3a028f90084a9aaff088bffb87818fa2c6c153f0df576f61f9ab0b0938b582bcac7
languageName: node
linkType: hard
"style-to-object@npm:1.0.8":
version: 1.0.8
resolution: "style-to-object@npm:1.0.8"
dependencies:
inline-style-parser: "npm:0.2.4"
checksum: 10c0/daa6646b1ff18258c0ca33ed281fbe73485c8391192db1b56ce89d40c93ea64507a41e8701d0dadfe771bc2f540c46c9b295135f71584c8e5cb23d6a19be9430
languageName: node
linkType: hard
"styled-components@npm:6.1.8":
version: 6.1.8
resolution: "styled-components@npm:6.1.8"
dependencies:
"@emotion/is-prop-valid": "npm:1.2.1"
"@emotion/unitless": "npm:0.8.0"
"@types/stylis": "npm:4.2.0"
css-to-react-native: "npm:3.2.0"
csstype: "npm:3.1.2"
postcss: "npm:8.4.31"
shallowequal: "npm:1.1.0"
stylis: "npm:4.3.1"
tslib: "npm:2.5.0"
peerDependencies:
react: ">= 16.8.0"
react-dom: ">= 16.8.0"
checksum: 10c0/fafe4b9198d5d7980c2358821d1a89f86200d55c8eec03670cf12cf43b8a05a77eafaf0872cd85821f68238308e0f5c9d9aa43a62e6987c65b70baa2c3277ab8
languageName: node
linkType: hard
"stylis@npm:4.3.1":
version: 4.3.1
resolution: "stylis@npm:4.3.1"
checksum: 10c0/33e8ebd2bfa5f0bd0215f718dc2d3be896e1d00c5bcaeb9a4ae03cf239db6867af9eee230f57229bf1c29499357073ba3e6b547484ba1db2f5de1e8be7d4eee9
languageName: node
linkType: hard
"sucrase@npm:^3.35.0":
version: 3.35.0
resolution: "sucrase@npm:3.35.0"
dependencies:
"@jridgewell/gen-mapping": "npm:^0.3.2"
commander: "npm:^4.0.0"
glob: "npm:^10.3.10"
lines-and-columns: "npm:^1.1.6"
mz: "npm:^2.7.0"
pirates: "npm:^4.0.1"
ts-interface-checker: "npm:^0.1.9"
bin:
sucrase: bin/sucrase
sucrase-node: bin/sucrase-node
checksum: 10c0/ac85f3359d2c2ecbf5febca6a24ae9bf96c931f05fde533c22a94f59c6a74895e5d5f0e871878dfd59c2697a75ebb04e4b2224ef0bfc24ca1210735c2ec191ef
languageName: node
linkType: hard
"suncalc@npm:^1.9.0":
version: 1.9.0
resolution: "suncalc@npm:1.9.0"
checksum: 10c0/3c76c600ec8e60b7a6efab72f48cce3fc9b4ce95f8fa404fcd13d22f618fee2b83d7ad486544aee76bc20129c9f4eae4a76b09640c54167edd1de6099ca6cd3d
languageName: node
linkType: hard
"supercluster@npm:^7.1.0":
version: 7.1.5
resolution: "supercluster@npm:7.1.5"
dependencies:
kdbush: "npm:^3.0.0"
checksum: 10c0/bbebf45927d0019831731c94b78d1c9a1f3e2da0be9875d7ea75c6f261487e0f15d3f1822a9a49256e3c1672bdfb9138f9a5e44e2de99edb06cd1e758083e12d
languageName: node
linkType: hard
"supercluster@npm:^8.0.1":
version: 8.0.1
resolution: "supercluster@npm:8.0.1"
dependencies:
kdbush: "npm:^4.0.2"
checksum: 10c0/79121e6dbff67b3036ea6651f3baddb942478830ba3ecbc27455715ab5bd269de8381dc04618c0c15963346ea2ed0f81cd5f767c2978a63e2841807c73445d57
languageName: node
linkType: hard
"supports-color@npm:^5.3.0":
version: 5.5.0
resolution: "supports-color@npm:5.5.0"
dependencies:
has-flag: "npm:^3.0.0"
checksum: 10c0/6ae5ff319bfbb021f8a86da8ea1f8db52fac8bd4d499492e30ec17095b58af11f0c55f8577390a749b1c4dde691b6a0315dab78f5f54c9b3d83f8fb5905c1c05
languageName: node
linkType: hard
"supports-color@npm:^7.1.0":
version: 7.2.0
resolution: "supports-color@npm:7.2.0"
dependencies:
has-flag: "npm:^4.0.0"
checksum: 10c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124
languageName: node
linkType: hard
"supports-preserve-symlinks-flag@npm:^1.0.0":
version: 1.0.0
resolution: "supports-preserve-symlinks-flag@npm:1.0.0"
checksum: 10c0/6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39
languageName: node
linkType: hard
"sweepline-intersections@npm:^1.5.0":
version: 1.5.0
resolution: "sweepline-intersections@npm:1.5.0"
dependencies:
tinyqueue: "npm:^2.0.0"
checksum: 10c0/587a597c75b787e61054ef88b98463af47f60855265b7829fa8acc5ebe68fb4bc3d148a80e9f72c69c16a0241bfed38d3fbbe93a735ea5a2276c00116adc5283
languageName: node
linkType: hard
"swr@npm:^2.2.5":
version: 2.3.3
resolution: "swr@npm:2.3.3"
dependencies:
dequal: "npm:^2.0.3"
use-sync-external-store: "npm:^1.4.0"
peerDependencies:
react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
checksum: 10c0/882fc8291912860e0c50eae3470ebf0cd58b0144cb12adcc4b14c5cef913ea06479043830508d8b0b3d4061d99ad8dd52485c9c879fbd4e9b893484e6d8da9e3
languageName: node
linkType: hard
"tabbable@npm:^6.0.1":
version: 6.2.0
resolution: "tabbable@npm:6.2.0"
checksum: 10c0/ced8b38f05f2de62cd46836d77c2646c42b8c9713f5bd265daf0e78ff5ac73d3ba48a7ca45f348bafeef29b23da7187c72250742d37627883ef89cbd7fa76898
languageName: node
linkType: hard
"table-layout@npm:^4.1.0":
version: 4.1.1
resolution: "table-layout@npm:4.1.1"
dependencies:
array-back: "npm:^6.2.2"
wordwrapjs: "npm:^5.1.0"
checksum: 10c0/26d8e54a55ddb4de447c8f02a8d7fcbb66a9580375e406a3bc7717ab223a413f6dfbded6710f288b3dfd277991813a0bd5a17419a0dc6db54d9a36d883d868dc
languageName: node
linkType: hard
"tailwind-merge@npm:2.5.4":
version: 2.5.4
resolution: "tailwind-merge@npm:2.5.4"
checksum: 10c0/6c3d2a1d44344f373859f005e6366f0dbd7f66131d330a51dbe823dab08f71c388b2efcbb2b6a2170ca469581d27079c25cd40c234ca1356c4893ae99c2febb3
languageName: node
linkType: hard
"tailwind-merge@npm:3.3.1":
version: 3.3.1
resolution: "tailwind-merge@npm:3.3.1"
checksum: 10c0/b84c6a78d4669fa12bf5ab8f0cdc4400a3ce0a7c006511af4af4be70bb664a27466dbe13ee9e3b31f50ddf6c51d380e8192ce0ec9effce23ca729d71a9f63818
languageName: node
linkType: hard
"tailwind-merge@npm:^2.5.4":
version: 2.6.0
resolution: "tailwind-merge@npm:2.6.0"
checksum: 10c0/fc8a5535524de9f4dacf1c16ab298581c7bb757d68a95faaf28942b1c555a619bba9d4c6726fe83986e44973b315410c1a5226e5354c30ba82353bd6d2288fa5
languageName: node
linkType: hard
"tailwind-variants@npm:0.3.0":
version: 0.3.0
resolution: "tailwind-variants@npm:0.3.0"
dependencies:
tailwind-merge: "npm:^2.5.4"
peerDependencies:
tailwindcss: "*"
checksum: 10c0/115b0efb5ca5b76d4dfe6148e3f2f314f5af8490d0d2be8bdb6f062c0963ead87227ffd7340c6fb38cd95c0c751e2f65b04f3c0d833bf058d8cfe25210777bc7
languageName: node
linkType: hard
"tailwind-variants@npm:2.0.1":
version: 2.0.1
resolution: "tailwind-variants@npm:2.0.1"
peerDependencies:
tailwind-merge: ">=3.0.0"
tailwindcss: "*"
peerDependenciesMeta:
tailwind-merge:
optional: true
checksum: 10c0/c36884e9d4aa4345dc0fd98cd5d402fbe8c6ac62a19ad2a40f7e3eaffa5cfc15fea8ffefff5eb40c405ee3489343f027e83c47cad4a2e044510e52a14efadd81
languageName: node
linkType: hard
"tailwindcss@npm:^3.4.17":
version: 3.4.17
resolution: "tailwindcss@npm:3.4.17"
dependencies:
"@alloc/quick-lru": "npm:^5.2.0"
arg: "npm:^5.0.2"
chokidar: "npm:^3.6.0"
didyoumean: "npm:^1.2.2"
dlv: "npm:^1.1.3"
fast-glob: "npm:^3.3.2"
glob-parent: "npm:^6.0.2"
is-glob: "npm:^4.0.3"
jiti: "npm:^1.21.6"
lilconfig: "npm:^3.1.3"
micromatch: "npm:^4.0.8"
normalize-path: "npm:^3.0.0"
object-hash: "npm:^3.0.0"
picocolors: "npm:^1.1.1"
postcss: "npm:^8.4.47"
postcss-import: "npm:^15.1.0"
postcss-js: "npm:^4.0.1"
postcss-load-config: "npm:^4.0.2"
postcss-nested: "npm:^6.2.0"
postcss-selector-parser: "npm:^6.1.2"
resolve: "npm:^1.22.8"
sucrase: "npm:^3.35.0"
bin:
tailwind: lib/cli.js
tailwindcss: lib/cli.js
checksum: 10c0/cc42c6e7fdf88a5507a0d7fea37f1b4122bec158977f8c017b2ae6828741f9e6f8cb90282c6bf2bd5951fd1220a53e0a50ca58f5c1c00eb7f5d9f8b80dc4523c
languageName: node
linkType: hard
"tar@npm:^7.4.3":
version: 7.4.3
resolution: "tar@npm:7.4.3"
dependencies:
"@isaacs/fs-minipass": "npm:^4.0.0"
chownr: "npm:^3.0.0"
minipass: "npm:^7.1.2"
minizlib: "npm:^3.0.1"
mkdirp: "npm:^3.0.1"
yallist: "npm:^5.0.0"
checksum: 10c0/d4679609bb2a9b48eeaf84632b6d844128d2412b95b6de07d53d8ee8baf4ca0857c9331dfa510390a0727b550fd543d4d1a10995ad86cdf078423fbb8d99831d
languageName: node
linkType: hard
"text-segmentation@npm:^1.0.3":
version: 1.0.3
resolution: "text-segmentation@npm:1.0.3"
dependencies:
utrie: "npm:^1.0.2"
checksum: 10c0/8b9ae8524e3a332371060d0ca62f10ad49a13e954719ea689a6c3a8b8c15c8a56365ede2bb91c322fb0d44b6533785f0da603e066b7554d052999967fb72d600
languageName: node
linkType: hard
"texture-compressor@npm:^1.0.2":
version: 1.0.2
resolution: "texture-compressor@npm:1.0.2"
dependencies:
argparse: "npm:^1.0.10"
image-size: "npm:^0.7.4"
bin:
texture-compressor: ./bin/texture-compressor.js
checksum: 10c0/ea0bce1cbda3a64f826867e97ee2a1f17a7219d21d97d7625a6370792afddc697e6832a9b3b39bf2eef0978af7bc0d1dcefaf7fd91d719213658b0a010a83c44
languageName: node
linkType: hard
"thenify-all@npm:^1.0.0":
version: 1.6.0
resolution: "thenify-all@npm:1.6.0"
dependencies:
thenify: "npm:>= 3.1.0 < 4"
checksum: 10c0/9b896a22735e8122754fe70f1d65f7ee691c1d70b1f116fda04fea103d0f9b356e3676cb789506e3909ae0486a79a476e4914b0f92472c2e093d206aed4b7d6b
languageName: node
linkType: hard
"thenify@npm:>= 3.1.0 < 4":
version: 3.3.1
resolution: "thenify@npm:3.3.1"
dependencies:
any-promise: "npm:^1.0.0"
checksum: 10c0/f375aeb2b05c100a456a30bc3ed07ef03a39cbdefe02e0403fb714b8c7e57eeaad1a2f5c4ecfb9ce554ce3db9c2b024eba144843cd9e344566d9fcee73b04767
languageName: node
linkType: hard
"threads@npm:^1.7.0":
version: 1.7.0
resolution: "threads@npm:1.7.0"
dependencies:
callsites: "npm:^3.1.0"
debug: "npm:^4.2.0"
is-observable: "npm:^2.1.0"
observable-fns: "npm:^0.6.1"
tiny-worker: "npm:>= 2"
dependenciesMeta:
tiny-worker:
optional: true
checksum: 10c0/34114075c5eb253e937c01e0e51babb71eb1571c2fd4a8170645aa20c10186422324537d017d64bfd3de655cbb6647bf70d1d602260273b1e9750719d67f359a
languageName: node
linkType: hard
"thrift@npm:^0.19.0":
version: 0.19.0
resolution: "thrift@npm:0.19.0"
dependencies:
browser-or-node: "npm:^1.2.1"
isomorphic-ws: "npm:^4.0.1"
node-int64: "npm:^0.4.0"
q: "npm:^1.5.0"
ws: "npm:^5.2.3"
checksum: 10c0/935c2d9fcd3f23528fb462e8186aacf6e9c185593f59ac6ede1e3f5862de85f7d093a99546edce77443c990e6fde850a5ef5603e087cc1e9df96003f01860435
languageName: node
linkType: hard
"throttleit@npm:2.1.0":
version: 2.1.0
resolution: "throttleit@npm:2.1.0"
checksum: 10c0/1696ae849522cea6ba4f4f3beac1f6655d335e51b42d99215e196a718adced0069e48deaaf77f7e89f526ab31de5b5c91016027da182438e6f9280be2f3d5265
languageName: node
linkType: hard
"tiny-warning@npm:^1.0.0":
version: 1.0.3
resolution: "tiny-warning@npm:1.0.3"
checksum: 10c0/ef8531f581b30342f29670cb41ca248001c6fd7975ce22122bd59b8d62b4fc84ad4207ee7faa95cde982fa3357cd8f4be650142abc22805538c3b1392d7084fa
languageName: node
linkType: hard
"tiny-worker@npm:>= 2":
version: 2.3.0
resolution: "tiny-worker@npm:2.3.0"
dependencies:
esm: "npm:^3.2.25"
checksum: 10c0/3106cace86e673216426a517e96fb72ce642ba79002554e4c6bceb585ba77cf5e5e68b452c752cada6136ae94fdbf11c56943a70de6c6bc6a2a3a9ae439746c9
languageName: node
linkType: hard
"tinycolor2@npm:^1.4.1":
version: 1.6.0
resolution: "tinycolor2@npm:1.6.0"
checksum: 10c0/9aa79a36ba2c2a87cb221453465cabacd04b9e35f9694373e846fdc78b1c768110f81e581ea41440106c0f24d9a023891d0887e8075885e790ac40eb0e74a5c1
languageName: node
linkType: hard
"tinyqueue@npm:^2.0.0, tinyqueue@npm:^2.0.3":
version: 2.0.3
resolution: "tinyqueue@npm:2.0.3"
checksum: 10c0/d7b590088f015a94a17132fa209c2f2a80c45158259af5474901fdf5932e95ea13ff6f034bcc725a6d5f66d3e5b888b048c310229beb25ad5bebb4f0a635abf2
languageName: node
linkType: hard
"tippy.js@npm:^6.3.1":
version: 6.3.7
resolution: "tippy.js@npm:6.3.7"
dependencies:
"@popperjs/core": "npm:^2.9.0"
checksum: 10c0/ec3677beb8caec791ee1f715663f28f42d60e0f7250074a047d13d5e6db95fdb6d26d8a3ac16cecb4ebcaf33ae919dbc889cf97948d115e8d3c81518c911b379
languageName: node
linkType: hard
"to-camel-case@npm:^1.0.0":
version: 1.0.0
resolution: "to-camel-case@npm:1.0.0"
dependencies:
to-space-case: "npm:^1.0.0"
checksum: 10c0/357921548908053d774d4b836f42437139c6fc9d73aaf40a1aa59d7317d760541a19667eb2884d9db83902065a90d80b0fe74c59bc13943e8489df9ef4335069
languageName: node
linkType: hard
"to-no-case@npm:^1.0.0":
version: 1.0.2
resolution: "to-no-case@npm:1.0.2"
checksum: 10c0/c035b04e1042ed67ceb23dc5c7c20ccde11a83ab1d2b3947c17918472b5d26dd4ffdb4cf9464752e7707ab9f3af4a106f9b61244c724bc6810422acd5984da3d
languageName: node
linkType: hard
"to-regex-range@npm:^5.0.1":
version: 5.0.1
resolution: "to-regex-range@npm:5.0.1"
dependencies:
is-number: "npm:^7.0.0"
checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892
languageName: node
linkType: hard
"to-space-case@npm:^1.0.0":
version: 1.0.0
resolution: "to-space-case@npm:1.0.0"
dependencies:
to-no-case: "npm:^1.0.0"
checksum: 10c0/b99e1b5d0f3c90a8d47fa3b155d515027bd83a370740e82ee7cb064f86e3655f030f068bddcb8d18239e7408761b4376d89ab91e5ccdb17dc859d8fd4f570ac5
languageName: node
linkType: hard
"toggle-selection@npm:^1.0.6":
version: 1.0.6
resolution: "toggle-selection@npm:1.0.6"
checksum: 10c0/f2cf1f2c70f374fd87b0cdc8007453ba9e981c4305a8bf4eac10a30e62ecdfd28bca7d18f8f15b15a506bf8a7bfb20dbe3539f0fcf2a2c8396c1a78d53e1f179
languageName: node
linkType: hard
"tr46@npm:~0.0.3":
version: 0.0.3
resolution: "tr46@npm:0.0.3"
checksum: 10c0/047cb209a6b60c742f05c9d3ace8fa510bff609995c129a37ace03476a9b12db4dbf975e74600830ef0796e18882b2381fb5fb1f6b4f96b832c374de3ab91a11
languageName: node
linkType: hard
"trim-lines@npm:^3.0.0":
version: 3.0.1
resolution: "trim-lines@npm:3.0.1"
checksum: 10c0/3a1611fa9e52aa56a94c69951a9ea15b8aaad760eaa26c56a65330dc8adf99cb282fc07cc9d94968b7d4d88003beba220a7278bbe2063328eb23fb56f9509e94
languageName: node
linkType: hard
"trim-newlines@npm:^3.0.0":
version: 3.0.1
resolution: "trim-newlines@npm:3.0.1"
checksum: 10c0/03cfefde6c59ff57138412b8c6be922ecc5aec30694d784f2a65ef8dcbd47faef580b7de0c949345abdc56ec4b4abf64dd1e5aea619b200316e471a3dd5bf1f6
languageName: node
linkType: hard
"trough@npm:^2.0.0":
version: 2.2.0
resolution: "trough@npm:2.2.0"
checksum: 10c0/58b671fc970e7867a48514168894396dd94e6d9d6456aca427cc299c004fe67f35ed7172a36449086b2edde10e78a71a284ec0076809add6834fb8f857ccb9b0
languageName: node
linkType: hard
"ts-interface-checker@npm:^0.1.9":
version: 0.1.13
resolution: "ts-interface-checker@npm:0.1.13"
checksum: 10c0/232509f1b84192d07b81d1e9b9677088e590ac1303436da1e92b296e9be8e31ea042e3e1fd3d29b1742ad2c959e95afe30f63117b8f1bc3a3850070a5142fea7
languageName: node
linkType: hard
"tslib@npm:2, tslib@npm:^2.8.0, tslib@npm:^2.8.1":
version: 2.8.1
resolution: "tslib@npm:2.8.1"
checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62
languageName: node
linkType: hard
"tslib@npm:2.3.0":
version: 2.3.0
resolution: "tslib@npm:2.3.0"
checksum: 10c0/a845aed84e7e7dbb4c774582da60d7030ea39d67307250442d35c4c5dd77e4b44007098c37dd079e100029c76055f2a362734b8442ba828f8cc934f15ed9be61
languageName: node
linkType: hard
"tslib@npm:2.5.0":
version: 2.5.0
resolution: "tslib@npm:2.5.0"
checksum: 10c0/e32fc99cc730dd514e53c44e668d76016e738f0bcc726aad5dbd2d335cf19b87a95a9b1e4f0a9993e370f1d702b5e471cdd4acabcac428a3099d496b9af2021e
languageName: node
linkType: hard
"tslib@npm:^2.0.0, tslib@npm:^2.4.0, tslib@npm:^2.6.2":
version: 2.6.3
resolution: "tslib@npm:2.6.3"
checksum: 10c0/2598aef53d9dbe711af75522464b2104724d6467b26a60f2bdac8297d2b5f1f6b86a71f61717384aa8fd897240467aaa7bcc36a0700a0faf751293d1331db39a
languageName: node
linkType: hard
"type-analyzer@npm:0.4.0":
version: 0.4.0
resolution: "type-analyzer@npm:0.4.0"
checksum: 10c0/5fac26cdde6e328419fce596826ad761f7aa96e613b210aa05b3710711893e61fcd8458936539c2634940912a063519e962bfa6f221e6d829b8a2b6193b06f20
languageName: node
linkType: hard
"type-fest@npm:^0.18.0":
version: 0.18.1
resolution: "type-fest@npm:0.18.1"
checksum: 10c0/303f5ecf40d03e1d5b635ce7660de3b33c18ed8ebc65d64920c02974d9e684c72483c23f9084587e9dd6466a2ece1da42ddc95b412a461794dd30baca95e2bac
languageName: node
linkType: hard
"type-fest@npm:^0.6.0":
version: 0.6.0
resolution: "type-fest@npm:0.6.0"
checksum: 10c0/0c585c26416fce9ecb5691873a1301b5aff54673c7999b6f925691ed01f5b9232db408cdbb0bd003d19f5ae284322523f44092d1f81ca0a48f11f7cf0be8cd38
languageName: node
linkType: hard
"type-fest@npm:^0.8.1":
version: 0.8.1
resolution: "type-fest@npm:0.8.1"
checksum: 10c0/dffbb99329da2aa840f506d376c863bd55f5636f4741ad6e65e82f5ce47e6914108f44f340a0b74009b0cb5d09d6752ae83203e53e98b1192cf80ecee5651636
languageName: node
linkType: hard
"typed-array-buffer@npm:^1.0.2":
version: 1.0.2
resolution: "typed-array-buffer@npm:1.0.2"
dependencies:
call-bind: "npm:^1.0.7"
es-errors: "npm:^1.3.0"
is-typed-array: "npm:^1.1.13"
checksum: 10c0/9e043eb38e1b4df4ddf9dde1aa64919ae8bb909571c1cc4490ba777d55d23a0c74c7d73afcdd29ec98616d91bb3ae0f705fad4421ea147e1daf9528200b562da
languageName: node
linkType: hard
"typed-array-byte-length@npm:^1.0.1":
version: 1.0.1
resolution: "typed-array-byte-length@npm:1.0.1"
dependencies:
call-bind: "npm:^1.0.7"
for-each: "npm:^0.3.3"
gopd: "npm:^1.0.1"
has-proto: "npm:^1.0.3"
is-typed-array: "npm:^1.1.13"
checksum: 10c0/fcebeffb2436c9f355e91bd19e2368273b88c11d1acc0948a2a306792f1ab672bce4cfe524ab9f51a0505c9d7cd1c98eff4235c4f6bfef6a198f6cfc4ff3d4f3
languageName: node
linkType: hard
"typed-array-byte-offset@npm:^1.0.2":
version: 1.0.2
resolution: "typed-array-byte-offset@npm:1.0.2"
dependencies:
available-typed-arrays: "npm:^1.0.7"
call-bind: "npm:^1.0.7"
for-each: "npm:^0.3.3"
gopd: "npm:^1.0.1"
has-proto: "npm:^1.0.3"
is-typed-array: "npm:^1.1.13"
checksum: 10c0/d2628bc739732072e39269389a758025f75339de2ed40c4f91357023c5512d237f255b633e3106c461ced41907c1bf9a533c7e8578066b0163690ca8bc61b22f
languageName: node
linkType: hard
"typed-array-length@npm:^1.0.6":
version: 1.0.6
resolution: "typed-array-length@npm:1.0.6"
dependencies:
call-bind: "npm:^1.0.7"
for-each: "npm:^0.3.3"
gopd: "npm:^1.0.1"
has-proto: "npm:^1.0.3"
is-typed-array: "npm:^1.1.13"
possible-typed-array-names: "npm:^1.0.0"
checksum: 10c0/74253d7dc488eb28b6b2711cf31f5a9dcefc9c41b0681fd1c178ed0a1681b4468581a3626d39cd4df7aee3d3927ab62be06aa9ca74e5baf81827f61641445b77
languageName: node
linkType: hard
"typewise-core@npm:^1.2, typewise-core@npm:^1.2.0":
version: 1.2.0
resolution: "typewise-core@npm:1.2.0"
checksum: 10c0/0c574b036e430ef29a3c71dca1f88c041597734448db50e697ec4b7d03d71af4f8afeec556a2553f7db1cf98f9313b983071f0731d784108b2daf4f2e0c37d9e
languageName: node
linkType: hard
"typewise@npm:^1.0.3":
version: 1.0.3
resolution: "typewise@npm:1.0.3"
dependencies:
typewise-core: "npm:^1.2.0"
checksum: 10c0/0e300a963cd344f9f4216343eb1c9714e1aee12c5b928ae3ff4a19b4b1edcd82356b8bd763905bd72528718a3c863612f8259cb047934b59bdd849f305e12e80
languageName: node
linkType: hard
"typical@npm:^4.0.0":
version: 4.0.0
resolution: "typical@npm:4.0.0"
checksum: 10c0/f300b198fb9fe743859b75ec761d53c382723dc178bbce4957d9cb754f2878a44ce17dc0b6a5156c52be1065449271f63754ba594dac225b80ce3aa39f9241ed
languageName: node
linkType: hard
"typical@npm:^7.1.1":
version: 7.1.1
resolution: "typical@npm:7.1.1"
checksum: 10c0/bbb28ccd09909446759db1b50bb466826077b4fdf99c3be963539ed9ee84090479976df9c51279302b9b4d24573657911b5a2b9d5e9996ed2daab9b02e0970ba
languageName: node
linkType: hard
"typical@npm:^7.2.0":
version: 7.3.0
resolution: "typical@npm:7.3.0"
checksum: 10c0/bee697a88e1dd0447bc1cf7f6e875eaa2b0fb2cccb338b7b261e315f7df84a66402864bfc326d6b3117c50475afd1d49eda03d846a6299ad25f211035bfab3b1
languageName: node
linkType: hard
"ua-parser-js@npm:^0.7.30":
version: 0.7.38
resolution: "ua-parser-js@npm:0.7.38"
checksum: 10c0/da963eae1618f0c60d0812851a4d478fb8bb127ee6e5c566b8dac27eeb25757d818d9ade2c312d73018f2bb3c3e629d26c066fcda3cb9d55a31289c9566198df
languageName: node
linkType: hard
"unbox-primitive@npm:^1.0.2":
version: 1.0.2
resolution: "unbox-primitive@npm:1.0.2"
dependencies:
call-bind: "npm:^1.0.2"
has-bigints: "npm:^1.0.2"
has-symbols: "npm:^1.0.3"
which-boxed-primitive: "npm:^1.0.2"
checksum: 10c0/81ca2e81134167cc8f75fa79fbcc8a94379d6c61de67090986a2273850989dd3bae8440c163121b77434b68263e34787a675cbdcb34bb2f764c6b9c843a11b66
languageName: node
linkType: hard
"undici-types@npm:~5.26.4":
version: 5.26.5
resolution: "undici-types@npm:5.26.5"
checksum: 10c0/bb673d7876c2d411b6eb6c560e0c571eef4a01c1c19925175d16e3a30c4c428181fb8d7ae802a261f283e4166a0ac435e2f505743aa9e45d893f9a3df017b501
languageName: node
linkType: hard
"undici-types@npm:~6.19.2":
version: 6.19.8
resolution: "undici-types@npm:6.19.8"
checksum: 10c0/078afa5990fba110f6824823ace86073b4638f1d5112ee26e790155f481f2a868cc3e0615505b6f4282bdf74a3d8caad715fd809e870c2bb0704e3ea6082f344
languageName: node
linkType: hard
"unified@npm:^11.0.0":
version: 11.0.5
resolution: "unified@npm:11.0.5"
dependencies:
"@types/unist": "npm:^3.0.0"
bail: "npm:^2.0.0"
devlop: "npm:^1.0.0"
extend: "npm:^3.0.0"
is-plain-obj: "npm:^4.0.0"
trough: "npm:^2.0.0"
vfile: "npm:^6.0.0"
checksum: 10c0/53c8e685f56d11d9d458a43e0e74328a4d6386af51c8ac37a3dcabec74ce5026da21250590d4aff6733ccd7dc203116aae2b0769abc18cdf9639a54ae528dfc9
languageName: node
linkType: hard
"union-value@npm:^1.0.1":
version: 1.0.1
resolution: "union-value@npm:1.0.1"
dependencies:
arr-union: "npm:^3.1.0"
get-value: "npm:^2.0.6"
is-extendable: "npm:^0.1.1"
set-value: "npm:^2.0.1"
checksum: 10c0/8758d880cb9545f62ce9cfb9b791b2b7a206e0ff5cc4b9d7cd6581da2c6839837fbb45e639cf1fd8eef3cae08c0201b614b7c06dd9f5f70d9dbe7c5fe2fbf592
languageName: node
linkType: hard
"unique-filename@npm:^4.0.0":
version: 4.0.0
resolution: "unique-filename@npm:4.0.0"
dependencies:
unique-slug: "npm:^5.0.0"
checksum: 10c0/38ae681cceb1408ea0587b6b01e29b00eee3c84baee1e41fd5c16b9ed443b80fba90c40e0ba69627e30855570a34ba8b06702d4a35035d4b5e198bf5a64c9ddc
languageName: node
linkType: hard
"unique-slug@npm:^5.0.0":
version: 5.0.0
resolution: "unique-slug@npm:5.0.0"
dependencies:
imurmurhash: "npm:^0.1.4"
checksum: 10c0/d324c5a44887bd7e105ce800fcf7533d43f29c48757ac410afd42975de82cc38ea2035c0483f4de82d186691bf3208ef35c644f73aa2b1b20b8e651be5afd293
languageName: node
linkType: hard
"unist-util-is@npm:^6.0.0":
version: 6.0.0
resolution: "unist-util-is@npm:6.0.0"
dependencies:
"@types/unist": "npm:^3.0.0"
checksum: 10c0/9419352181eaa1da35eca9490634a6df70d2217815bb5938a04af3a662c12c5607a2f1014197ec9c426fbef18834f6371bfdb6f033040fa8aa3e965300d70e7e
languageName: node
linkType: hard
"unist-util-position@npm:^5.0.0":
version: 5.0.0
resolution: "unist-util-position@npm:5.0.0"
dependencies:
"@types/unist": "npm:^3.0.0"
checksum: 10c0/dde3b31e314c98f12b4dc6402f9722b2bf35e96a4f2d463233dd90d7cde2d4928074a7a11eff0a5eb1f4e200f27fc1557e0a64a7e8e4da6558542f251b1b7400
languageName: node
linkType: hard
"unist-util-stringify-position@npm:^4.0.0":
version: 4.0.0
resolution: "unist-util-stringify-position@npm:4.0.0"
dependencies:
"@types/unist": "npm:^3.0.0"
checksum: 10c0/dfe1dbe79ba31f589108cb35e523f14029b6675d741a79dea7e5f3d098785045d556d5650ec6a8338af11e9e78d2a30df12b1ee86529cded1098da3f17ee999e
languageName: node
linkType: hard
"unist-util-visit-parents@npm:^6.0.0":
version: 6.0.1
resolution: "unist-util-visit-parents@npm:6.0.1"
dependencies:
"@types/unist": "npm:^3.0.0"
unist-util-is: "npm:^6.0.0"
checksum: 10c0/51b1a5b0aa23c97d3e03e7288f0cdf136974df2217d0999d3de573c05001ef04cccd246f51d2ebdfb9e8b0ed2704451ad90ba85ae3f3177cf9772cef67f56206
languageName: node
linkType: hard
"unist-util-visit@npm:^5.0.0":
version: 5.0.0
resolution: "unist-util-visit@npm:5.0.0"
dependencies:
"@types/unist": "npm:^3.0.0"
unist-util-is: "npm:^6.0.0"
unist-util-visit-parents: "npm:^6.0.0"
checksum: 10c0/51434a1d80252c1540cce6271a90fd1a106dbe624997c09ed8879279667fb0b2d3a685e02e92bf66598dcbe6cdffa7a5f5fb363af8fdf90dda6c855449ae39a5
languageName: node
linkType: hard
"universalify@npm:^0.1.0":
version: 0.1.2
resolution: "universalify@npm:0.1.2"
checksum: 10c0/e70e0339f6b36f34c9816f6bf9662372bd241714dc77508d231d08386d94f2c4aa1ba1318614f92015f40d45aae1b9075cd30bd490efbe39387b60a76ca3f045
languageName: node
linkType: hard
"update-input-width@npm:^1.4.0":
version: 1.4.2
resolution: "update-input-width@npm:1.4.2"
checksum: 10c0/d3344f91c1c08a26f81d172dd774ca8834ddfaec1eb78e05280d303800a3236c4e122df14ea34fe7f0e1bdada733dec5d3676d38ce0777bafe603de0a6199473
languageName: node
linkType: hard
"use-composed-ref@npm:^1.3.0":
version: 1.4.0
resolution: "use-composed-ref@npm:1.4.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta:
"@types/react":
optional: true
checksum: 10c0/c77e0cba9579b7746d52feaf3ce77d8c345f266c9c1ef46584ae68f54646537c87b2ad97f5219a4b1db52f97ec2905e88e5b146add1f28f7e457bd52ca1b93cf
languageName: node
linkType: hard
"use-isomorphic-layout-effect@npm:^1.1.1":
version: 1.2.0
resolution: "use-isomorphic-layout-effect@npm:1.2.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta:
"@types/react":
optional: true
checksum: 10c0/2e4bdee68d65893b37e716ebdcc111550775189c80e662eda87d6f5b54dc431d3383a18914ea01a893ee5478902a878012713eaebcacbb6611ab88c463accb83
languageName: node
linkType: hard
"use-latest@npm:^1.2.1":
version: 1.3.0
resolution: "use-latest@npm:1.3.0"
dependencies:
use-isomorphic-layout-effect: "npm:^1.1.1"
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta:
"@types/react":
optional: true
checksum: 10c0/067c648814ad0c1f1e89d2d0e496254b05c4bed6a34e23045b4413824222aab08fd803c59a42852acc16830c17567d03f8c90af0a62be2f4e4b931454d079798
languageName: node
linkType: hard
"use-sync-external-store@npm:^1.0.0":
version: 1.2.2
resolution: "use-sync-external-store@npm:1.2.2"
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0
checksum: 10c0/23b1597c10adf15b26ade9e8c318d8cc0abc9ec0ab5fc7ca7338da92e89c2536abd150a5891bf076836c352fdfa104fc7231fb48f806fd9960e0cbe03601abaf
languageName: node
linkType: hard
"use-sync-external-store@npm:^1.4.0":
version: 1.5.0
resolution: "use-sync-external-store@npm:1.5.0"
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
checksum: 10c0/1b8663515c0be34fa653feb724fdcce3984037c78dd4a18f68b2c8be55cc1a1084c578d5b75f158d41b5ddffc2bf5600766d1af3c19c8e329bb20af2ec6f52f4
languageName: node
linkType: hard
"usehooks-ts@npm:^3.1.0":
version: 3.1.0
resolution: "usehooks-ts@npm:3.1.0"
dependencies:
lodash.debounce: "npm:^4.0.8"
peerDependencies:
react: ^16.8.0 || ^17 || ^18
checksum: 10c0/2204d8c95109302bdaaa51a66bf216f3dba750f1d2795c20ecba75ba1c44a070a253935d537ef536514ab6e363bcc02ccc78b5ad63576ff8d880d577cf3fc48f
languageName: node
linkType: hard
"util-deprecate@npm:^1.0.2":
version: 1.0.2
resolution: "util-deprecate@npm:1.0.2"
checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942
languageName: node
linkType: hard
"util@npm:^0.12.5":
version: 0.12.5
resolution: "util@npm:0.12.5"
dependencies:
inherits: "npm:^2.0.3"
is-arguments: "npm:^1.0.4"
is-generator-function: "npm:^1.0.7"
is-typed-array: "npm:^1.1.3"
which-typed-array: "npm:^1.1.2"
checksum: 10c0/c27054de2cea2229a66c09522d0fa1415fb12d861d08523a8846bf2e4cbf0079d4c3f725f09dcb87493549bcbf05f5798dce1688b53c6c17201a45759e7253f3
languageName: node
linkType: hard
"utrie@npm:^1.0.2":
version: 1.0.2
resolution: "utrie@npm:1.0.2"
dependencies:
base64-arraybuffer: "npm:^1.0.2"
checksum: 10c0/eaffe645bd81a39e4bc3abb23df5895e9961dbdd49748ef3b173529e8b06ce9dd1163e9705d5309a1c61ee41ffcb825e2043bc0fd1659845ffbdf4b1515dfdb4
languageName: node
linkType: hard
"uuid@npm:^10.0.0":
version: 10.0.0
resolution: "uuid@npm:10.0.0"
bin:
uuid: dist/bin/uuid
checksum: 10c0/eab18c27fe4ab9fb9709a5d5f40119b45f2ec8314f8d4cf12ce27e4c6f4ffa4a6321dc7db6c515068fa373c075b49691ba969f0010bf37f44c37ca40cd6bf7fe
languageName: node
linkType: hard
"uuid@npm:^7.0.3":
version: 7.0.3
resolution: "uuid@npm:7.0.3"
bin:
uuid: dist/bin/uuid
checksum: 10c0/2eee5723b0fcce8256f5bfd3112af6c453b5471db00af9c3533e3d5a6e57de83513f9a145a570890457bd7abf2c2aa05797291d950ac666e5a074895dc63168b
languageName: node
linkType: hard
"validate-npm-package-license@npm:^3.0.1":
version: 3.0.4
resolution: "validate-npm-package-license@npm:3.0.4"
dependencies:
spdx-correct: "npm:^3.0.0"
spdx-expression-parse: "npm:^3.0.0"
checksum: 10c0/7b91e455a8de9a0beaa9fe961e536b677da7f48c9a493edf4d4d4a87fd80a7a10267d438723364e432c2fcd00b5650b5378275cded362383ef570276e6312f4f
languageName: node
linkType: hard
"varint@npm:^6.0.0":
version: 6.0.0
resolution: "varint@npm:6.0.0"
checksum: 10c0/737fc37088a62ed3bd21466e318d21ca7ac4991d0f25546f518f017703be4ed0f9df1c5559f1dd533dddba4435a1b758fd9230e4772c1a930ef72b42f5c750fd
languageName: node
linkType: hard
"vfile-message@npm:^4.0.0":
version: 4.0.2
resolution: "vfile-message@npm:4.0.2"
dependencies:
"@types/unist": "npm:^3.0.0"
unist-util-stringify-position: "npm:^4.0.0"
checksum: 10c0/07671d239a075f888b78f318bc1d54de02799db4e9dce322474e67c35d75ac4a5ac0aaf37b18801d91c9f8152974ea39678aa72d7198758b07f3ba04fb7d7514
languageName: node
linkType: hard
"vfile@npm:^6.0.0":
version: 6.0.3
resolution: "vfile@npm:6.0.3"
dependencies:
"@types/unist": "npm:^3.0.0"
vfile-message: "npm:^4.0.0"
checksum: 10c0/e5d9eb4810623f23758cfc2205323e33552fb5972e5c2e6587babe08fe4d24859866277404fb9e2a20afb71013860d96ec806cb257536ae463c87d70022ab9ef
languageName: node
linkType: hard
"viewport-mercator-project@npm:>=6.0.0":
version: 7.0.4
resolution: "viewport-mercator-project@npm:7.0.4"
dependencies:
"@math.gl/web-mercator": "npm:^3.5.5"
checksum: 10c0/9a8a12f4bd68355a8162a23d4b161133b45aee71b2453fd8d57f54c55466007428cf502d0c02f58620d4c92ba934c29608613bc3176dd8c1d348f8a9deb34e32
languageName: node
linkType: hard
"viewport-mercator-project@npm:^6.0.0":
version: 6.2.3
resolution: "viewport-mercator-project@npm:6.2.3"
dependencies:
"@babel/runtime": "npm:^7.0.0"
gl-matrix: "npm:^3.0.0"
checksum: 10c0/787b02f89d60c4e71fd1faa9391853502339cc65159b7b3a70c4ee79f232187daad24e0e3694dded836cee9a69a19138981735361c50ac4172c15e4100c1891a
languageName: node
linkType: hard
"vt-pbf@npm:^3.1.1, vt-pbf@npm:^3.1.3":
version: 3.1.3
resolution: "vt-pbf@npm:3.1.3"
dependencies:
"@mapbox/point-geometry": "npm:0.1.0"
"@mapbox/vector-tile": "npm:^1.3.1"
pbf: "npm:^3.2.1"
checksum: 10c0/a568801ae25f0ffe65ef697bf520c996c8a4067f73f355c0d5815238de90322c8ca207c61220206141cfe6f5b525de875b7eb26e22979a1b768b96d03b93dca7
languageName: node
linkType: hard
"warning@npm:^3.0.0":
version: 3.0.0
resolution: "warning@npm:3.0.0"
dependencies:
loose-envify: "npm:^1.0.0"
checksum: 10c0/6a2a56ab3139d3927193d926a027e74e1449fa47cc692feea95f8a81a4bb5b7f10c312def94cce03f3b58cb26ba3247858e75d17d596451d2c483a62e8204705
languageName: node
linkType: hard
"warning@npm:^4.0.0, warning@npm:^4.0.3":
version: 4.0.3
resolution: "warning@npm:4.0.3"
dependencies:
loose-envify: "npm:^1.0.0"
checksum: 10c0/aebab445129f3e104c271f1637fa38e55eb25f968593e3825bd2f7a12bd58dc3738bb70dc8ec85826621d80b4acfed5a29ebc9da17397c6125864d72301b937e
languageName: node
linkType: hard
"web-streams-polyfill@npm:4.0.0-beta.3":
version: 4.0.0-beta.3
resolution: "web-streams-polyfill@npm:4.0.0-beta.3"
checksum: 10c0/a9596779db2766990117ed3a158e0b0e9f69b887a6d6ba0779940259e95f99dc3922e534acc3e5a117b5f5905300f527d6fbf8a9f0957faf1d8e585ce3452e8e
languageName: node
linkType: hard
"webidl-conversions@npm:^3.0.0":
version: 3.0.1
resolution: "webidl-conversions@npm:3.0.1"
checksum: 10c0/5612d5f3e54760a797052eb4927f0ddc01383550f542ccd33d5238cfd65aeed392a45ad38364970d0a0f4fea32e1f4d231b3d8dac4a3bdd385e5cf802ae097db
languageName: node
linkType: hard
"whatwg-fetch@npm:>=0.10.0":
version: 3.6.20
resolution: "whatwg-fetch@npm:3.6.20"
checksum: 10c0/fa972dd14091321d38f36a4d062298df58c2248393ef9e8b154493c347c62e2756e25be29c16277396046d6eaa4b11bd174f34e6403fff6aaca9fb30fa1ff46d
languageName: node
linkType: hard
"whatwg-url@npm:^5.0.0":
version: 5.0.0
resolution: "whatwg-url@npm:5.0.0"
dependencies:
tr46: "npm:~0.0.3"
webidl-conversions: "npm:^3.0.0"
checksum: 10c0/1588bed84d10b72d5eec1d0faa0722ba1962f1821e7539c535558fb5398d223b0c50d8acab950b8c488b4ba69043fd833cc2697056b167d8ad46fac3995a55d5
languageName: node
linkType: hard
"which-boxed-primitive@npm:^1.0.2":
version: 1.0.2
resolution: "which-boxed-primitive@npm:1.0.2"
dependencies:
is-bigint: "npm:^1.0.1"
is-boolean-object: "npm:^1.1.0"
is-number-object: "npm:^1.0.4"
is-string: "npm:^1.0.5"
is-symbol: "npm:^1.0.3"
checksum: 10c0/0a62a03c00c91dd4fb1035b2f0733c341d805753b027eebd3a304b9cb70e8ce33e25317add2fe9b5fea6f53a175c0633ae701ff812e604410ddd049777cd435e
languageName: node
linkType: hard
"which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15, which-typed-array@npm:^1.1.2":
version: 1.1.15
resolution: "which-typed-array@npm:1.1.15"
dependencies:
available-typed-arrays: "npm:^1.0.7"
call-bind: "npm:^1.0.7"
for-each: "npm:^0.3.3"
gopd: "npm:^1.0.1"
has-tostringtag: "npm:^1.0.2"
checksum: 10c0/4465d5348c044032032251be54d8988270e69c6b7154f8fcb2a47ff706fe36f7624b3a24246b8d9089435a8f4ec48c1c1025c5d6b499456b9e5eff4f48212983
languageName: node
linkType: hard
"which@npm:^1.3.1":
version: 1.3.1
resolution: "which@npm:1.3.1"
dependencies:
isexe: "npm:^2.0.0"
bin:
which: ./bin/which
checksum: 10c0/e945a8b6bbf6821aaaef7f6e0c309d4b615ef35699576d5489b4261da9539f70393c6b2ce700ee4321c18f914ebe5644bc4631b15466ffbaad37d83151f6af59
languageName: node
linkType: hard
"which@npm:^2.0.1":
version: 2.0.2
resolution: "which@npm:2.0.2"
dependencies:
isexe: "npm:^2.0.0"
bin:
node-which: ./bin/node-which
checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f
languageName: node
linkType: hard
"which@npm:^5.0.0":
version: 5.0.0
resolution: "which@npm:5.0.0"
dependencies:
isexe: "npm:^3.1.1"
bin:
node-which: bin/which.js
checksum: 10c0/e556e4cd8b7dbf5df52408c9a9dd5ac6518c8c5267c8953f5b0564073c66ed5bf9503b14d876d0e9c7844d4db9725fb0dcf45d6e911e17e26ab363dc3965ae7b
languageName: node
linkType: hard
"wkt-parser@npm:^1.4.0":
version: 1.4.0
resolution: "wkt-parser@npm:1.4.0"
checksum: 10c0/4046fd355ddc626e6ea71f5a05e670bd3d6dc65dc0f8b10f2e9381ea6bd61cb90379389b0fb52337de9330788405dd0590b57e01b2c85f6f471acc794713243b
languageName: node
linkType: hard
"wordwrapjs@npm:^5.1.0":
version: 5.1.0
resolution: "wordwrapjs@npm:5.1.0"
checksum: 10c0/e147162f139eb8c05257729fde586f5422a2d242aa8f027b5fa5adead1b571b455d0690a15c73aeaa31c93ba96864caa06d84ebdb2c32a0890602ab86a7568d1
languageName: node
linkType: hard
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
version: 7.0.0
resolution: "wrap-ansi@npm:7.0.0"
dependencies:
ansi-styles: "npm:^4.0.0"
string-width: "npm:^4.1.0"
strip-ansi: "npm:^6.0.0"
checksum: 10c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da
languageName: node
linkType: hard
"wrap-ansi@npm:^8.1.0":
version: 8.1.0
resolution: "wrap-ansi@npm:8.1.0"
dependencies:
ansi-styles: "npm:^6.1.0"
string-width: "npm:^5.0.1"
strip-ansi: "npm:^7.0.1"
checksum: 10c0/138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60
languageName: node
linkType: hard
"wrappy@npm:1":
version: 1.0.2
resolution: "wrappy@npm:1.0.2"
checksum: 10c0/56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0
languageName: node
linkType: hard
"ws@npm:^5.2.3":
version: 5.2.4
resolution: "ws@npm:5.2.4"
dependencies:
async-limiter: "npm:~1.0.0"
checksum: 10c0/14e84e4209f86ab68b01b9ebf42c88f81f26a64ff4886ef65d27c734c9b90b8d7e84712da3c3f7a922a4ab58bf0b96544d32ae28ebbd620fcda3027dd5bc7604
languageName: node
linkType: hard
"xtend@npm:^4.0.1":
version: 4.0.2
resolution: "xtend@npm:4.0.2"
checksum: 10c0/366ae4783eec6100f8a02dff02ac907bf29f9a00b82ac0264b4d8b832ead18306797e283cf19de776538babfdcb2101375ec5646b59f08c52128ac4ab812ed0e
languageName: node
linkType: hard
"yallist@npm:^4.0.0":
version: 4.0.0
resolution: "yallist@npm:4.0.0"
checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a
languageName: node
linkType: hard
"yallist@npm:^5.0.0":
version: 5.0.0
resolution: "yallist@npm:5.0.0"
checksum: 10c0/a499c81ce6d4a1d260d4ea0f6d49ab4da09681e32c3f0472dee16667ed69d01dae63a3b81745a24bd78476ec4fcf856114cb4896ace738e01da34b2c42235416
languageName: node
linkType: hard
"yaml@npm:^2.3.4":
version: 2.7.0
resolution: "yaml@npm:2.7.0"
bin:
yaml: bin.mjs
checksum: 10c0/886a7d2abbd70704b79f1d2d05fe9fb0aa63aefb86e1cb9991837dced65193d300f5554747a872b4b10ae9a12bc5d5327e4d04205f70336e863e35e89d8f4ea9
languageName: node
linkType: hard
"yargs-parser@npm:^20.2.3":
version: 20.2.9
resolution: "yargs-parser@npm:20.2.9"
checksum: 10c0/0685a8e58bbfb57fab6aefe03c6da904a59769bd803a722bb098bd5b0f29d274a1357762c7258fb487512811b8063fb5d2824a3415a0a4540598335b3b086c72
languageName: node
linkType: hard
"yocto-queue@npm:^0.1.0":
version: 0.1.0
resolution: "yocto-queue@npm:0.1.0"
checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f
languageName: node
linkType: hard
"zip3@npm:^1.0.4":
version: 1.0.4
resolution: "zip3@npm:1.0.4"
checksum: 10c0/28d9cb2efac02d93483ee037dad7f6b1afdc66bc3b5ebae3467f68bf4364f76d8339b1e314b21063bd89f0a5c0bba357faf43ff5bec8ea2683bc27c95c4be2b7
languageName: node
linkType: hard
"zod-to-json-schema@npm:^3.22.3":
version: 3.24.1
resolution: "zod-to-json-schema@npm:3.24.1"
peerDependencies:
zod: ^3.24.1
checksum: 10c0/dd4e72085003e41a3f532bd00061f27041418a4eb176aa6ce33042db08d141bd37707017ee9117d97738ae3f22fc3e1404ea44e6354634ac5da79d7d3173b4ee
languageName: node
linkType: hard
"zod-to-json-schema@npm:^3.24.1":
version: 3.24.5
resolution: "zod-to-json-schema@npm:3.24.5"
peerDependencies:
zod: ^3.24.1
checksum: 10c0/0745b94ba53e652d39f262641cdeb2f75d24339fb6076a38ce55bcf53d82dfaea63adf524ebc5f658681005401687f8e9551c4feca7c4c882e123e66091dfb90
languageName: node
linkType: hard
"zod-validation-error@npm:^2.1.0":
version: 2.1.0
resolution: "zod-validation-error@npm:2.1.0"
peerDependencies:
zod: ^3.18.0
checksum: 10c0/e8e8a0af64092dfb3388d759bf10fb7cf5358bc1bdb365771b8ac1944b1fb014ccbc8e60fbd69627961ea5873c5694e5c3fe730341c9842312fbb91661a1f451
languageName: node
linkType: hard
"zod@npm:^3.22.4":
version: 3.24.1
resolution: "zod@npm:3.24.1"
checksum: 10c0/0223d21dbaa15d8928fe0da3b54696391d8e3e1e2d0283a1a070b5980a1dbba945ce631c2d1eccc088fdbad0f2dfa40155590bf83732d3ac4fcca2cc9237591b
languageName: node
linkType: hard
"zod@npm:^3.24.4":
version: 3.24.4
resolution: "zod@npm:3.24.4"
checksum: 10c0/ab3112f017562180a41a0f83d870b333677f7d6b77f106696c56894567051b91154714a088149d8387a4f50806a2520efcb666f108cd384a35c236a191186d91
languageName: node
linkType: hard
"zrender@npm:5.6.1":
version: 5.6.1
resolution: "zrender@npm:5.6.1"
dependencies:
tslib: "npm:2.3.0"
checksum: 10c0/dc1cc570054640cbd8fbb7b92e6252f225319522bfe3e8dc8bf02cc02d414e00a4c8d0a6f89bfc9d96e5e9511fdca94dd3d06bf53690df2b2f12b0fc560ac307
languageName: node
linkType: hard
"zstd-codec@npm:^0.1":
version: 0.1.5
resolution: "zstd-codec@npm:0.1.5"
checksum: 10c0/8b7e6d9ce86f00fc4ea16c949aab5538505a1f3f1a9c7c095b2a7308b4ed894deec7bdb2c614e1486a337abdce09a6e56282dc0e39fe9f880953b094f8c7810b
languageName: node
linkType: hard
"zwitch@npm:^2.0.0":
version: 2.0.4
resolution: "zwitch@npm:2.0.4"
checksum: 10c0/3c7830cdd3378667e058ffdb4cf2bb78ac5711214e2725900873accb23f3dfe5f9e7e5a06dcdc5f29605da976fc45c26d9a13ca334d6eea2245a15e77b8fc06e
languageName: node
linkType: hard
================================================
FILE: examples/get-started/.yarnrc.yml
================================================
# https://yarnpkg.com/configuration/yarnrc
nodeLinker: node-modules
# Define the registry to use when fetching packages.
npmRegistryServer: 'https://registry.yarnpkg.com'
================================================
FILE: examples/get-started/esbuild.config.mjs
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import esbuild from 'esbuild';
import copyPlugin from 'esbuild-plugin-copy';
import process from 'node:process';
import fs from 'node:fs';
import {spawn} from 'node:child_process';
const args = process.argv;
const port = 8080;
const config = {
platform: 'browser',
format: 'iife',
logLevel: 'info',
loader: {'.js': 'jsx', '.css': 'css'},
entryPoints: ['src/app.tsx'],
outfile: 'dist/bundle.js',
bundle: true,
define: {
NODE_ENV: JSON.stringify(process.env.NODE_ENV || 'production'),
'process.env.MapboxAccessToken': JSON.stringify(process.env.MapboxAccessToken || ''),
'process.env.DropboxClientId': JSON.stringify(process.env.DropboxClientId || ''),
'process.env.MapboxExportToken': JSON.stringify(process.env.MapboxExportToken || ''),
'process.env.CartoClientId': JSON.stringify(process.env.CartoClientId || ''),
'process.env.FoursquareClientId': JSON.stringify(process.env.FoursquareClientId || ''),
'process.env.FoursquareDomain': JSON.stringify(process.env.FoursquareDomain || ''),
'process.env.FoursquareAPIURL': JSON.stringify(process.env.FoursquareAPIURL || ''),
'process.env.FoursquareUserMapsURL': JSON.stringify(process.env.FoursquareUserMapsURL || ''),
'process.env.OpenAIToken': JSON.stringify(process.env.OpenAIToken || ''),
'process.env.NODE_DEBUG': JSON.stringify(false)
},
plugins: [
copyPlugin({
resolveFrom: 'cwd',
assets: {
from: ['src/index.html'],
to: ['dist']
}
})
]
};
function openURL(url) {
const cmd = {
darwin: ['open'],
linux: ['xdg-open'],
win32: ['cmd', '/c', 'start']
};
const command = cmd[process.platform];
if (command) {
spawn(command[0], [...command.slice(1), url]);
}
}
(async () => {
if (args.includes('--build')) {
const result = await esbuild
.build({
...config,
minify: true,
sourcemap: false,
metafile: true
})
.catch(e => {
console.error(e);
process.exit(1);
});
fs.writeFileSync('dist/esbuild-metadata.json', JSON.stringify(result.metafile));
}
if (args.includes('--start')) {
await esbuild
.context({
...config,
minify: false,
sourcemap: true,
banner: {
js: `new EventSource('/esbuild').addEventListener('change', () => location.reload());`
}
})
.then(async ctx => {
await ctx.watch();
await ctx.serve({
servedir: 'dist',
port,
fallback: 'dist/index.html',
onRequest: ({remoteAddress, method, path, status, timeInMS}) => {
console.info(remoteAddress, status, `"${method} ${path}" [${timeInMS}ms]`);
}
});
console.info(
`kepler.gl demo app running at ${`http://localhost:${port}`}, press Ctrl+C to stop`
);
openURL(`http://localhost:${port}`);
})
.catch(e => {
console.error(e);
process.exit(1);
});
}
})();
================================================
FILE: examples/get-started/package.json
================================================
{
"name": "kepler-app-esbuild",
"version": "0.0.1",
"license": "MIT",
"scripts": {
"bootstrap": "yarn install && yarn",
"build": "node esbuild.config.mjs --build",
"start": "node esbuild.config.mjs --start"
},
"dependencies": {
"@kepler.gl/components": "^3.1.10",
"@kepler.gl/reducers": "^3.1.10",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-redux": "^8.0.5",
"react-scripts": "^5.0.1"
},
"devDependencies": {
"@types/mapbox-gl": "^2.7.10",
"@types/node": "^18.15.3",
"@types/react": "^18.0.28",
"@types/react-dom": "^18.0.11",
"assert": "^2.1.0",
"axios": "^1.3.4",
"esbuild": "^0.25.0",
"esbuild-plugin-copy": "^2.1.1",
"html-loader": "^4.2.0",
"ts-loader": "^9.4.2",
"ts-node": "^10.9.1",
"typescript": "^4.9.5"
}
}
================================================
FILE: examples/get-started/src/app.tsx
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import * as React from 'react';
import ReactDOM from 'react-dom/client';
import {connect, Provider} from 'react-redux';
import AutoSizer from 'react-virtualized/dist/commonjs/AutoSizer';
import {applyMiddleware, combineReducers, compose, createStore} from 'redux';
import document from 'global/document';
import keplerGlReducer, {enhanceReduxMiddleware} from '@kepler.gl/reducers';
import KeplerGl from '@kepler.gl/components';
const reducers = combineReducers({
keplerGl: keplerGlReducer.initialState({
uiState: {
readOnly: false,
currentModal: null
}
})
});
const middleWares = enhanceReduxMiddleware([
// Add other middlewares here
]);
const enhancers = applyMiddleware(...middleWares);
const initialState = {};
const store = createStore(reducers, initialState, compose(enhancers));
const App = () => (
{({height, width}) => (
)}
);
const mapStateToProps = state => state;
const dispatchToProps = dispatch => ({dispatch});
const ConnectedApp = connect(mapStateToProps, dispatchToProps)(App);
const Root = () => (
);
const container = document.getElementById('root');
const root = ReactDOM.createRoot(container);
root.render( );
================================================
FILE: examples/get-started/src/index.html
================================================
Get Started
================================================
FILE: examples/get-started/tsconfig.json
================================================
{
"compilerOptions": {
"sourceMap": true,
"module": "commonjs",
"target": "es5",
"jsx": "react",
"esModuleInterop": true
},
"include": ["src"],
"compileOnSave": false
}
================================================
FILE: examples/get-started-vite/README.md
================================================
# Kepler.gl with Vite
This example uses [Kepler.gl](https://kepler.gl/) with Vite as the build tool.
## Development
### Installation
```bash
# Install dependencies
yarn install
```
### Development Server
To start the development server with hot module replacement:
```bash
yarn dev
```
### Production Build
To create a production build and preview it:
```bash
# Create production build
yarn build
# Preview production build
yarn preview
```
================================================
FILE: examples/get-started-vite/eslint.config.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import js from '@eslint/js';
import globals from 'globals';
import reactHooks from 'eslint-plugin-react-hooks';
import reactRefresh from 'eslint-plugin-react-refresh';
import tseslint from 'typescript-eslint';
export default tseslint.config(
{ignores: ['dist']},
{
extends: [js.configs.recommended, ...tseslint.configs.recommended],
files: ['**/*.{ts,tsx}'],
languageOptions: {
ecmaVersion: 2020,
globals: globals.browser
},
plugins: {
'react-hooks': reactHooks,
'react-refresh': reactRefresh
},
rules: {
...reactHooks.configs.recommended.rules,
'react-refresh/only-export-components': ['warn', {allowConstantExport: true}]
}
}
);
================================================
FILE: examples/get-started-vite/index.html
================================================
Kepler + Vite
================================================
FILE: examples/get-started-vite/package.json
================================================
{
"name": "kepler-app-vite",
"version": "0.0.1",
"license": "MIT",
"scripts": {
"dev": "vite",
"build": "tsc -b && vite build",
"preview": "vite preview"
},
"dependencies": {
"@babel/runtime": "^7.12.1",
"@deck.gl/aggregation-layers": "^8.9.27",
"@deck.gl/core": "^8.9.27",
"@deck.gl/extensions": "^8.9.27",
"@deck.gl/geo-layers": "^8.9.27",
"@deck.gl/layers": "^8.9.27",
"@deck.gl/mesh-layers": "^8.9.27",
"@dnd-kit/core": "^6.1.0",
"@dnd-kit/modifiers": "^7.0.0",
"@dnd-kit/sortable": "^8.0.0",
"@kepler.gl/components": "3.1.7",
"@kepler.gl/reducers": "3.1.7",
"@loaders.gl/arrow": "4.3.2",
"@loaders.gl/core": "4.3.2",
"@loaders.gl/gltf": "4.3.2",
"@loaders.gl/images": "4.3.2",
"@loaders.gl/mvt": "4.3.2",
"@loaders.gl/parquet": "4.3.2",
"@loaders.gl/pmtiles": "4.3.2",
"@luma.gl/core": "8.5.21",
"@luma.gl/engine": "8.5.21",
"@luma.gl/gltools": "8.5.21",
"@luma.gl/shadertools": "8.5.21",
"@luma.gl/webgl": "8.5.21",
"@math.gl/core": "^4.0.0",
"@math.gl/web-mercator": "^3.6.2",
"apache-arrow": "17.0.0",
"gl-matrix": "^3.4.3",
"lodash": "4.17.21",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-redux": "^8.0.5",
"react-scripts": "^5.0.1",
"react-virtualized": "^9.22.5",
"redux": "^4.2.1"
},
"devDependencies": {
"@eslint/js": "^9.25.0",
"@types/lodash.uniq": "^4",
"@types/node": "^22.15.21",
"@types/react": "^19.1.2",
"@types/react-dom": "^19.1.2",
"@vitejs/plugin-react": "^4.4.1",
"eslint": "^9.25.0",
"eslint-plugin-react-hooks": "^5.2.0",
"eslint-plugin-react-refresh": "^0.4.19",
"globals": "^16.0.0",
"typescript": "~5.8.3",
"typescript-eslint": "^8.30.1",
"vite": "^6.3.5",
"vite-plugin-wasm": "^3.4.1"
},
"resolutions": {
"apache-arrow": "17.0.0"
}
}
================================================
FILE: examples/get-started-vite/src/main.tsx
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React, {Dispatch} from 'react';
import ReactDOM from 'react-dom/client';
import {connect, Provider} from 'react-redux';
import {applyMiddleware, combineReducers, compose, createStore} from 'redux';
import KeplerGl from '@kepler.gl/components';
import keplerGlReducer, {enhanceReduxMiddleware, KeplerGlState} from '@kepler.gl/reducers';
import AutoSizer from 'react-virtualized/dist/commonjs/AutoSizer';
// create reducers
const reducers = combineReducers({
// mount keplerGl reducer
keplerGl: keplerGlReducer.initialState({
uiState: {
readOnly: false,
currentModal: null
}
})
});
// create middlewares
const middleWares = enhanceReduxMiddleware([
// Add other middlewares here
]);
// craeteEnhancers
const enhancers = applyMiddleware(...middleWares);
// create store
const initialState = {};
const store = createStore(reducers, initialState, compose(enhancers));
const App = () => (
{({height, width}) => (
)}
);
const mapStateToProps = (state: KeplerGlState) => state;
const dispatchToProps = (dispatch: Dispatch) => ({dispatch});
const ConnectedApp = connect(mapStateToProps, dispatchToProps)(App);
const Root = () => (
);
const container = document.getElementById('root');
if (container) {
const root = ReactDOM.createRoot(container);
root.render( );
}
================================================
FILE: examples/get-started-vite/tsconfig.json
================================================
{
"compilerOptions": {
"target": "ESNext",
"useDefineForClassFields": true,
"lib": ["DOM", "DOM.Iterable", "ESNext"],
"allowJs": false,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "ESNext",
"moduleResolution": "bundler",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx",
"types": ["node"]
},
"include": ["src"],
"references": [{ "path": "./tsconfig.node.json" }]
}
================================================
FILE: examples/get-started-vite/tsconfig.node.json
================================================
{
"compilerOptions": {
"composite": true,
"skipLibCheck": true,
"module": "ESNext",
"moduleResolution": "bundler",
"allowSyntheticDefaultImports": true,
"strict": true
},
"include": ["vite.config.ts"]
}
================================================
FILE: examples/get-started-vite/vite.config.ts
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {defineConfig} from 'vite';
import react from '@vitejs/plugin-react';
import wasm from 'vite-plugin-wasm';
import {resolve} from 'path';
// https://vitejs.dev/config/
export default defineConfig({
plugins: [wasm(), react()],
server: {
port: 8081,
open: true
},
build: {
outDir: 'dist',
sourcemap: false,
minify: true,
rollupOptions: {
input: {
main: resolve(__dirname, 'index.html')
}
},
target: 'esnext',
commonjsOptions: {
include: [/node_modules/],
transformMixedEsModules: true
}
},
define: {
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'production'),
'process.env.MapboxAccessToken': JSON.stringify(process.env.MapboxAccessToken || ''),
'process.env.DropboxClientId': JSON.stringify(process.env.DropboxClientId || ''),
'process.env.MapboxExportToken': JSON.stringify(process.env.MapboxExportToken || ''),
'process.env.CartoClientId': JSON.stringify(process.env.CartoClientId || ''),
'process.env.FoursquareClientId': JSON.stringify(process.env.FoursquareClientId || ''),
'process.env.FoursquareDomain': JSON.stringify(process.env.FoursquareDomain || ''),
'process.env.FoursquareAPIURL': JSON.stringify(process.env.FoursquareAPIURL || ''),
'process.env.FoursquareUserMapsURL': JSON.stringify(process.env.FoursquareUserMapsURL || ''),
'process.env.OpenAIToken': JSON.stringify(process.env.OpenAIToken || ''),
'process.env.NODE_DEBUG': JSON.stringify(false)
},
resolve: {
dedupe: ['styled-components'],
alias: {
'@': resolve(__dirname, './src')
}
},
optimizeDeps: {
exclude: ['parquet-wasm', '@loaders.gl/parquet', 'apache-arrow'],
include: [
'buffer',
'react',
'react-dom',
'react-redux',
'redux',
'styled-components',
'@kepler.gl/components',
'@kepler.gl/reducers',
'@kepler.gl/actions',
'@kepler.gl/constants',
'@kepler.gl/utils',
'@kepler.gl/schemas',
'@kepler.gl/table',
'@kepler.gl/layers',
'@kepler.gl/deckgl-layers',
'@kepler.gl/effects',
'@kepler.gl/styles',
'@kepler.gl/tasks',
'@deck.gl/core',
'@deck.gl/layers',
'@deck.gl/aggregation-layers',
'@deck.gl/geo-layers',
'@deck.gl/mesh-layers',
'@deck.gl/extensions',
'@luma.gl/core',
'@luma.gl/engine',
'@luma.gl/gltools',
'@luma.gl/shadertools',
'@luma.gl/webgl',
'@loaders.gl/core',
'@loaders.gl/gltf',
'@loaders.gl/images',
'@loaders.gl/parquet',
'@math.gl/core',
'@math.gl/web-mercator',
'gl-matrix',
'lodash.uniq'
],
esbuildOptions: {
target: 'es2020'
}
}
});
================================================
FILE: examples/node-app/.babelrc
================================================
{
"presets": [
"@babel/preset-env",
"@babel/preset-react",
"@babel/preset-typescript"
],
"plugins": [
"@babel/plugin-transform-modules-commonjs",
"@babel/plugin-transform-class-properties",
"@babel/plugin-transform-optional-chaining",
"@babel/plugin-transform-logical-assignment-operators",
"@babel/plugin-transform-nullish-coalescing-operator",
"@babel/plugin-transform-export-namespace-from"
]
}
================================================
FILE: examples/node-app/README.md
================================================
# Node/Express
This example shows how to embed Kepler.gl in a node/express/webpack application.
#### 1. Install
```sh
yarn
```
#### 2. Mapbox Token
add mapbox access token to node env
```sh
export MapboxAccessToken=
```
#### 3. Start the app
```sh
yarn start
```
================================================
FILE: examples/node-app/esbuild.config.mjs
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import esbuild from 'esbuild';
import {replace} from 'esbuild-plugin-replace';
import {dotenvRun} from '@dotenv-run/esbuild';
import copyPlugin from 'esbuild-plugin-copy';
import process from 'node:process';
import fs from 'node:fs';
import {spawn} from 'node:child_process';
import {join} from 'node:path';
const args = process.argv;
const port = 3000;
const NODE_ENV = JSON.stringify(process.env.NODE_ENV || 'production');
// Ensure a single instance of React and friends to avoid invalid hook calls
const ROOT_NODE_MODULES = join('..', '..', 'node_modules');
const thirdPartyAliases = {
react: join(ROOT_NODE_MODULES, 'react'),
'react-dom': join(ROOT_NODE_MODULES, 'react-dom'),
'react-redux': join(ROOT_NODE_MODULES, 'react-redux', 'lib'),
'styled-components': join(ROOT_NODE_MODULES, 'styled-components'),
'apache-arrow': join(ROOT_NODE_MODULES, 'apache-arrow')
};
const config = {
platform: 'browser',
format: 'iife',
logLevel: 'info',
loader: {
'.js': 'jsx',
'.css': 'css',
'.ttf': 'file',
'.woff': 'file',
'.woff2': 'file'
},
entryPoints: ['src/main.js'],
outfile: 'dist/bundle.js',
bundle: true,
define: {
NODE_ENV,
'process.env.MapboxAccessToken': JSON.stringify(process.env.MapboxAccessToken || '')
},
plugins: [
dotenvRun({
verbose: true,
environment: NODE_ENV,
root: '../../.env'
}),
replace({
__PACKAGE_VERSION__: '3.1.10',
include: /constants\/src\/default-settings\.ts/
}),
copyPlugin({
resolveFrom: 'cwd',
assets: {
from: ['index.html'],
to: ['dist/index.html']
}
})
]
};
function openURL(url) {
const cmd = {
darwin: ['open'],
linux: ['xdg-open'],
win32: ['cmd', '/c', 'start']
};
const command = cmd[process.platform];
if (command) {
spawn(command[0], [...command.slice(1), url]);
}
}
(async () => {
if (args.includes('--build')) {
const result = await esbuild
.build({
...config,
alias: thirdPartyAliases,
minify: true,
sourcemap: false,
metafile: true,
define: {
...config.define,
'process.env.NODE_ENV': '"production"'
},
drop: ['console', 'debugger'],
treeShaking: true
})
.catch(e => {
console.error(e);
process.exit(1);
});
fs.writeFileSync('dist/esbuild-metadata.json', JSON.stringify(result.metafile));
}
if (args.includes('--start')) {
await esbuild
.context({
...config,
alias: thirdPartyAliases,
minify: false,
sourcemap: true,
banner: {
js: `new EventSource('/esbuild').addEventListener('change', () => location.reload());`
}
})
.then(async ctx => {
await ctx.watch();
await ctx.serve({
servedir: 'dist',
port,
fallback: 'dist/index.html',
onRequest: ({remoteAddress, method, path, status, timeInMS}) => {
console.info(remoteAddress, status, `"${method} ${path}" [${timeInMS}ms]`);
}
});
console.info(`kepler.gl node-app example running at ${`http://localhost:${port}`}`);
openURL(`http://localhost:${port}`);
})
.catch(e => {
console.error(e);
process.exit(1);
});
}
})();
================================================
FILE: examples/node-app/index.html
================================================
kepler.gl demo
================================================
FILE: examples/node-app/package.json
================================================
{
"scripts": {
"start": "node esbuild.config.mjs --start",
"build": "node esbuild.config.mjs --build",
"start-local": "NODE_ENV=local node esbuild.config.mjs --start"
},
"dependencies": {
"@kepler.gl/components": "^3.1.10",
"@kepler.gl/reducers": "^3.1.10",
"express": "^4.17.1",
"global": "^4.3.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-palm": "^3.3.6",
"react-redux": "^8.0.5",
"react-virtualized": "^9.21.0",
"redux-actions": "^2.2.1",
"styled-components": "6.1.8"
},
"devDependencies": {
"@dotenv-run/esbuild": "^1.5.0",
"esbuild": "^0.25.0",
"esbuild-plugin-copy": "^2.1.1",
"esbuild-plugin-replace": "^1.4.0"
}
}
================================================
FILE: examples/node-app/server.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
const express = require('express');
const path = require('path');
const ADDRESS = '0.0.0.0';
const PORT = process.env.PORT || 3000;
const app = express();
// Serve static files from dist
app.use(express.static(path.join(__dirname, 'dist')));
// Always return index.html for any route (SPA)
app.get('*', function response(req, res) {
res.sendFile(path.join(__dirname, 'dist', 'index.html'));
});
/* eslint-disable no-console */
app.listen(PORT, ADDRESS, function onStart(err) {
if (err) {
console.error(err);
return;
}
console.info(`==> 🌎 Listening on port ${PORT}. Open up http://${ADDRESS}:${PORT}/`);
});
/* eslint-enable no-console */
================================================
FILE: examples/node-app/src/app-reducer.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {createAction, handleActions} from 'redux-actions';
// CONSTANTS
export const INIT = 'INIT';
// ACTIONS
export const appInit = createAction(INIT);
// INITIAL_STATE
const initialState = {
appName: 'example',
loaded: false
};
// REDUCER
const appReducer = handleActions(
{
[INIT]: state => ({
...state,
loaded: true
})
},
initialState
);
export default appReducer;
================================================
FILE: examples/node-app/src/app.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React from 'react';
import {connect} from 'react-redux';
import AutoSizer from 'react-virtualized/dist/commonjs/AutoSizer';
import styled from 'styled-components';
import KeplerGl from '@kepler.gl/components';
const MAPBOX_TOKEN = process.env.MapboxAccessToken; // eslint-disable-line
const StyledWrapper = styled.div`
position: absolute;
width: 100vw;
height: 100vh;
`;
const App = () => (
{({height, width}) => (
)}
);
const mapStateToProps = state => state;
const dispatchToProps = dispatch => ({dispatch});
export default connect(mapStateToProps, dispatchToProps)(App);
================================================
FILE: examples/node-app/src/main.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React from 'react';
import ReactDOM from 'react-dom/client';
import document from 'global/document';
import Modal from 'react-modal';
import {Provider} from 'react-redux';
import store from './store';
import App from './app';
Modal.setAppElement('#root');
const Root = () => (
);
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render( );
================================================
FILE: examples/node-app/src/store.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {createStore, combineReducers, applyMiddleware, compose} from 'redux';
import keplerGlReducer, {enhanceReduxMiddleware} from '@kepler.gl/reducers';
import appReducer from './app-reducer';
const reducers = combineReducers({
keplerGl: keplerGlReducer,
app: appReducer
});
const middlewares = enhanceReduxMiddleware([]);
const enhancers = [applyMiddleware(...middlewares)];
export default createStore(reducers, {}, compose(...enhancers));
================================================
FILE: examples/open-modal/.babelrc
================================================
{
"presets": [
"@babel/preset-env",
"@babel/preset-react",
"@babel/preset-typescript"
],
"plugins": [
"@babel/plugin-transform-modules-commonjs",
"@babel/plugin-transform-class-properties",
"@babel/plugin-transform-optional-chaining",
"@babel/plugin-transform-logical-assignment-operators",
"@babel/plugin-transform-nullish-coalescing-operator",
"@babel/plugin-transform-export-namespace-from"
]
}
================================================
FILE: examples/open-modal/README.md
================================================
# Open modal
Example showing how to open kepler.gl in a modal.
#### 1. Install
```sh
yarn
```
#### 2. Mapbox Token
add mapbox access token to node env
```sh
export MapboxAccessToken=
```
#### 3. Start the app
```sh
yarn start
```
================================================
FILE: examples/open-modal/esbuild.config.mjs
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import esbuild from 'esbuild';
import {replace} from 'esbuild-plugin-replace';
import {dotenvRun} from '@dotenv-run/esbuild';
import copyPlugin from 'esbuild-plugin-copy';
import process from 'node:process';
import fs from 'node:fs';
import {spawn} from 'node:child_process';
import {join} from 'node:path';
const args = process.argv;
const port = 8080;
const NODE_ENV = JSON.stringify(process.env.NODE_ENV || 'production');
// Ensure a single instance of React and friends to avoid invalid hook calls
const ROOT_NODE_MODULES = join('..', '..', 'node_modules');
const thirdPartyAliases = {
react: join(ROOT_NODE_MODULES, 'react'),
'react-dom': join(ROOT_NODE_MODULES, 'react-dom'),
'react-redux': join(ROOT_NODE_MODULES, 'react-redux', 'lib'),
'styled-components': join(ROOT_NODE_MODULES, 'styled-components'),
'apache-arrow': join(ROOT_NODE_MODULES, 'apache-arrow')
};
const config = {
platform: 'browser',
format: 'iife',
logLevel: 'info',
loader: {
'.js': 'jsx',
'.css': 'css',
'.ttf': 'file',
'.woff': 'file',
'.woff2': 'file'
},
entryPoints: ['src/main.js'],
outfile: 'dist/bundle.js',
bundle: true,
define: {
NODE_ENV,
'process.env.MapboxAccessToken': JSON.stringify(process.env.MapboxAccessToken || '')
},
plugins: [
dotenvRun({
verbose: true,
environment: NODE_ENV,
root: '../../.env'
}),
replace({
__PACKAGE_VERSION__: '3.1.10',
include: /constants\/src\/default-settings\.ts/
}),
copyPlugin({
resolveFrom: 'cwd',
assets: {
from: ['index.html'],
to: ['dist/index.html']
}
})
]
};
function openURL(url) {
const cmd = {
darwin: ['open'],
linux: ['xdg-open'],
win32: ['cmd', '/c', 'start']
};
const command = cmd[process.platform];
if (command) {
spawn(command[0], [...command.slice(1), url]);
}
}
(async () => {
if (args.includes('--start')) {
await esbuild
.context({
...config,
alias: thirdPartyAliases,
minify: false,
sourcemap: true,
banner: {
js: `new EventSource('/esbuild').addEventListener('change', () => location.reload());`
}
})
.then(async ctx => {
await ctx.watch();
await ctx.serve({
servedir: 'dist',
port,
fallback: 'dist/index.html',
onRequest: ({remoteAddress, method, path, status, timeInMS}) => {
console.info(remoteAddress, status, `"${method} ${path}" [${timeInMS}ms]`);
}
});
console.info(`kepler.gl open-modal example running at ${`http://localhost:${port}`}`);
openURL(`http://localhost:${port}`);
})
.catch(e => {
console.error(e);
process.exit(1);
});
}
})();
================================================
FILE: examples/open-modal/index.html
================================================
kepler.gl demo
================================================
FILE: examples/open-modal/package.json
================================================
{
"scripts": {
"start": "node esbuild.config.mjs --start",
"start-local": "NODE_ENV=local node esbuild.config.mjs --start"
},
"dependencies": {
"@kepler.gl/actions": "^3.1.9",
"@kepler.gl/components": "^3.1.9",
"@kepler.gl/reducers": "^3.1.9",
"global": "^4.3.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-modal": "^3.1.10",
"react-palm": "^3.3.6",
"react-redux": "^8.0.5",
"react-virtualized": "^9.21.0",
"redux-actions": "^2.2.1",
"styled-components": "6.1.8"
},
"devDependencies": {
"@dotenv-run/esbuild": "^1.5.0",
"esbuild": "^0.25.0",
"esbuild-plugin-copy": "^2.1.1",
"esbuild-plugin-replace": "^1.4.0"
}
}
================================================
FILE: examples/open-modal/src/app-reducer.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {createAction, handleActions} from 'redux-actions';
// CONSTANTS
export const INIT = 'INIT';
export const SHOW_MODAL = 'SHOW_MODAL';
// ACTIONS
export const appInit = createAction(INIT);
export const showModal = createAction(SHOW_MODAL);
// INITIAL_STATE
const initialState = {
appName: 'example',
loaded: false,
modal: null
};
// REDUCER
const appReducer = handleActions(
{
[INIT]: state => ({
...state,
loaded: true
}),
[SHOW_MODAL]: (state, action) => ({
...state,
modal: action.payload
})
},
initialState
);
export default appReducer;
================================================
FILE: examples/open-modal/src/app.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React, {Component} from 'react';
import {connect} from 'react-redux';
import {addDataToMap, wrapTo} from '@kepler.gl/actions';
import Modal from 'react-modal';
import {showModal} from './app-reducer';
import sampleData from './data/sample-data';
import FreshMap from './components/fresh-map';
import SavedMap from './components/saved-map';
const MAPBOX_TOKEN = process.env.MapboxAccessToken; // eslint-disable-line
class App extends Component {
componentDidUpdate(prevProps) {
if (!prevProps.keplerGl.bar && this.props.keplerGl.bar) {
this.props.dispatch(
wrapTo(
'bar',
addDataToMap({
datasets: sampleData,
options: {
centerMap: true
},
config: {
mapStyle: {
styleType: 'light'
}
}
})
)
);
}
}
_closeModal = () => {
this.props.dispatch(showModal(null));
};
_openModal = id => {
this.props.dispatch(showModal(id));
};
render() {
const {
app: {modal}
} = this.props;
return (
this._openModal('foo')}>Show Kepler.gl id: foo
this._openModal('bar')}>Show Kepler.gl id: bar
This Kepler.gl component will always load a fresh state when re mounted, state inside
this component will be destroyed once its unmounted.
Close
By passing in mint: false, This Kepler.gl instance will keep the state of "bar" even when
it is unmounted.
Close
);
}
}
const mapStateToProps = state => state;
const dispatchToProps = dispatch => ({dispatch});
export default connect(mapStateToProps, dispatchToProps)(App);
================================================
FILE: examples/open-modal/src/components/fresh-map.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React, {Component} from 'react';
import AutoSizer from 'react-virtualized/dist/commonjs/AutoSizer';
import {addDataToMap, wrapTo} from '@kepler.gl/actions';
import KeplerGl from '@kepler.gl/components';
import sampleData from '../data/sample-data';
import config from '../configurations/config';
export default class FreshMap extends Component {
componentDidMount() {
this.props.dispatch(
wrapTo(
this.props.id,
addDataToMap({
datasets: sampleData,
options: {
centerMap: true
},
config
})
)
);
}
render() {
const {mapboxApiAccessToken, id} = this.props;
return (
{({height, width}) => (
)}
);
}
}
================================================
FILE: examples/open-modal/src/components/saved-map.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React, {Component} from 'react';
import AutoSizer from 'react-virtualized/dist/commonjs/AutoSizer';
import KeplerGl from '@kepler.gl/components';
export default class SavedMap extends Component {
render() {
const {mapboxApiAccessToken, id} = this.props;
return (
{({height, width}) => (
)}
);
}
}
================================================
FILE: examples/open-modal/src/configurations/config.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
export default {
version: 'v1',
config: {
visState: {
filters: [],
layers: [
{
id: '1s8r5md',
type: 'point',
config: {
dataId: 'tree_data',
label: 'location',
color: [18, 147, 154],
columns: {
lat: 'Location_latitude',
lng: 'Location_longitude',
altitude: null
},
isVisible: true,
visConfig: {
radius: 10,
fixedRadius: false,
opacity: 0.8,
outline: false,
thickness: 2,
colorRange: {
name: 'Ice And Fire',
type: 'diverging',
category: 'Uber',
colors: ['#D50255', '#FEAD54', '#FEEDB1', '#E8FEB5', '#49E3CE', '#0198BD'],
reversed: true
},
radiusRange: [33.6, 96.2],
'hi-precision': false
}
},
visualChannels: {
colorField: {
name: 'Species',
type: 'string'
},
colorScale: 'ordinal',
sizeField: {
name: 'Age',
type: 'integer'
},
sizeScale: 'sqrt'
}
},
{
id: '7otjdz',
type: 'hexagon',
config: {
dataId: 'tree_data',
label: 'Density',
color: [23, 184, 190],
columns: {
lat: 'Location_latitude',
lng: 'Location_longitude'
},
isVisible: true,
visConfig: {
opacity: 0.2,
worldUnitSize: 0.8,
resolution: 8,
colorRange: {
name: 'ColorBrewer GnBu-6',
type: 'sequential',
category: 'ColorBrewer',
colors: ['#f0f9e8', '#ccebc5', '#a8ddb5', '#7bccc4', '#43a2ca', '#0868ac'],
reversed: false
},
coverage: 1,
sizeRange: [0, 500],
percentile: [0, 100],
elevationPercentile: [0, 100],
elevationScale: 5,
'hi-precision': false,
colorAggregation: 'average',
sizeAggregation: 'average',
enable3d: false
}
},
visualChannels: {
colorField: null,
colorScale: 'quantile',
sizeField: null,
sizeScale: 'linear'
}
}
],
interactionConfig: {
tooltip: {
fieldsToShow: {
tree_data: ['TreeID', 'Species', 'Address', 'Has_Species', 'SiteInfo']
},
enabled: true
},
brush: {
size: 0.5,
enabled: false
},
geocoder: {
enabled: false
}
},
layerBlending: 'normal',
splitMaps: []
},
mapState: {
bearing: 0,
dragRotate: false,
latitude: 37.76544453921235,
longitude: -122.46289885132524,
pitch: 0,
zoom: 12.032736770460689,
isSplit: false
},
mapStyle: {
styleType: 'light',
topLayerGroups: {
label: true
},
visibleLayerGroups: {
label: true,
road: true,
border: false,
building: true,
water: true,
land: true
}
}
}
};
================================================
FILE: examples/open-modal/src/data/sample-data.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
export default {
info: {
label: 'San Francisco Trees',
id: 'tree_data'
},
data: {
fields: [
{
name: 'TreeID'
},
{
name: 'Species'
},
{
name: 'Address'
},
{
name: 'Has_Species'
},
{
name: 'SiteInfo'
},
{
name: 'PlantType'
},
{
name: 'PlantDate'
},
{
name: 'Plan'
},
{
name: 'Age'
},
{
name: 'DBH'
},
{
name: 'Location_latitude'
},
{
name: 'Location_longitude'
}
],
rows: [
[
141565,
'Myoporum laetum :: Myoporum',
'501X Baker St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'7/21/88 0:00',
1988,
29,
21,
37.77596769,
-122.4413967
],
[
232565,
'Metrosideros excelsa :: New Zealand Xmas Tree',
'940 Elizabeth St',
false,
'Sidewalk: Curb side : Yard',
'Tree',
'3/20/17 0:00',
2017,
0,
3,
37.75171022,
-122.441498
],
[
119263,
'Pinus radiata :: Monterey Pine',
'495X Lakeshore Dr',
false,
'Median : Yard',
'Tree',
null,
null,
null,
null,
null,
null
],
[
207368,
'Ligustrum japonicum :: Japanese Privet',
'920 Kirkham St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
6,
37.76021031,
-122.4707394
],
[
188702,
'Acacia melanoxylon :: Blackwood Acacia',
'1501 Evans Ave',
false,
':',
'Tree',
null,
null,
null,
17,
37.74220867,
-122.3872932
],
[
141566,
'Myoporum laetum :: Myoporum',
'501X Baker St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
14,
37.77570453,
-122.4414629
],
[
188697,
'Acacia melanoxylon :: Blackwood Acacia',
'1301 Evans Ave',
false,
':',
'Tree',
null,
null,
null,
15,
37.73973386,
-122.3829339
],
[
122650,
'Acer rubrum :: Red Maple',
'300x Hickory St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'11/10/16 0:00',
2016,
1,
3,
null,
null
],
[
203507,
'Agonis flexuosa :: Peppermint Willow',
'920 Kirkham St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
23,
37.76018051,
-122.4708661
],
[
122670,
'Lyonothamnus floribundus subsp. asplenifolius :: Santa Cruz Ironwood',
'301x Hickory St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'11/10/16 0:00',
2016,
1,
3,
null,
null
],
[
122658,
'Acer rubrum :: Red Maple',
'300x Hickory St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'11/10/16 0:00',
2016,
1,
3,
null,
null
],
[
122660,
'Acer rubrum :: Red Maple',
'300x Hickory St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'11/10/16 0:00',
2016,
1,
3,
null,
null
],
[
122648,
'Acer rubrum :: Red Maple',
'300x Hickory St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'11/10/16 0:00',
2016,
1,
3,
null,
null
],
[
196590,
'Pyrus calleryana :: Ornamental Pear',
'43 Lafayette St',
false,
':',
'Tree',
null,
null,
null,
10,
37.77303718,
-122.4172458
],
[
196591,
'Pyrus calleryana :: Ornamental Pear',
'43 Lafayette St',
false,
':',
'Tree',
null,
null,
null,
13,
37.77305251,
-122.4172809
],
[
122649,
'Acer rubrum :: Red Maple',
'300x Hickory St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'11/10/16 0:00',
2016,
1,
3,
null,
null
],
[
145278,
'Fraxinus uhdei :: Shamel Ash: Evergreen Ash',
'730 11th Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/20/17 0:00',
2017,
0,
0,
37.77448101,
-122.4691091
],
[
96369,
'Lophostemon confertus :: Brisbane Box',
'168 Cervantes Blvd',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'8/9/11 0:00',
2011,
6,
24,
37.80468521,
-122.4402315
],
[
182260,
"Arbutus 'Marina' :: Hybrid Strawberry Tree",
'1471 28th Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
5,
37.75995923,
-122.4866885
],
[
251179,
'Podocarpus gracilor :: Fern Pine',
'1043 Minna St',
false,
'Sidewalk: Property side : Cutout',
'Tree',
null,
null,
null,
null,
37.77353367,
-122.4169045
],
[
251178,
'Podocarpus gracilor :: Fern Pine',
'1043 Minna St',
false,
'Sidewalk: Property side : Cutout',
'Tree',
null,
null,
null,
null,
37.77353367,
-122.4169045
],
[
203506,
'Agonis flexuosa :: Peppermint Willow',
'910 Kirkham St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
15,
37.76026555,
-122.4705695
],
[
52566,
'Hakea suaveolens :: Sweet Hakea Tree',
'1555 40th Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'1/12/16 0:00',
2016,
1,
2,
37.75778273,
-122.4993677
],
[
22346,
'Lophostemon confertus :: Brisbane Box',
'5280 03rd St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'6/27/14 0:00',
2014,
3,
3,
37.72954822,
-122.3926894
],
[
23567,
'Platanus x hispanica :: Sycamore: London Plane',
'2975 Van Ness Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'5/27/92 0:00',
1992,
25,
3,
37.80304673,
-122.4250636
],
[
237469,
'Prunus cerasifera :: Cherry Plum',
'4200 23rd St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'7/17/00 0:00',
2000,
17,
0,
37.7528239,
-122.4366208
],
[
244214,
'Tree(s) ::',
'342 Scott St',
false,
'Sidewalk: Curb side : Yard',
'Tree',
'3/20/17 0:00',
2017,
0,
3,
37.77300994,
-122.4355982
],
[
21823,
'Platanus x hispanica :: Sycamore: London Plane',
'2741 Taylor St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'8/19/06 0:00',
2006,
11,
3,
37.80797069,
-122.4158502
],
[
188686,
'Acacia melanoxylon :: Blackwood Acacia',
'1300 Evans Ave',
false,
':',
'Tree',
null,
null,
null,
12,
37.73901484,
-122.381104
],
[
196592,
'Pyrus calleryana :: Ornamental Pear',
'43 Lafayette St',
false,
':',
'Tree',
null,
null,
null,
8,
37.77310137,
-122.4173585
],
[
22614,
'Acacia melanoxylon :: Blackwood Acacia',
'1001 Turk St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
24,
37.78136501,
-122.4248636
],
[
10933,
'Lophostemon confertus :: Brisbane Box',
'1359 Hudson Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
12,
37.73743182,
-122.3840631
],
[
2889,
'Platanus x hispanica :: Sycamore: London Plane',
'1545 California St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
65,
37.79059396,
-122.4198251
],
[
240126,
"Prunus serrulata 'Kwanzan' :: Kwanzan Flowering Cherry",
'20 Lily St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
4,
37.77473647,
-122.4213262
],
[
183515,
'Myoporum laetum :: Myoporum',
'2562 26th Ave',
false,
'Sidewalk: Curb side : Yard',
'Tree',
'3/21/17 0:00',
2017,
0,
3,
37.73970633,
-122.4828998
],
[
13434,
'Platanus x hispanica :: Sycamore: London Plane',
'2X Market St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
6,
37.79448363,
-122.3950546
],
[
226924,
'Juniperus chinensis :: Juniper',
'1 Newburg St',
false,
'Sidewalk: Property side : Pot',
'Tree',
null,
null,
null,
11,
37.74625595,
-122.4338758
],
[
192589,
'Lophostemon confertus :: Brisbane Box',
'1390 Mission St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
4,
37.7755405,
-122.4157935
],
[
3558,
'Lophostemon confertus :: Brisbane Box',
'101 Cargo Way',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/21/17 17:52',
2017,
0,
6,
37.74050235,
-122.3776366
],
[
222540,
'Callistemon viminalis :: Weeping Bottlebrush',
'1 Newburg St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
6,
37.74632546,
-122.4338277
],
[
192590,
'Lophostemon confertus :: Brisbane Box',
'1390 Mission St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
4,
37.7755405,
-122.4157935
],
[
28375,
'Magnolia grandiflora :: Southern Magnolia',
'3014 Sacramento St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'10/9/03 0:00',
2003,
14,
3,
37.78875791,
-122.4429785
],
[
222539,
'Callistemon viminalis :: Weeping Bottlebrush',
'1 Newburg St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
6,
37.74630146,
-122.4338571
],
[
226925,
'Juniperus chinensis :: Juniper',
'1 Newburg St',
false,
'Sidewalk: Property side : Pot',
'Tree',
null,
null,
null,
19,
37.74628109,
-122.4338516
],
[
27522,
'Metrosideros excelsa :: New Zealand Xmas Tree',
'3201 California St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
8,
37.78709954,
-122.4473685
],
[
18228,
'Maytenus boaria :: Mayten',
'1737-1795 Post St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'4/9/04 0:00',
2004,
13,
12,
37.78534132,
-122.431005
],
[
17325,
'Fraxinus americana :: American Ash',
'150 Otis St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'8/31/16 0:00',
2016,
1,
3,
37.77095437,
-122.4203558
],
[
3528,
'Lophostemon confertus :: Brisbane Box',
'201X Cargo Way',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/21/17 16:23',
2017,
0,
3,
37.74144532,
-122.3793046
],
[
251186,
'Juniperus chinensis :: Juniper',
'3042 Steiner St',
false,
'Sidewalk: Property side : Cutout',
'Tree',
null,
null,
null,
null,
37.79753285,
-122.4371106
],
[
138938,
'Tree(s) ::',
'632 HAYES ST',
false,
'Sidewalk: Curb side : Yard',
'Tree',
'3/21/17 0:00',
2017,
0,
3,
37.77646121,
-122.4269126
],
[
60867,
'Tree(s) ::',
null,
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'4/25/83 0:00',
1983,
34,
null,
null,
null
],
[
233897,
'Araucaria heterophylla :: Norfolk Island Pine',
'1021 Noe St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
9,
37.75266993,
-122.4318862
],
[
251187,
'Schinus terebinthifolius :: Brazilian Pepper',
'1 Baker St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.77112958,
-122.4406092
],
[
121137,
'Pittosporum undulatum :: Victorian Box',
'1388x Minna St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'9/8/16 0:00',
2016,
1,
3,
null,
null
],
[
2909,
'Platanus x hispanica :: Sycamore: London Plane',
'1700 California St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
30,
37.79038763,
-122.4229834
],
[
27602,
'Pittosporum undulatum :: Victorian Box',
'988 Fulton St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
20,
37.77766599,
-122.4324106
],
[
44642,
'Tree(s) ::',
null,
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'4/29/01 0:00',
2001,
16,
null,
null,
null
],
[
4749,
'Acacia melanoxylon :: Blackwood Acacia',
'1255 Columbus Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'8/3/15 0:00',
2015,
2,
8,
37.80577303,
-122.4182612
],
[
44994,
'Tree(s) ::',
null,
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'4/25/01 0:00',
2001,
16,
null,
null,
null
],
[
121139,
'Pittosporum undulatum :: Victorian Box',
'1388x Minna St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'9/8/16 0:00',
2016,
1,
3,
null,
null
],
[
226596,
'Leptospermum scoparium :: New Zealand Tea Tree',
'1 Newburg St',
false,
'Sidewalk: Property side : Pot',
'Tree',
null,
null,
null,
4,
37.74632473,
-122.4337918
],
[
239043,
'Pyrus calleryana :: Ornamental Pear',
'10 12th St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
13,
37.77381038,
-122.4194082
],
[
222541,
'Callistemon citrinus :: Lemon Bottlebrush',
'1 Newburg St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
5,
37.7463451,
-122.433801
],
[
138748,
'Lophostemon confertus :: Brisbane Box',
'1614 Broderick St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
0,
37.7853077,
-122.4415226
],
[
226926,
'Juniperus chinensis :: Juniper',
'1 Newburg St',
false,
'Sidewalk: Property side : Pot',
'Tree',
null,
null,
null,
15,
37.74630146,
-122.4338212
],
[
222538,
'Callistemon viminalis :: Weeping Bottlebrush',
'1 Newburg St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
6,
37.74627164,
-122.4338847
],
[
166623,
'Potential Site :: Potential Site',
'520 Jersey St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/21/17 0:00',
2017,
0,
3,
37.75036438,
-122.4371358
],
[
251188,
'Schinus terebinthifolius :: Brazilian Pepper',
'1 Baker St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.77112958,
-122.4406092
],
[
19206,
'Laurus nobilis :: Sweet Bay: Grecian Laurel',
'630 Sansome St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
12,
37.79625001,
-122.4016986
],
[
121138,
'Pittosporum undulatum :: Victorian Box',
'1388x Minna St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'9/8/16 0:00',
2016,
1,
3,
null,
null
],
[
251206,
"Prunus serrulata 'Kwanzan' :: Kwanzan Flowering Cherry",
'270 Trumbull St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.73083203,
-122.4245292
],
[
25725,
'Platanus x hispanica :: Sycamore: London Plane',
'729 Grove St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
12,
37.77705272,
-122.4286972
],
[
251249,
'Private shrub :: Private Shrub',
'161 Lundys Ln',
false,
'Front Yard : Yard',
'Landscaping',
null,
null,
null,
null,
37.7429691,
-122.4194092
],
[
251293,
'::',
'3789 Market St',
false,
'Sidewalk: Property side : Cutout',
'Landscaping',
null,
null,
null,
null,
37.75373446,
-122.442203
],
[
221749,
'Pittosporum undulatum :: Victorian Box',
'275 Grattan St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
null,
null,
null,
24,
37.76366261,
-122.4520649
],
[
221750,
'Pittosporum undulatum :: Victorian Box',
'275 Grattan St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
null,
null,
null,
11,
37.76366331,
-122.4521462
],
[
245474,
'Pittosporum undulatum :: Victorian Box',
'275 Grattan St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
null,
null,
null,
19,
37.76363745,
-122.4522558
],
[
251419,
'Melaleuca quinquenervia :: Cajeput',
'39 Jones St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'4/14/15 0:00',
2015,
2,
null,
37.78164643,
-122.4122686
],
[
251418,
'Melaleuca quinquenervia :: Cajeput',
'39 Jones St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'4/14/15 0:00',
2015,
2,
null,
37.78164643,
-122.4122686
],
[
16698,
'Pittosporum undulatum :: Victorian Box',
'950X Noriega St',
false,
'Median : Cutout',
'Landscaping',
null,
null,
null,
12,
37.75434951,
-122.4740143
],
[
251532,
'::',
'2100X 20th St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'5/15/17 0:00',
2017,
0,
3,
null,
null
],
[
251531,
'::',
'2100X 20th St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'5/15/17 0:00',
2017,
0,
3,
null,
null
],
[
251642,
'Shrub :: Shrub',
'2253 Broderick St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
null,
null,
null,
null,
37.79122797,
-122.4428704
],
[
251700,
'::',
'1560 Sanchez St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'6/5/17 0:00',
2017,
0,
3,
37.74408823,
-122.4290963
],
[
253008,
'::',
'1201 Tennessee St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'7/10/17 0:00',
2017,
0,
3,
37.7563302,
-122.3890342
],
[
208471,
'Cordyline australis :: Dracena Palm',
'1175 Kirkham St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'8/23/17 0:00',
2017,
0,
3,
37.75989512,
-122.4735278
],
[
253411,
'Lophostemon confertus :: Brisbane Box',
'1321 Mission St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'8/30/17 0:00',
2017,
0,
3,
37.77599135,
-122.4149312
],
[
253409,
'Lophostemon confertus :: Brisbane Box',
'1321 Mission St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'8/30/17 0:00',
2017,
0,
3,
37.77599135,
-122.4149312
],
[
253410,
'Lophostemon confertus :: Brisbane Box',
'1321 Mission St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'8/30/17 0:00',
2017,
0,
3,
37.77599135,
-122.4149312
],
[
253412,
'Lophostemon confertus :: Brisbane Box',
'1321 Mission St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'8/30/17 0:00',
2017,
0,
3,
37.77599135,
-122.4149312
],
[
225282,
'Pittosporum crassifolium :: Karo Tree',
'101 Rivoli St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
null,
null,
null,
6,
37.76244046,
-122.4496446
],
[
173852,
'::',
'450 Toland St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'1/27/17 0:00',
2017,
0,
3,
37.74445161,
-122.3985096
],
[
173849,
'::',
'450 Toland St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'1/27/17 0:00',
2017,
0,
3,
37.74445161,
-122.3985096
],
[
173850,
'::',
'450 Toland St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'1/27/17 0:00',
2017,
0,
3,
37.74445161,
-122.3985096
],
[
173851,
'::',
'450 Toland St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'1/27/17 0:00',
2017,
0,
3,
37.74445161,
-122.3985096
],
[
173848,
'::',
'450 Toland St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'1/27/17 0:00',
2017,
0,
3,
37.74445161,
-122.3985096
],
[
173846,
'::',
'450 Toland St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'1/27/17 0:00',
2017,
0,
3,
37.74445161,
-122.3985096
],
[
173847,
'::',
'450 Toland St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'1/27/17 0:00',
2017,
0,
3,
37.74445161,
-122.3985096
],
[
173853,
'::',
'450 Toland St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'1/27/17 0:00',
2017,
0,
3,
37.74445161,
-122.3985096
],
[
107717,
'Tree(s) ::',
'2400X 25th Ave',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'10/16/14 0:00',
2014,
3,
3,
37.74238326,
-122.4917845
],
[
110194,
'Ginkgo biloba :: Maidenhair Tree',
'2123 Pierce St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/26/15 0:00',
2015,
2,
3,
37.78980712,
-122.4374813
],
[
59839,
'Metrosideros excelsa :: New Zealand Xmas Tree',
'1201 Palou Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'10/10/81 0:00',
1981,
36,
3,
37.72976741,
-122.3836854
],
[
183689,
'Rhamnus alaternus :: Italian Buckthorn',
'1341 42nd Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
6,
37.76162779,
-122.5017998
],
[
18916,
'Olea europaea :: Olive Tree',
'2621 Sacramento St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
14,
37.78950262,
-122.4361188
],
[
20281,
'Metrosideros excelsa :: New Zealand Xmas Tree',
'20X Sunset Blvd',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
12,
null,
null
],
[
119758,
'Maytenus boaria :: Mayten',
'151X Octavia St Frontage West',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
null,
null
],
[
228560,
'Lophostemon confertus :: Brisbane Box',
'700 Valencia St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
7,
37.76151469,
-122.4216727
],
[
18052,
'Ulmus parvifolia :: Chinese Elm',
'2840 Pine St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
18,
37.78687837,
-122.4426898
],
[
212622,
'Prunus cerasifera :: Cherry Plum',
'115 Beverly St',
false,
'Sidewalk: Property side : Yard',
'Tree',
null,
null,
null,
4,
37.71819234,
-122.4717606
],
[
20398,
'Cupressus macrocarpa :: Monterey Cypress',
'262X Sunset Blvd',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
24,
null,
null
],
[
66855,
'Maytenus boaria :: Mayten',
'2041 Hayes St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'11/15/91 0:00',
1991,
26,
8,
37.77336241,
-122.4501107
],
[
237033,
"Prunus serrulata 'Kwanzan' :: Kwanzan Flowering Cherry",
'100 Octavia St',
false,
':',
'Tree',
null,
null,
null,
6,
37.77334931,
-122.4236445
],
[
116641,
'Ginkgo biloba :: Maidenhair Tree',
'270 Brannan St',
false,
'Sidewalk: Property side : Cutout',
'Tree',
null,
null,
null,
1,
37.78270018,
-122.3912181
],
[
218972,
'Fraxinus americana :: American Ash',
'742 Myra Way',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
10,
37.74058076,
-122.4513096
],
[
47510,
"Arbutus 'Marina' :: Hybrid Strawberry Tree",
'54X Cayuga Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/27/17 0:00',
2017,
0,
3,
37.73158339,
-122.4295272
],
[
237030,
"Prunus serrulata 'Kwanzan' :: Kwanzan Flowering Cherry",
'100 Octavia St',
false,
':',
'Tree',
null,
null,
null,
5,
37.77325086,
-122.4236179
],
[
213016,
'Tree(s) ::',
'120 Ortega St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/27/17 0:00',
2017,
0,
3,
37.75295695,
-122.4649514
],
[
228561,
'Lophostemon confertus :: Brisbane Box',
'700 Valencia St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
7,
37.76156532,
-122.4216758
],
[
72565,
'Ginkgo biloba :: Maidenhair Tree',
'270 Brannan St',
false,
'Sidewalk: Property side : Cutout',
'Tree',
'11/16/96 0:00',
1996,
21,
3,
37.78270018,
-122.3912181
],
[
116640,
'Ginkgo biloba :: Maidenhair Tree',
'270 Brannan St',
false,
'Sidewalk: Property side : Cutout',
'Tree',
null,
null,
null,
1,
37.78270018,
-122.3912181
],
[
6337,
'Metrosideros excelsa :: New Zealand Xmas Tree',
'1916 Ellis St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
18,
37.78175831,
-122.4377689
],
[
832,
'Lagunaria patersonii :: Primrose Tree',
'1396 47th Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:18',
2017,
0,
3,
37.76054428,
-122.5069327
],
[
251241,
'Cupressocyparis leylandii :: Leyland Cypress',
'2305 Golden Gate Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.77731326,
-122.448748
],
[
18836,
"Ficus microcarpa nitida 'Green Gem' :: Indian Laurel Fig Tree 'Green Gem'",
'2055 Sacramento St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
12,
37.79068779,
-122.4267446
],
[
11598,
'Lagunaria patersonii :: Primrose Tree',
'4134 Judah St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 11:51',
2017,
0,
3,
37.76048345,
-122.5065435
],
[
111561,
'Eriobotrya deflexa :: Bronze Loquat',
'1498x Kansas St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 0:00',
2017,
0,
3,
37.75089751,
-122.402317
],
[
97319,
'Lagunaria patersonii :: Primrose Tree',
'1038 Taraval St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:52',
2017,
0,
3,
37.74306751,
-122.4774242
],
[
58021,
'Lagunaria patersonii :: Primrose Tree',
'4026 Irving St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:07',
2017,
0,
3,
37.76257173,
-122.5012197
],
[
175046,
'Metrosideros excelsa :: New Zealand Xmas Tree',
'80X Junipero Serra Blvd',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
4,
37.71164354,
-122.4709833
],
[
26071,
'Melaleuca quinquenervia :: Cajeput',
'247 Orizaba Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 13:41',
2017,
0,
3,
37.71342972,
-122.4626502
],
[
11606,
'Lagunaria patersonii :: Primrose Tree',
'4200x Judah St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 11:54',
2017,
0,
3,
37.76045095,
-122.5071358
],
[
36617,
'Robinia x ambigua :: Locust',
null,
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'5/20/98 0:00',
1998,
19,
null,
null,
null
],
[
24532,
'Lagunaria patersonii :: Primrose Tree',
'1395 47th Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:21',
2017,
0,
3,
37.76072337,
-122.5070915
],
[
5972,
'Pittosporum undulatum :: Victorian Box',
'1550 Eddy St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'2/2/90 0:00',
1990,
27,
8,
37.78138444,
-122.4331105
],
[
830,
"Tristaniopsis laurina 'Elegant' :: Small-leaf Tristania 'Elegant'",
'1384 47th Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:15',
2017,
0,
3,
37.76071635,
-122.5069447
],
[
251225,
'Jacaranda mimosifolia :: Jacaranda',
'1 Yukon St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.75927435,
-122.4422441
],
[
54712,
'Lagunaria patersonii :: Primrose Tree',
'4508 Irving St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 11:58',
2017,
0,
3,
37.76234527,
-122.5063635
],
[
3193,
'Platanus x hispanica :: Sycamore: London Plane',
'3698 California St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
16,
37.78640011,
-122.454267
],
[
21682,
'Prunus serrulata :: Ornamental Cherry',
'1830 Sutter St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 0:00',
2017,
0,
3,
37.78651577,
-122.4305403
],
[
97322,
'Lagunaria patersonii :: Primrose Tree',
'1055 Taraval St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:42',
2017,
0,
3,
37.74287614,
-122.4775411
],
[
175377,
'Ulmus pumila :: Siberian Elm',
'80X Junipero Serra Blvd',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
2,
37.71516198,
-122.4717512
],
[
142720,
'::',
'1170 COLUMBUS AVE',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.80483123,
-122.416565
],
[
251231,
'Pinus radiata :: Monterey Pine',
'164 Serrano Dr',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.72047169,
-122.4780251
],
[
29943,
"Tristaniopsis laurina 'Elegant' :: Small-leaf Tristania 'Elegant'",
'242 Broad St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:23',
2017,
0,
3,
37.71323398,
-122.4605594
],
[
97323,
'Lagunaria patersonii :: Primrose Tree',
'1011 Taraval St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:25',
2017,
0,
3,
37.74289372,
-122.4772138
],
[
11582,
'Lagunaria patersonii :: Primrose Tree',
'4000 Judah St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 11:49',
2017,
0,
3,
37.76055019,
-122.5050036
],
[
251230,
'Ligustrum lucidum :: Glossy Privet',
'99x Ogden Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.73605476,
-122.4163909
],
[
251232,
'Ligustrum lucidum :: Glossy Privet',
'99x Ogden Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.73605476,
-122.4163909
],
[
179480,
'Schinus terebinthifolius :: Brazilian Pepper',
'100 Serrano Dr',
false,
'Sidewalk: Curb side : Yard',
'Tree',
null,
null,
null,
11,
37.72024935,
-122.4780157
],
[
251221,
'Tree(s) ::',
'2401X Washington St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 0:00',
2017,
0,
3,
null,
null
],
[
48827,
'Lophostemon confertus :: Brisbane Box',
'435 Pacific Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'11/7/02 0:00',
2002,
15,
5,
37.79736024,
-122.4027685
],
[
251242,
'Cupressocyparis leylandii :: Leyland Cypress',
'2449 Golden Gate Ave',
false,
'Sidewalk: Property side : Cutout',
'Tree',
null,
null,
null,
null,
37.7770353,
-122.4514366
],
[
48332,
'Tree(s) ::',
null,
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'7/17/02 0:00',
2002,
15,
null,
null,
null
],
[
175044,
'Metrosideros excelsa :: New Zealand Xmas Tree',
'80x Junipero Serra Blvd',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
19,
37.71158043,
-122.4709734
],
[
251226,
'Koelreuteria paniculata :: Golden Rain Tree',
'1 Yukon St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.75950087,
-122.4421669
],
[
17881,
'Olea europaea :: Olive Tree',
'2205 Pine St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
12,
37.78806671,
-122.4322373
],
[
24515,
'Lophostemon confertus :: Brisbane Box',
'2030 Fell St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'4/7/16 7:40',
2016,
1,
3,
37.77238102,
-122.4513341
],
[
97317,
'Lagunaria patersonii :: Primrose Tree',
'1000 Taraval St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:59',
2017,
0,
3,
37.74308434,
-122.4769891
],
[
2985,
'Platanus x hispanica :: Sycamore: London Plane',
'2253 California St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
65,
37.78912498,
-122.4314293
],
[
182083,
'Lagunaria patersonii :: Primrose Tree',
'1101 Taraval St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:33',
2017,
0,
3,
37.74285808,
-122.4780077
],
[
18700,
'Platanus x hispanica :: Sycamore: London Plane',
'100X Richardson Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
18,
37.79975916,
-122.4460044
],
[
9914,
"Ficus microcarpa nitida 'Green Gem' :: Indian Laurel Fig Tree 'Green Gem'",
'1900 Gough St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
126,
37.79116413,
-122.4257789
],
[
93463,
"Prunus x 'Amanogawa' :: Flowering Cherry",
'1739 Taraval St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 13:05',
2017,
0,
3,
37.74255391,
-122.4849289
],
[
15429,
"Ficus microcarpa nitida 'Green Gem' :: Indian Laurel Fig Tree 'Green Gem'",
'2125 Mission St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'4/9/15 0:00',
2015,
2,
15,
37.76296062,
-122.419386
],
[
138801,
'Maytenus boaria :: Mayten',
'2375 PINE ST',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'5/9/97 0:00',
1997,
20,
2,
37.78770158,
-122.4350685
],
[
251243,
"Ceanothus 'Ray Hartman' :: California Lilac 'Ray Hartman'",
'299x Chapman St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.7417247,
-122.411639
],
[
138359,
'Ficus retusa nitida :: Banyan Fig',
'2060 SUTTER ST',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
15,
37.78607841,
-122.4338643
],
[
251248,
'Corymbia ficifolia :: Red Flowering Gum',
'829 Chenery St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.73477716,
-122.4360662
],
[
138368,
'Ficus retusa nitida :: Banyan Fig',
'2060 SUTTER ST',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
13,
37.78600955,
-122.4344937
],
[
138807,
'Ulmus parvifolia :: Chinese Elm',
'2355 PINE ST',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
13,
37.78777373,
-122.4346006
],
[
57209,
'Magnolia grandiflora :: Southern Magnolia',
'2898 Clay St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'12/15/14 0:00',
2014,
3,
3,
37.78998742,
-122.4404101
],
[
210495,
'Myoporum laetum :: Myoporum',
'365 San Leandro Way',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
21,
37.73051136,
-122.4689316
],
[
138369,
'Ficus retusa nitida :: Banyan Fig',
'2060 SUTTER ST',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
16,
37.78599791,
-122.4345397
],
[
6069,
'Metrosideros excelsa :: New Zealand Xmas Tree',
'1930 Eddy St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'5/26/15 0:00',
2015,
2,
3,
37.78057618,
-122.439557
],
[
138802,
'Ulmus parvifolia :: Chinese Elm',
'2375 PINE ST',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
12,
37.78771109,
-122.4350205
],
[
138365,
'Ficus retusa nitida :: Banyan Fig',
'2060 SUTTER ST',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
19,
37.78603526,
-122.4342542
],
[
251246,
'Metrosideros excelsa :: New Zealand Xmas Tree',
'722X Mendell St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.73887284,
-122.3866046
],
[
251245,
'Corymbia ficifolia :: Red Flowering Gum',
'701 Chenery St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'6/4/92 0:00',
1992,
25,
null,
37.73445362,
-122.4338962
],
[
103786,
'Magnolia grandiflora :: Southern Magnolia',
'1221 Polk St',
false,
'Sidewalk: Curb side : Pot',
'Tree',
'11/1/09 0:00',
2009,
8,
3,
37.78810145,
-122.4202677
],
[
138362,
'Ficus retusa nitida :: Banyan Fig',
'2060 SUTTER ST',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
15,
37.78605488,
-122.4340541
],
[
134567,
'Platanus x hispanica :: Sycamore: London Plane',
'99 Grove St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'7/6/11 0:00',
2011,
6,
4,
37.77846618,
-122.4173997
],
[
138367,
'Ficus retusa nitida :: Banyan Fig',
'2060 SUTTER ST',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
15,
37.78601298,
-122.4344509
]
]
}
};
================================================
FILE: examples/open-modal/src/main.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React from 'react';
import ReactDOM from 'react-dom/client';
import document from 'global/document';
import Modal from 'react-modal';
import {Provider} from 'react-redux';
import store from './store';
import App from './app';
// Ensure screen readers don't see main content when modal is open
Modal.setAppElement('#root');
const Root = () => (
);
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render( );
================================================
FILE: examples/open-modal/src/store.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {createStore, combineReducers, applyMiddleware, compose} from 'redux';
import keplerGlReducer, {enhanceReduxMiddleware} from '@kepler.gl/reducers';
import appReducer from './app-reducer';
import Window from 'global/window';
const reducers = combineReducers({
keplerGl: keplerGlReducer,
app: appReducer
});
const middlewares = enhanceReduxMiddleware([]);
const enhancers = [applyMiddleware(...middlewares)];
const initialState = {};
// add redux devtools
const composeEnhancers = Window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
export default createStore(reducers, initialState, composeEnhancers(...enhancers));
================================================
FILE: examples/replace-component/.babelrc
================================================
{
"presets": [
"@babel/preset-env",
"@babel/preset-react",
"@babel/preset-typescript"
],
"plugins": [
"@babel/plugin-transform-modules-commonjs",
"@babel/plugin-transform-class-properties",
"@babel/plugin-transform-optional-chaining",
"@babel/plugin-transform-logical-assignment-operators",
"@babel/plugin-transform-nullish-coalescing-operator",
"@babel/plugin-transform-export-namespace-from"
]
}
================================================
FILE: examples/replace-component/README.md
================================================
# Replacing components
Example showing how to replace kepler.gl default components using `injectComponents` method.
#### 1. Install
```sh
yarn install
```
#### 2. Mapbox Token
add mapbox access token to node env
```sh
export MapboxAccessToken=
```
#### 3. Start the app
```sh
yarn start
```
================================================
FILE: examples/replace-component/esbuild.config.mjs
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import esbuild from 'esbuild';
import {replace} from 'esbuild-plugin-replace';
import {dotenvRun} from '@dotenv-run/esbuild';
import copyPlugin from 'esbuild-plugin-copy';
import process from 'node:process';
import fs from 'node:fs';
import {spawn} from 'node:child_process';
import {join} from 'node:path';
import KeplerPackage from '../../package.json' assert {type: 'json'};
const args = process.argv;
const LIB_DIR = '../../';
const NODE_MODULES_DIR = join(LIB_DIR, 'node_modules');
const SRC_DIR = join(LIB_DIR, 'src');
// For debugging deck.gl, load deck.gl from external deck.gl directory
const EXTERNAL_DECK_SRC = join(LIB_DIR, 'deck.gl');
// For debugging loaders.gl, load loaders.gl from external loaders.gl directory
const EXTERNAL_LOADERS_SRC = join(LIB_DIR, 'loaders.gl');
// For debugging hubble.gl, load hubble.gl from external hubble.gl directory
const EXTERNAL_HUBBLE_SRC = join(LIB_DIR, '../../hubble.gl');
const port = 8080;
const NODE_ENV = JSON.stringify(process.env.NODE_ENV || 'production');
// add alias to serve from kepler src, resolve libraries so there is only one copy of them
const RESOLVE_LOCAL_ALIASES = {
react: `${NODE_MODULES_DIR}/react`,
'react-dom': `${NODE_MODULES_DIR}/react-dom`,
'react-redux': `${NODE_MODULES_DIR}/react-redux/lib`,
'styled-components': `${NODE_MODULES_DIR}/styled-components`,
'react-intl': `${NODE_MODULES_DIR}/react-intl`,
'react-palm': `${NODE_MODULES_DIR}/react-palm`,
// Suppress useless warnings from react-date-picker's dep
'tiny-warning': `${SRC_DIR}/utils/src/noop.ts`,
// kepler.gl and loaders.gl need to use same apache-arrow
'apache-arrow': `${NODE_MODULES_DIR}/apache-arrow`
};
const config = {
platform: 'browser',
format: 'iife',
logLevel: 'info',
loader: {
'.js': 'jsx',
'.css': 'css',
'.ttf': 'file',
'.woff': 'file',
'.woff2': 'file'
},
entryPoints: ['src/main.js'],
outfile: 'dist/bundle.js',
bundle: true,
define: {
NODE_ENV,
'process.env.MapboxAccessToken': JSON.stringify(process.env.MapboxAccessToken || ''),
'process.env.DropboxClientId': JSON.stringify(process.env.DropboxClientId || ''),
'process.env.MapboxExportToken': JSON.stringify(process.env.MapboxExportToken || ''),
'process.env.CartoClientId': JSON.stringify(process.env.CartoClientId || ''),
'process.env.FoursquareClientId': JSON.stringify(process.env.FoursquareClientId || ''),
'process.env.FoursquareDomain': JSON.stringify(process.env.FoursquareDomain || ''),
'process.env.FoursquareAPIURL': JSON.stringify(process.env.FoursquareAPIURL || ''),
'process.env.FoursquareUserMapsURL': JSON.stringify(process.env.FoursquareUserMapsURL || ''),
'process.env.NODE_DEBUG': JSON.stringify(false)
},
plugins: [
dotenvRun({
verbose: true,
environment: NODE_ENV,
root: '../../.env'
}),
// automatically injected kepler.gl package version into the bundle
replace({
__PACKAGE_VERSION__: KeplerPackage.version,
include: /constants\/src\/default-settings\.ts/
}),
copyPlugin({
resolveFrom: 'cwd',
assets: {
from: ['index.html'],
to: ['dist/index.html']
}
})
]
};
function addAliases(externals, args) {
const resolveAlias = RESOLVE_LOCAL_ALIASES;
// Combine flags
const useLocalDeck = args.includes('--env.deck') || args.includes('--env.hubble_src');
const useRepoDeck = args.includes('--env.deck_src');
// resolve deck.gl from local dir
if (useLocalDeck || useRepoDeck) {
// Load deck.gl from root node_modules
// if env.deck_src Load deck.gl from deck.gl/modules/main/src folder parallel to kepler.gl
resolveAlias['deck.gl'] = useLocalDeck
? `${NODE_MODULES_DIR}/deck.gl/src`
: `${EXTERNAL_DECK_SRC}/modules/main/src`;
// if env.deck Load @deck.gl modules from root node_modules/@deck.gl
// if env.deck_src Load @deck.gl modules from deck.gl/modules folder parallel to kepler.gl
externals['deck.gl'].forEach(mdl => {
resolveAlias[`@deck.gl/${mdl}`] = useLocalDeck
? `${NODE_MODULES_DIR}/@deck.gl/${mdl}/src`
: `${EXTERNAL_DECK_SRC}/modules/${mdl}/src`;
// types are stored in different directory
resolveAlias[`@deck.gl/${mdl}/typed`] = useLocalDeck
? `${NODE_MODULES_DIR}/@deck.gl/${mdl}/typed`
: `${EXTERNAL_DECK_SRC}/modules/${mdl}/src/types`;
});
['luma.gl', 'probe.gl', 'loaders.gl'].forEach(name => {
// if env.deck Load ${name} from root node_modules
// if env.deck_src Load ${name} from deck.gl/node_modules folder parallel to kepler.gl
resolveAlias[name] = useLocalDeck
? `${NODE_MODULES_DIR}/${name}/src`
: name === 'probe.gl'
? `${EXTERNAL_DECK_SRC}/node_modules/${name}/src`
: `${EXTERNAL_DECK_SRC}/node_modules/@${name}/core/src`;
// if env.deck Load @${name} modules from root node_modules/@${name}
// if env.deck_src Load @${name} modules from deck.gl/node_modules/@${name} folder parallel to kepler.gl`
externals[name].forEach(mdl => {
resolveAlias[`@${name}/${mdl}`] = useLocalDeck
? `${NODE_MODULES_DIR}/@${name}/${mdl}/src`
: `${EXTERNAL_DECK_SRC}/node_modules/@${name}/${mdl}/src`;
});
});
}
if (args.includes('--env.loaders_src')) {
externals['loaders.gl'].forEach(mdl => {
resolveAlias[`@loaders.gl/${mdl}`] = `${EXTERNAL_LOADERS_SRC}/modules/${mdl}/src`;
});
}
if (args.includes('--env.hubble_src')) {
externals['hubble.gl'].forEach(mdl => {
resolveAlias[`@hubble.gl/${mdl}`] = `${EXTERNAL_HUBBLE_SRC}/modules/${mdl}/src`;
});
}
return resolveAlias;
}
function openURL(url) {
// Could potentially be replaced by https://www.npmjs.com/package/open, it was throwing an error when tried last
const cmd = {
darwin: ['open'],
linux: ['xdg-open'],
win32: ['cmd', '/c', 'start']
};
const command = cmd[process.platform];
if (command) {
spawn(command[0], [...command.slice(1), url]);
}
}
(async () => {
// local dev
const modules = ['@deck.gl', '@loaders.gl', '@luma.gl', '@probe.gl', '@hubble.gl'];
const loadAllDirs = modules.map(
dir =>
new Promise(success => {
fs.readdir(join(NODE_MODULES_DIR, dir), (err, items) => {
if (err) {
const colorRed = '\x1b[31m';
const colorReset = '\x1b[0m';
console.log(
`${colorRed}%s${colorReset}`,
`Cannot find ${dir} in node_modules, make sure it is installed. ${err}`
);
success(null);
}
success(items);
});
})
);
const externals = await Promise.all(loadAllDirs).then(results => ({
'deck.gl': results[0],
'loaders.gl': results[1],
'luma.gl': results[2],
'probe.gl': results[3],
'hubble.gl': results[4]
}));
const localAliases = addAliases(externals, args);
if (args.includes('--build')) {
await esbuild
.build({
...config,
minify: true,
sourcemap: false,
define: {
...config.define,
'process.env.NODE_ENV': '"production"'
},
drop: ['console', 'debugger'],
treeShaking: true
})
.catch(e => {
console.error(e);
process.exit(1);
});
}
if (args.includes('--start')) {
await esbuild
.context({
...config,
minify: false,
sourcemap: true,
// add alias to resolve libraries so there is only one copy of them
// always alias to avoid duplicate Reacts
alias: localAliases,
banner: {
js: `new EventSource('/esbuild').addEventListener('change', () => location.reload());`
}
})
.then(async ctx => {
await ctx.watch();
await ctx.serve({
servedir: 'dist',
port,
fallback: 'dist/index.html',
onRequest: ({remoteAddress, method, path, status, timeInMS}) => {
console.info(remoteAddress, status, `"${method} ${path}" [${timeInMS}ms]`);
}
});
console.info(
`kepler.gl demo app running at ${`http://localhost:${port}`}, press Ctrl+C to stop`
);
openURL(`http://localhost:${port}`);
})
.catch(e => {
console.error(e);
process.exit(1);
});
}
})();
================================================
FILE: examples/replace-component/index.html
================================================
kepler.gl demo
================================================
FILE: examples/replace-component/package.json
================================================
{
"scripts": {
"start": "node esbuild.config.mjs --start",
"build": "node esbuild.config.mjs --build",
"start:local": "NODE_ENV=local node esbuild.config.mjs --start"
},
"dependencies": {
"@kepler.gl/actions": "^3.1.9",
"@kepler.gl/components": "^3.1.9",
"@kepler.gl/reducers": "^3.1.9",
"@kepler.gl/schemas": "^3.1.9",
"@kepler.gl/styles": "^3.1.9",
"esbuild": "^0.25.0",
"global": "^4.3.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-palm": "^3.3.6",
"react-redux": "^8.0.5",
"react-virtualized": "^9.21.0",
"redux-actions": "^2.2.1",
"styled-components": "6.1.8"
},
"devDependencies": {
"@dotenv-run/esbuild": "^1.5.0",
"esbuild-plugin-copy": "^2.1.1",
"esbuild-plugin-replace": "^1.4.0"
},
"engines": {
"node": ">=18"
},
"volta": {
"node": "18.18.2",
"yarn": "4.4.0"
},
"packageManager": "yarn@4.4.0"
}
================================================
FILE: examples/replace-component/src/actions.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {createAction} from 'redux-actions';
export const setMapConfig = createAction('SET_MAP_CONFIG', payload => payload);
================================================
FILE: examples/replace-component/src/app-reducer.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {createAction, handleActions} from 'redux-actions';
import KeplerGlSchema from '@kepler.gl/schemas';
// CONSTANTS
export const INIT = 'INIT';
export const SET_MAP_CONFIG = 'SET_MAP_CONFIG';
// ACTIONS
export const appInit = createAction(INIT);
export const setMapConfig = createAction(SET_MAP_CONFIG);
// INITIAL_STATE
const initialState = {
appName: 'example',
loaded: false
};
// REDUCER
const appReducer = handleActions(
{
[INIT]: state => ({
...state,
loaded: true
}),
[SET_MAP_CONFIG]: (state, action) => ({
...state,
mapConfig: KeplerGlSchema.getConfigToSave(action.payload)
})
},
initialState
);
export default appReducer;
================================================
FILE: examples/replace-component/src/app.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React, {Component} from 'react';
import {connect} from 'react-redux';
import {addDataToMap, wrapTo} from '@kepler.gl/actions';
import AutoSizer from 'react-virtualized/dist/commonjs/AutoSizer';
import styled from 'styled-components';
import {theme} from '@kepler.gl/styles';
import sampleData, {config} from './data/sample-data';
const MAPBOX_TOKEN = process.env.MapboxAccessToken; // eslint-disable-line
import {
SidebarFactory,
PanelHeaderFactory,
PanelToggleFactory,
CustomPanelsFactory,
MapPopoverFactory,
injectComponents
} from '@kepler.gl/components';
import CustomPanelHeaderFactory from './components/panel-header';
import CustomSidebarFactory from './components/side-bar';
import CustomPanelToggleFactory from './components/panel-toggle';
import CustomSidePanelFactory from './components/custom-panel';
import CustomMapPopoverFactory from './components/custom-map-popover';
const StyledMapConfigDisplay = styled.div`
position: absolute;
z-index: 100;
bottom: 10px;
right: 10px;
background-color: ${theme.sidePanelBg};
font-size: 11px;
width: 300px;
color: ${theme.textColor};
word-wrap: break-word;
min-height: 60px;
padding: 10px;
`;
// Inject custom components
const KeplerGl = injectComponents([
[SidebarFactory, CustomSidebarFactory],
[PanelHeaderFactory, CustomPanelHeaderFactory],
[PanelToggleFactory, CustomPanelToggleFactory],
[CustomPanelsFactory, CustomSidePanelFactory],
[MapPopoverFactory, CustomMapPopoverFactory]
]);
class App extends Component {
componentDidMount() {
this.props.dispatch(wrapTo('map1', addDataToMap({datasets: sampleData, config})));
}
render() {
return (
{({height, width}) => (
)}
{this.props.app.mapConfig
? JSON.stringify(this.props.app.mapConfig)
: 'Click Save Config to Display Config Here'}
);
}
}
const mapStateToProps = state => state;
const dispatchToProps = dispatch => ({dispatch});
export default connect(mapStateToProps, dispatchToProps)(App);
================================================
FILE: examples/replace-component/src/components/custom-map-popover.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React from 'react';
import {MapPopoverFactory} from '@kepler.gl/components';
const CustomMapPopoverFactory = (...deps) => {
const MapPopover = MapPopoverFactory(...deps);
const MapPopoverWrapper = props => {
// Disable tooltip for point layer
if (props.layerHoverProp?.layer?.id === 'point_layer') {
return null;
}
return ;
};
return MapPopoverWrapper;
};
CustomMapPopoverFactory.deps = MapPopoverFactory.deps;
export default CustomMapPopoverFactory;
================================================
FILE: examples/replace-component/src/components/custom-panel.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React from 'react';
import {Icons} from '@kepler.gl/components';
function CustomSidePanelsFactory() {
const defaultPanels = [
{
id: 'rocket',
label: 'Rocket',
iconComponent: Icons.Globe
},
{
id: 'chart',
label: 'Chart',
iconComponent: Icons.LineChart
}
];
const defaultGetProps = props => ({
layers: props.layers
});
const CustomPanels = props => {
if (props.activeSidePanel === 'rocket') {
return Rocket
;
} else if (props.activeSidePanel === 'chart') {
return Charts?
;
}
return null;
};
CustomPanels.panels = defaultPanels;
CustomPanels.getProps = defaultGetProps;
return CustomPanels;
}
export default CustomSidePanelsFactory;
================================================
FILE: examples/replace-component/src/components/panel-header.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {PanelHeaderFactory} from '@kepler.gl/components';
// Custom Panel Header renders default panel header, changing its default props
// to avoid rendering any action items on the top right
export function CustomPanelHeaderFactory() {
const PanelHeader = PanelHeaderFactory();
PanelHeader.defaultProps = {
...PanelHeader.defaultProps,
actionItems: []
};
return PanelHeader;
}
export default CustomPanelHeaderFactory;
================================================
FILE: examples/replace-component/src/components/panel-toggle.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React from 'react';
import styled from 'styled-components';
import {PanelToggleFactory, Button, Icons, withState} from '@kepler.gl/components';
import {visStateLens} from '@kepler.gl/reducers';
import {setMapConfig} from '../app-reducer';
const StyledPanelToggleWrapper = styled.div`
display: flex;
justify-content: space-between;
padding-right: 16px;
background-color: ${props => props.theme.sidePanelHeaderBg};
`;
const ButtonWrapper = styled.div`
margin-bottom: 4px;
`;
const CustomPanelToggleFactory = (...deps) => {
const PanelToggle = PanelToggleFactory(...deps);
const PanelToggleWrapper = props => (
props.onClickSaveConfig(props.mapState)} width="120px">
Save Config
);
return withState(
// lenses
[visStateLens],
// mapStateToProps
state => ({mapState: state.keplerGl.map1}),
{
onClickSaveConfig: setMapConfig
}
)(PanelToggleWrapper);
};
CustomPanelToggleFactory.deps = PanelToggleFactory.deps;
export default CustomPanelToggleFactory;
================================================
FILE: examples/replace-component/src/components/side-bar.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React from 'react';
import {SidebarFactory, Icons} from '@kepler.gl/components';
import styled from 'styled-components';
const StyledSideBarContainer = styled.div`
.side-panel--container {
transform: scale(0.85);
transform-origin: top left;
height: 117.64%;
padding-top: 0;
padding-right: 0;
padding-bottom: 0;
padding-left: 0;
}
`;
const StyledCloseButton = styled.div`
align-items: center;
justify-content: center;
background-color: ${props => props.theme.primaryBtnBgd};
color: ${props => props.theme.primaryBtnColor};
display: flex;
height: 46px;
position: absolute;
top: 0;
width: 80px;
right: 0;
&:hover {
cursor: pointer;
background-color: ${props => props.theme.primaryBtnBgdHover};
}
`;
const CloseButtonFactory = () => {
const CloseButton = ({onClick, isOpen}) => (
);
return CloseButton;
};
// Custom sidebar will render kepler.gl default side bar
// adding a wrapper component to edit its style
function CustomSidebarFactory(CloseButton) {
const SideBar = SidebarFactory(CloseButton);
const CustomSidebar = props => (
);
return CustomSidebar;
}
// You can add custom dependencies to your custom factory
CustomSidebarFactory.deps = [CloseButtonFactory];
export default CustomSidebarFactory;
================================================
FILE: examples/replace-component/src/data/sample-data.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
export const config = {
version: 'v1',
config: {
visState: {
layers: [
{
type: 'point',
id: 'point_layer',
config: {
dataId: 'tree_data',
label: 'Trees',
color: [69, 138, 70],
columns: {lat: 'Location_latitude', lng: 'Location_longitude', altitude: null},
isVisible: true,
highlightColor: [255, 0, 0, 255]
},
visualChannels: {
sizeField: {name: 'Plan', type: 'integer'}
}
},
{
id: 'heatmap_layer',
type: 'heatmap',
config: {
dataId: 'tree_data',
label: 'Heatmap',
columns: {lat: 'Location_latitude', lng: 'Location_longitude'},
isVisible: true,
visConfig: {
opacity: 0.8,
colorRange: {
name: 'Global Warming',
type: 'sequential',
category: 'Uber',
colors: ['#5A1846', '#900C3F', '#C70039', '#E3611C', '#F1920E', '#FFC300']
},
radius: 46.4
}
},
visualChannels: {weightField: null, weightScale: 'linear'}
}
],
interactionConfig: {
tooltip: {
fieldsToShow: {tree_data: []},
compareMode: false,
compareType: 'absolute',
enabled: true
}
}
},
mapState: {
bearing: 0,
dragRotate: false,
latitude: 37.759775559999994,
longitude: -122.4423862,
pitch: 0,
zoom: 12,
isSplit: false
}
}
};
export default {
info: {
label: 'San Francisco Trees',
id: 'tree_data'
},
data: {
fields: [
{
name: 'TreeID'
},
{
name: 'Species'
},
{
name: 'Address'
},
{
name: 'Has_Species'
},
{
name: 'SiteInfo'
},
{
name: 'PlantType'
},
{
name: 'PlantDate'
},
{
name: 'Plan'
},
{
name: 'Age'
},
{
name: 'DBH'
},
{
name: 'Location_latitude'
},
{
name: 'Location_longitude'
}
],
rows: [
[
141565,
'Myoporum laetum :: Myoporum',
'501X Baker St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'7/21/88 0:00',
1988,
29,
21,
37.77596769,
-122.4413967
],
[
232565,
'Metrosideros excelsa :: New Zealand Xmas Tree',
'940 Elizabeth St',
false,
'Sidewalk: Curb side : Yard',
'Tree',
'3/20/17 0:00',
2017,
0,
3,
37.75171022,
-122.441498
],
[
119263,
'Pinus radiata :: Monterey Pine',
'495X Lakeshore Dr',
false,
'Median : Yard',
'Tree',
null,
null,
null,
null,
null,
null
],
[
207368,
'Ligustrum japonicum :: Japanese Privet',
'920 Kirkham St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
6,
37.76021031,
-122.4707394
],
[
188702,
'Acacia melanoxylon :: Blackwood Acacia',
'1501 Evans Ave',
false,
':',
'Tree',
null,
null,
null,
17,
37.74220867,
-122.3872932
],
[
141566,
'Myoporum laetum :: Myoporum',
'501X Baker St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
14,
37.77570453,
-122.4414629
],
[
188697,
'Acacia melanoxylon :: Blackwood Acacia',
'1301 Evans Ave',
false,
':',
'Tree',
null,
null,
null,
15,
37.73973386,
-122.3829339
],
[
122650,
'Acer rubrum :: Red Maple',
'300x Hickory St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'11/10/16 0:00',
2016,
1,
3,
null,
null
],
[
203507,
'Agonis flexuosa :: Peppermint Willow',
'920 Kirkham St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
23,
37.76018051,
-122.4708661
],
[
122670,
'Lyonothamnus floribundus subsp. asplenifolius :: Santa Cruz Ironwood',
'301x Hickory St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'11/10/16 0:00',
2016,
1,
3,
null,
null
],
[
122658,
'Acer rubrum :: Red Maple',
'300x Hickory St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'11/10/16 0:00',
2016,
1,
3,
null,
null
],
[
122660,
'Acer rubrum :: Red Maple',
'300x Hickory St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'11/10/16 0:00',
2016,
1,
3,
null,
null
],
[
122648,
'Acer rubrum :: Red Maple',
'300x Hickory St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'11/10/16 0:00',
2016,
1,
3,
null,
null
],
[
196590,
'Pyrus calleryana :: Ornamental Pear',
'43 Lafayette St',
false,
':',
'Tree',
null,
null,
null,
10,
37.77303718,
-122.4172458
],
[
196591,
'Pyrus calleryana :: Ornamental Pear',
'43 Lafayette St',
false,
':',
'Tree',
null,
null,
null,
13,
37.77305251,
-122.4172809
],
[
122649,
'Acer rubrum :: Red Maple',
'300x Hickory St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'11/10/16 0:00',
2016,
1,
3,
null,
null
],
[
145278,
'Fraxinus uhdei :: Shamel Ash: Evergreen Ash',
'730 11th Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/20/17 0:00',
2017,
0,
0,
37.77448101,
-122.4691091
],
[
96369,
'Lophostemon confertus :: Brisbane Box',
'168 Cervantes Blvd',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'8/9/11 0:00',
2011,
6,
24,
37.80468521,
-122.4402315
],
[
182260,
"Arbutus 'Marina' :: Hybrid Strawberry Tree",
'1471 28th Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
5,
37.75995923,
-122.4866885
],
[
251179,
'Podocarpus gracilor :: Fern Pine',
'1043 Minna St',
false,
'Sidewalk: Property side : Cutout',
'Tree',
null,
null,
null,
null,
37.77353367,
-122.4169045
],
[
251178,
'Podocarpus gracilor :: Fern Pine',
'1043 Minna St',
false,
'Sidewalk: Property side : Cutout',
'Tree',
null,
null,
null,
null,
37.77353367,
-122.4169045
],
[
203506,
'Agonis flexuosa :: Peppermint Willow',
'910 Kirkham St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
15,
37.76026555,
-122.4705695
],
[
52566,
'Hakea suaveolens :: Sweet Hakea Tree',
'1555 40th Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'1/12/16 0:00',
2016,
1,
2,
37.75778273,
-122.4993677
],
[
22346,
'Lophostemon confertus :: Brisbane Box',
'5280 03rd St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'6/27/14 0:00',
2014,
3,
3,
37.72954822,
-122.3926894
],
[
23567,
'Platanus x hispanica :: Sycamore: London Plane',
'2975 Van Ness Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'5/27/92 0:00',
1992,
25,
3,
37.80304673,
-122.4250636
],
[
237469,
'Prunus cerasifera :: Cherry Plum',
'4200 23rd St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'7/17/00 0:00',
2000,
17,
0,
37.7528239,
-122.4366208
],
[
244214,
'Tree(s) ::',
'342 Scott St',
false,
'Sidewalk: Curb side : Yard',
'Tree',
'3/20/17 0:00',
2017,
0,
3,
37.77300994,
-122.4355982
],
[
21823,
'Platanus x hispanica :: Sycamore: London Plane',
'2741 Taylor St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'8/19/06 0:00',
2006,
11,
3,
37.80797069,
-122.4158502
],
[
188686,
'Acacia melanoxylon :: Blackwood Acacia',
'1300 Evans Ave',
false,
':',
'Tree',
null,
null,
null,
12,
37.73901484,
-122.381104
],
[
196592,
'Pyrus calleryana :: Ornamental Pear',
'43 Lafayette St',
false,
':',
'Tree',
null,
null,
null,
8,
37.77310137,
-122.4173585
],
[
22614,
'Acacia melanoxylon :: Blackwood Acacia',
'1001 Turk St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
24,
37.78136501,
-122.4248636
],
[
10933,
'Lophostemon confertus :: Brisbane Box',
'1359 Hudson Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
12,
37.73743182,
-122.3840631
],
[
2889,
'Platanus x hispanica :: Sycamore: London Plane',
'1545 California St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
65,
37.79059396,
-122.4198251
],
[
240126,
"Prunus serrulata 'Kwanzan' :: Kwanzan Flowering Cherry",
'20 Lily St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
4,
37.77473647,
-122.4213262
],
[
183515,
'Myoporum laetum :: Myoporum',
'2562 26th Ave',
false,
'Sidewalk: Curb side : Yard',
'Tree',
'3/21/17 0:00',
2017,
0,
3,
37.73970633,
-122.4828998
],
[
13434,
'Platanus x hispanica :: Sycamore: London Plane',
'2X Market St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
6,
37.79448363,
-122.3950546
],
[
226924,
'Juniperus chinensis :: Juniper',
'1 Newburg St',
false,
'Sidewalk: Property side : Pot',
'Tree',
null,
null,
null,
11,
37.74625595,
-122.4338758
],
[
192589,
'Lophostemon confertus :: Brisbane Box',
'1390 Mission St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
4,
37.7755405,
-122.4157935
],
[
3558,
'Lophostemon confertus :: Brisbane Box',
'101 Cargo Way',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/21/17 17:52',
2017,
0,
6,
37.74050235,
-122.3776366
],
[
222540,
'Callistemon viminalis :: Weeping Bottlebrush',
'1 Newburg St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
6,
37.74632546,
-122.4338277
],
[
192590,
'Lophostemon confertus :: Brisbane Box',
'1390 Mission St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
4,
37.7755405,
-122.4157935
],
[
28375,
'Magnolia grandiflora :: Southern Magnolia',
'3014 Sacramento St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'10/9/03 0:00',
2003,
14,
3,
37.78875791,
-122.4429785
],
[
222539,
'Callistemon viminalis :: Weeping Bottlebrush',
'1 Newburg St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
6,
37.74630146,
-122.4338571
],
[
226925,
'Juniperus chinensis :: Juniper',
'1 Newburg St',
false,
'Sidewalk: Property side : Pot',
'Tree',
null,
null,
null,
19,
37.74628109,
-122.4338516
],
[
27522,
'Metrosideros excelsa :: New Zealand Xmas Tree',
'3201 California St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
8,
37.78709954,
-122.4473685
],
[
18228,
'Maytenus boaria :: Mayten',
'1737-1795 Post St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'4/9/04 0:00',
2004,
13,
12,
37.78534132,
-122.431005
],
[
17325,
'Fraxinus americana :: American Ash',
'150 Otis St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'8/31/16 0:00',
2016,
1,
3,
37.77095437,
-122.4203558
],
[
3528,
'Lophostemon confertus :: Brisbane Box',
'201X Cargo Way',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/21/17 16:23',
2017,
0,
3,
37.74144532,
-122.3793046
],
[
251186,
'Juniperus chinensis :: Juniper',
'3042 Steiner St',
false,
'Sidewalk: Property side : Cutout',
'Tree',
null,
null,
null,
null,
37.79753285,
-122.4371106
],
[
138938,
'Tree(s) ::',
'632 HAYES ST',
false,
'Sidewalk: Curb side : Yard',
'Tree',
'3/21/17 0:00',
2017,
0,
3,
37.77646121,
-122.4269126
],
[
60867,
'Tree(s) ::',
null,
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'4/25/83 0:00',
1983,
34,
null,
null,
null
],
[
233897,
'Araucaria heterophylla :: Norfolk Island Pine',
'1021 Noe St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
9,
37.75266993,
-122.4318862
],
[
251187,
'Schinus terebinthifolius :: Brazilian Pepper',
'1 Baker St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.77112958,
-122.4406092
],
[
121137,
'Pittosporum undulatum :: Victorian Box',
'1388x Minna St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'9/8/16 0:00',
2016,
1,
3,
null,
null
],
[
2909,
'Platanus x hispanica :: Sycamore: London Plane',
'1700 California St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
30,
37.79038763,
-122.4229834
],
[
27602,
'Pittosporum undulatum :: Victorian Box',
'988 Fulton St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
20,
37.77766599,
-122.4324106
],
[
44642,
'Tree(s) ::',
null,
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'4/29/01 0:00',
2001,
16,
null,
null,
null
],
[
4749,
'Acacia melanoxylon :: Blackwood Acacia',
'1255 Columbus Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'8/3/15 0:00',
2015,
2,
8,
37.80577303,
-122.4182612
],
[
44994,
'Tree(s) ::',
null,
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'4/25/01 0:00',
2001,
16,
null,
null,
null
],
[
121139,
'Pittosporum undulatum :: Victorian Box',
'1388x Minna St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'9/8/16 0:00',
2016,
1,
3,
null,
null
],
[
226596,
'Leptospermum scoparium :: New Zealand Tea Tree',
'1 Newburg St',
false,
'Sidewalk: Property side : Pot',
'Tree',
null,
null,
null,
4,
37.74632473,
-122.4337918
],
[
239043,
'Pyrus calleryana :: Ornamental Pear',
'10 12th St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
13,
37.77381038,
-122.4194082
],
[
222541,
'Callistemon citrinus :: Lemon Bottlebrush',
'1 Newburg St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
5,
37.7463451,
-122.433801
],
[
138748,
'Lophostemon confertus :: Brisbane Box',
'1614 Broderick St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
0,
37.7853077,
-122.4415226
],
[
226926,
'Juniperus chinensis :: Juniper',
'1 Newburg St',
false,
'Sidewalk: Property side : Pot',
'Tree',
null,
null,
null,
15,
37.74630146,
-122.4338212
],
[
222538,
'Callistemon viminalis :: Weeping Bottlebrush',
'1 Newburg St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
6,
37.74627164,
-122.4338847
],
[
166623,
'Potential Site :: Potential Site',
'520 Jersey St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/21/17 0:00',
2017,
0,
3,
37.75036438,
-122.4371358
],
[
251188,
'Schinus terebinthifolius :: Brazilian Pepper',
'1 Baker St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.77112958,
-122.4406092
],
[
19206,
'Laurus nobilis :: Sweet Bay: Grecian Laurel',
'630 Sansome St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
12,
37.79625001,
-122.4016986
],
[
121138,
'Pittosporum undulatum :: Victorian Box',
'1388x Minna St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'9/8/16 0:00',
2016,
1,
3,
null,
null
],
[
251206,
"Prunus serrulata 'Kwanzan' :: Kwanzan Flowering Cherry",
'270 Trumbull St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.73083203,
-122.4245292
],
[
25725,
'Platanus x hispanica :: Sycamore: London Plane',
'729 Grove St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
12,
37.77705272,
-122.4286972
],
[
251249,
'Private shrub :: Private Shrub',
'161 Lundys Ln',
false,
'Front Yard : Yard',
'Landscaping',
null,
null,
null,
null,
37.7429691,
-122.4194092
],
[
251293,
'::',
'3789 Market St',
false,
'Sidewalk: Property side : Cutout',
'Landscaping',
null,
null,
null,
null,
37.75373446,
-122.442203
],
[
221749,
'Pittosporum undulatum :: Victorian Box',
'275 Grattan St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
null,
null,
null,
24,
37.76366261,
-122.4520649
],
[
221750,
'Pittosporum undulatum :: Victorian Box',
'275 Grattan St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
null,
null,
null,
11,
37.76366331,
-122.4521462
],
[
245474,
'Pittosporum undulatum :: Victorian Box',
'275 Grattan St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
null,
null,
null,
19,
37.76363745,
-122.4522558
],
[
251419,
'Melaleuca quinquenervia :: Cajeput',
'39 Jones St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'4/14/15 0:00',
2015,
2,
null,
37.78164643,
-122.4122686
],
[
251418,
'Melaleuca quinquenervia :: Cajeput',
'39 Jones St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'4/14/15 0:00',
2015,
2,
null,
37.78164643,
-122.4122686
],
[
16698,
'Pittosporum undulatum :: Victorian Box',
'950X Noriega St',
false,
'Median : Cutout',
'Landscaping',
null,
null,
null,
12,
37.75434951,
-122.4740143
],
[
251532,
'::',
'2100X 20th St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'5/15/17 0:00',
2017,
0,
3,
null,
null
],
[
251531,
'::',
'2100X 20th St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'5/15/17 0:00',
2017,
0,
3,
null,
null
],
[
251642,
'Shrub :: Shrub',
'2253 Broderick St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
null,
null,
null,
null,
37.79122797,
-122.4428704
],
[
251700,
'::',
'1560 Sanchez St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'6/5/17 0:00',
2017,
0,
3,
37.74408823,
-122.4290963
],
[
253008,
'::',
'1201 Tennessee St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'7/10/17 0:00',
2017,
0,
3,
37.7563302,
-122.3890342
],
[
208471,
'Cordyline australis :: Dracena Palm',
'1175 Kirkham St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'8/23/17 0:00',
2017,
0,
3,
37.75989512,
-122.4735278
],
[
253411,
'Lophostemon confertus :: Brisbane Box',
'1321 Mission St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'8/30/17 0:00',
2017,
0,
3,
37.77599135,
-122.4149312
],
[
253409,
'Lophostemon confertus :: Brisbane Box',
'1321 Mission St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'8/30/17 0:00',
2017,
0,
3,
37.77599135,
-122.4149312
],
[
253410,
'Lophostemon confertus :: Brisbane Box',
'1321 Mission St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'8/30/17 0:00',
2017,
0,
3,
37.77599135,
-122.4149312
],
[
253412,
'Lophostemon confertus :: Brisbane Box',
'1321 Mission St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'8/30/17 0:00',
2017,
0,
3,
37.77599135,
-122.4149312
],
[
225282,
'Pittosporum crassifolium :: Karo Tree',
'101 Rivoli St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
null,
null,
null,
6,
37.76244046,
-122.4496446
],
[
173852,
'::',
'450 Toland St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'1/27/17 0:00',
2017,
0,
3,
37.74445161,
-122.3985096
],
[
173849,
'::',
'450 Toland St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'1/27/17 0:00',
2017,
0,
3,
37.74445161,
-122.3985096
],
[
173850,
'::',
'450 Toland St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'1/27/17 0:00',
2017,
0,
3,
37.74445161,
-122.3985096
],
[
173851,
'::',
'450 Toland St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'1/27/17 0:00',
2017,
0,
3,
37.74445161,
-122.3985096
],
[
173848,
'::',
'450 Toland St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'1/27/17 0:00',
2017,
0,
3,
37.74445161,
-122.3985096
],
[
173846,
'::',
'450 Toland St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'1/27/17 0:00',
2017,
0,
3,
37.74445161,
-122.3985096
],
[
173847,
'::',
'450 Toland St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'1/27/17 0:00',
2017,
0,
3,
37.74445161,
-122.3985096
],
[
173853,
'::',
'450 Toland St',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'1/27/17 0:00',
2017,
0,
3,
37.74445161,
-122.3985096
],
[
107717,
'Tree(s) ::',
'2400X 25th Ave',
false,
'Sidewalk: Curb side : Cutout',
'Landscaping',
'10/16/14 0:00',
2014,
3,
3,
37.74238326,
-122.4917845
],
[
110194,
'Ginkgo biloba :: Maidenhair Tree',
'2123 Pierce St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/26/15 0:00',
2015,
2,
3,
37.78980712,
-122.4374813
],
[
59839,
'Metrosideros excelsa :: New Zealand Xmas Tree',
'1201 Palou Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'10/10/81 0:00',
1981,
36,
3,
37.72976741,
-122.3836854
],
[
183689,
'Rhamnus alaternus :: Italian Buckthorn',
'1341 42nd Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
6,
37.76162779,
-122.5017998
],
[
18916,
'Olea europaea :: Olive Tree',
'2621 Sacramento St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
14,
37.78950262,
-122.4361188
],
[
20281,
'Metrosideros excelsa :: New Zealand Xmas Tree',
'20X Sunset Blvd',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
12,
null,
null
],
[
119758,
'Maytenus boaria :: Mayten',
'151X Octavia St Frontage West',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
null,
null
],
[
228560,
'Lophostemon confertus :: Brisbane Box',
'700 Valencia St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
7,
37.76151469,
-122.4216727
],
[
18052,
'Ulmus parvifolia :: Chinese Elm',
'2840 Pine St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
18,
37.78687837,
-122.4426898
],
[
212622,
'Prunus cerasifera :: Cherry Plum',
'115 Beverly St',
false,
'Sidewalk: Property side : Yard',
'Tree',
null,
null,
null,
4,
37.71819234,
-122.4717606
],
[
20398,
'Cupressus macrocarpa :: Monterey Cypress',
'262X Sunset Blvd',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
24,
null,
null
],
[
66855,
'Maytenus boaria :: Mayten',
'2041 Hayes St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'11/15/91 0:00',
1991,
26,
8,
37.77336241,
-122.4501107
],
[
237033,
"Prunus serrulata 'Kwanzan' :: Kwanzan Flowering Cherry",
'100 Octavia St',
false,
':',
'Tree',
null,
null,
null,
6,
37.77334931,
-122.4236445
],
[
116641,
'Ginkgo biloba :: Maidenhair Tree',
'270 Brannan St',
false,
'Sidewalk: Property side : Cutout',
'Tree',
null,
null,
null,
1,
37.78270018,
-122.3912181
],
[
218972,
'Fraxinus americana :: American Ash',
'742 Myra Way',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
10,
37.74058076,
-122.4513096
],
[
47510,
"Arbutus 'Marina' :: Hybrid Strawberry Tree",
'54X Cayuga Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/27/17 0:00',
2017,
0,
3,
37.73158339,
-122.4295272
],
[
237030,
"Prunus serrulata 'Kwanzan' :: Kwanzan Flowering Cherry",
'100 Octavia St',
false,
':',
'Tree',
null,
null,
null,
5,
37.77325086,
-122.4236179
],
[
213016,
'Tree(s) ::',
'120 Ortega St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/27/17 0:00',
2017,
0,
3,
37.75295695,
-122.4649514
],
[
228561,
'Lophostemon confertus :: Brisbane Box',
'700 Valencia St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
7,
37.76156532,
-122.4216758
],
[
72565,
'Ginkgo biloba :: Maidenhair Tree',
'270 Brannan St',
false,
'Sidewalk: Property side : Cutout',
'Tree',
'11/16/96 0:00',
1996,
21,
3,
37.78270018,
-122.3912181
],
[
116640,
'Ginkgo biloba :: Maidenhair Tree',
'270 Brannan St',
false,
'Sidewalk: Property side : Cutout',
'Tree',
null,
null,
null,
1,
37.78270018,
-122.3912181
],
[
6337,
'Metrosideros excelsa :: New Zealand Xmas Tree',
'1916 Ellis St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
18,
37.78175831,
-122.4377689
],
[
832,
'Lagunaria patersonii :: Primrose Tree',
'1396 47th Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:18',
2017,
0,
3,
37.76054428,
-122.5069327
],
[
251241,
'Cupressocyparis leylandii :: Leyland Cypress',
'2305 Golden Gate Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.77731326,
-122.448748
],
[
18836,
"Ficus microcarpa nitida 'Green Gem' :: Indian Laurel Fig Tree 'Green Gem'",
'2055 Sacramento St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
12,
37.79068779,
-122.4267446
],
[
11598,
'Lagunaria patersonii :: Primrose Tree',
'4134 Judah St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 11:51',
2017,
0,
3,
37.76048345,
-122.5065435
],
[
111561,
'Eriobotrya deflexa :: Bronze Loquat',
'1498x Kansas St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 0:00',
2017,
0,
3,
37.75089751,
-122.402317
],
[
97319,
'Lagunaria patersonii :: Primrose Tree',
'1038 Taraval St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:52',
2017,
0,
3,
37.74306751,
-122.4774242
],
[
58021,
'Lagunaria patersonii :: Primrose Tree',
'4026 Irving St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:07',
2017,
0,
3,
37.76257173,
-122.5012197
],
[
175046,
'Metrosideros excelsa :: New Zealand Xmas Tree',
'80X Junipero Serra Blvd',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
4,
37.71164354,
-122.4709833
],
[
26071,
'Melaleuca quinquenervia :: Cajeput',
'247 Orizaba Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 13:41',
2017,
0,
3,
37.71342972,
-122.4626502
],
[
11606,
'Lagunaria patersonii :: Primrose Tree',
'4200x Judah St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 11:54',
2017,
0,
3,
37.76045095,
-122.5071358
],
[
36617,
'Robinia x ambigua :: Locust',
null,
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'5/20/98 0:00',
1998,
19,
null,
null,
null
],
[
24532,
'Lagunaria patersonii :: Primrose Tree',
'1395 47th Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:21',
2017,
0,
3,
37.76072337,
-122.5070915
],
[
5972,
'Pittosporum undulatum :: Victorian Box',
'1550 Eddy St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'2/2/90 0:00',
1990,
27,
8,
37.78138444,
-122.4331105
],
[
830,
"Tristaniopsis laurina 'Elegant' :: Small-leaf Tristania 'Elegant'",
'1384 47th Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:15',
2017,
0,
3,
37.76071635,
-122.5069447
],
[
251225,
'Jacaranda mimosifolia :: Jacaranda',
'1 Yukon St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.75927435,
-122.4422441
],
[
54712,
'Lagunaria patersonii :: Primrose Tree',
'4508 Irving St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 11:58',
2017,
0,
3,
37.76234527,
-122.5063635
],
[
3193,
'Platanus x hispanica :: Sycamore: London Plane',
'3698 California St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
16,
37.78640011,
-122.454267
],
[
21682,
'Prunus serrulata :: Ornamental Cherry',
'1830 Sutter St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 0:00',
2017,
0,
3,
37.78651577,
-122.4305403
],
[
97322,
'Lagunaria patersonii :: Primrose Tree',
'1055 Taraval St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:42',
2017,
0,
3,
37.74287614,
-122.4775411
],
[
175377,
'Ulmus pumila :: Siberian Elm',
'80X Junipero Serra Blvd',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
2,
37.71516198,
-122.4717512
],
[
142720,
'::',
'1170 COLUMBUS AVE',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.80483123,
-122.416565
],
[
251231,
'Pinus radiata :: Monterey Pine',
'164 Serrano Dr',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.72047169,
-122.4780251
],
[
29943,
"Tristaniopsis laurina 'Elegant' :: Small-leaf Tristania 'Elegant'",
'242 Broad St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:23',
2017,
0,
3,
37.71323398,
-122.4605594
],
[
97323,
'Lagunaria patersonii :: Primrose Tree',
'1011 Taraval St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:25',
2017,
0,
3,
37.74289372,
-122.4772138
],
[
11582,
'Lagunaria patersonii :: Primrose Tree',
'4000 Judah St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 11:49',
2017,
0,
3,
37.76055019,
-122.5050036
],
[
251230,
'Ligustrum lucidum :: Glossy Privet',
'99x Ogden Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.73605476,
-122.4163909
],
[
251232,
'Ligustrum lucidum :: Glossy Privet',
'99x Ogden Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.73605476,
-122.4163909
],
[
179480,
'Schinus terebinthifolius :: Brazilian Pepper',
'100 Serrano Dr',
false,
'Sidewalk: Curb side : Yard',
'Tree',
null,
null,
null,
11,
37.72024935,
-122.4780157
],
[
251221,
'Tree(s) ::',
'2401X Washington St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 0:00',
2017,
0,
3,
null,
null
],
[
48827,
'Lophostemon confertus :: Brisbane Box',
'435 Pacific Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'11/7/02 0:00',
2002,
15,
5,
37.79736024,
-122.4027685
],
[
251242,
'Cupressocyparis leylandii :: Leyland Cypress',
'2449 Golden Gate Ave',
false,
'Sidewalk: Property side : Cutout',
'Tree',
null,
null,
null,
null,
37.7770353,
-122.4514366
],
[
48332,
'Tree(s) ::',
null,
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'7/17/02 0:00',
2002,
15,
null,
null,
null
],
[
175044,
'Metrosideros excelsa :: New Zealand Xmas Tree',
'80x Junipero Serra Blvd',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
19,
37.71158043,
-122.4709734
],
[
251226,
'Koelreuteria paniculata :: Golden Rain Tree',
'1 Yukon St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.75950087,
-122.4421669
],
[
17881,
'Olea europaea :: Olive Tree',
'2205 Pine St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
12,
37.78806671,
-122.4322373
],
[
24515,
'Lophostemon confertus :: Brisbane Box',
'2030 Fell St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'4/7/16 7:40',
2016,
1,
3,
37.77238102,
-122.4513341
],
[
97317,
'Lagunaria patersonii :: Primrose Tree',
'1000 Taraval St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:59',
2017,
0,
3,
37.74308434,
-122.4769891
],
[
2985,
'Platanus x hispanica :: Sycamore: London Plane',
'2253 California St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
65,
37.78912498,
-122.4314293
],
[
182083,
'Lagunaria patersonii :: Primrose Tree',
'1101 Taraval St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 12:33',
2017,
0,
3,
37.74285808,
-122.4780077
],
[
18700,
'Platanus x hispanica :: Sycamore: London Plane',
'100X Richardson Ave',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
18,
37.79975916,
-122.4460044
],
[
9914,
"Ficus microcarpa nitida 'Green Gem' :: Indian Laurel Fig Tree 'Green Gem'",
'1900 Gough St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
126,
37.79116413,
-122.4257789
],
[
93463,
"Prunus x 'Amanogawa' :: Flowering Cherry",
'1739 Taraval St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'3/28/17 13:05',
2017,
0,
3,
37.74255391,
-122.4849289
],
[
15429,
"Ficus microcarpa nitida 'Green Gem' :: Indian Laurel Fig Tree 'Green Gem'",
'2125 Mission St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'4/9/15 0:00',
2015,
2,
15,
37.76296062,
-122.419386
],
[
138801,
'Maytenus boaria :: Mayten',
'2375 PINE ST',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'5/9/97 0:00',
1997,
20,
2,
37.78770158,
-122.4350685
],
[
251243,
"Ceanothus 'Ray Hartman' :: California Lilac 'Ray Hartman'",
'299x Chapman St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.7417247,
-122.411639
],
[
138359,
'Ficus retusa nitida :: Banyan Fig',
'2060 SUTTER ST',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
15,
37.78607841,
-122.4338643
],
[
251248,
'Corymbia ficifolia :: Red Flowering Gum',
'829 Chenery St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.73477716,
-122.4360662
],
[
138368,
'Ficus retusa nitida :: Banyan Fig',
'2060 SUTTER ST',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
13,
37.78600955,
-122.4344937
],
[
138807,
'Ulmus parvifolia :: Chinese Elm',
'2355 PINE ST',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
13,
37.78777373,
-122.4346006
],
[
57209,
'Magnolia grandiflora :: Southern Magnolia',
'2898 Clay St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'12/15/14 0:00',
2014,
3,
3,
37.78998742,
-122.4404101
],
[
210495,
'Myoporum laetum :: Myoporum',
'365 San Leandro Way',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
21,
37.73051136,
-122.4689316
],
[
138369,
'Ficus retusa nitida :: Banyan Fig',
'2060 SUTTER ST',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
16,
37.78599791,
-122.4345397
],
[
6069,
'Metrosideros excelsa :: New Zealand Xmas Tree',
'1930 Eddy St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'5/26/15 0:00',
2015,
2,
3,
37.78057618,
-122.439557
],
[
138802,
'Ulmus parvifolia :: Chinese Elm',
'2375 PINE ST',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
12,
37.78771109,
-122.4350205
],
[
138365,
'Ficus retusa nitida :: Banyan Fig',
'2060 SUTTER ST',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
19,
37.78603526,
-122.4342542
],
[
251246,
'Metrosideros excelsa :: New Zealand Xmas Tree',
'722X Mendell St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
null,
37.73887284,
-122.3866046
],
[
251245,
'Corymbia ficifolia :: Red Flowering Gum',
'701 Chenery St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'6/4/92 0:00',
1992,
25,
null,
37.73445362,
-122.4338962
],
[
103786,
'Magnolia grandiflora :: Southern Magnolia',
'1221 Polk St',
false,
'Sidewalk: Curb side : Pot',
'Tree',
'11/1/09 0:00',
2009,
8,
3,
37.78810145,
-122.4202677
],
[
138362,
'Ficus retusa nitida :: Banyan Fig',
'2060 SUTTER ST',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
15,
37.78605488,
-122.4340541
],
[
134567,
'Platanus x hispanica :: Sycamore: London Plane',
'99 Grove St',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
'7/6/11 0:00',
2011,
6,
4,
37.77846618,
-122.4173997
],
[
138367,
'Ficus retusa nitida :: Banyan Fig',
'2060 SUTTER ST',
false,
'Sidewalk: Curb side : Cutout',
'Tree',
null,
null,
null,
15,
37.78601298,
-122.4344509
]
]
}
};
================================================
FILE: examples/replace-component/src/main.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React from 'react';
import ReactDOM from 'react-dom/client';
import document from 'global/document';
import Modal from 'react-modal';
import {Provider} from 'react-redux';
import store from './store';
import App from './app';
Modal.setAppElement('#root');
const Root = () => (
);
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render( );
================================================
FILE: examples/replace-component/src/store.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {createStore, combineReducers, applyMiddleware, compose} from 'redux';
import keplerGlReducer, {enhanceReduxMiddleware} from '@kepler.gl/reducers';
import appReducer from './app-reducer';
const customizedKeplerGlReducer = keplerGlReducer.initialState({
uiState: {
// hide side panel when mounted
activeSidePanel: null,
// hide all modals whtn mounted
currentModal: null
}
});
const reducers = combineReducers({
keplerGl: customizedKeplerGlReducer,
app: appReducer
});
const middlewares = enhanceReduxMiddleware([]);
const enhancers = [applyMiddleware(...middlewares)];
export default createStore(reducers, {}, compose(...enhancers));
================================================
FILE: examples/umd-client/README.md
================================================
# Umd client
A single html file loading kepler.gl. This html is loading kepler.gl and its dependencies from the script tags in the header. You can embed this html in your Medium or other single page blog page.
### Usage
Add your own Mapbox access token to line 48:
```js
const MAPBOX_TOKEN = 'PROVIDE_MAPBOX_TOKEN';
```
**Note**: You will need internet to load the map and kepler.gl scripts.
================================================
FILE: examples/umd-client/index.html
================================================
Kepler.gl embedded map
================================================
FILE: jest.config.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
/** @type {import('jest').Config} */
const config = {
collectCoverageFrom: ['/src/**/*.{js|ts|tsx}', '!/src/**/*.spec.js'],
coverageDirectory: './jest-coverage',
testEnvironment: 'jsdom',
setupFilesAfterEnv: ['/jest.setup.js'],
verbose: true,
testPathIgnorePatterns: [
// ignore all dist computed directories
'/.*(/|\\\\)dist(/|\\\\).*'
],
testMatch: [
'/src/**/*.spec.(ts|tsx)',
'/src/**/*.spec.js',
'/test/**/*.spec.js'
],
// Per https://jestjs.io/docs/configuration#transformignorepatterns-arraystring, transformIgnorePatterns ignores
// node_modules and pnp folders by default so that they are not transpiled
// Some libraries (even if transitive) are transitioning to ESM and need additional transpilation. Relevant issues:
// - tiny-sdf: https://github.com/visgl/deck.gl/issues/7735
transformIgnorePatterns: [
'/node_modules\\/(?!(.*@mapbox\\/tiny-sdf\\.*|@loaders\\.gl))',
'\\.pnp\\.[^\\/]+$'
]
};
module.exports = config;
================================================
FILE: jest.setup.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import '@testing-library/jest-dom';
// Disable polyfills as // ReferenceError: ReadableStream is not defined in @loaders.gl/polyfills
// import {installFilePolyfills} from '@loaders.gl/polyfills';
// installFilePolyfills();
// Remove once @loaders.gl/polyfills are reenabled
const {TextDecoder, TextEncoder} = require('node:util');
Object.defineProperties(globalThis, {
TextDecoder: {value: TextDecoder},
TextEncoder: {value: TextEncoder}
});
jest.mock('mapbox-gl/dist/mapbox-gl', () => ({
Map: () => ({})
}));
jest.mock('@kepler.gl/utils', () => ({
...jest.requireActual('@kepler.gl/utils'),
hasPortableWidth: jest.fn(),
hasMobileWidth: jest.fn()
}));
// @loaders.gl/parquet isn't tested in jest atm, and is generating errors
jest.mock('@loaders.gl/parquet', () => ({}));
global.URL.createObjectURL = jest.fn();
================================================
FILE: jsconfig.json
================================================
{
"compilerOptions": {
"baseUrl": "./src"
},
"include": [
"src/**/*",
"test/**/*"
]
}
================================================
FILE: package.json
================================================
{
"name": "kepler.gl",
"author": "Shan He ",
"version": "3.2.6",
"description": "kepler.gl is a webgl based application to visualize large scale location data in the browser",
"license": "MIT",
"main": "dist/index.js",
"types": "./types.d.ts",
"keywords": [
"babel",
"es6",
"react",
"webgl",
"visualization",
"deck.gl"
],
"private": true,
"workspaces": [
"./src/types",
"./src/constants",
"./src/common-utils",
"./src/utils",
"./src/styles",
"./src/localization",
"./src/deckgl-layers",
"./src/deckgl-arrow-layers",
"./src/table",
"./src/layers",
"./src/schemas",
"./src/cloud-providers",
"./src/processors",
"./src/tasks",
"./src/actions",
"./src/effects",
"./src/reducers",
"./src/components",
"./src/duckdb",
"./src/ai-assistant"
],
"repository": {
"type": "git",
"url": "https://github.com/keplergl/kepler.gl.git"
},
"scripts": {
"bootstrap": "PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true git submodule update --init --recursive && yarn install && yarn fix-dependencies",
"install:example": "cd examples/demo-app && NODE_OPTIONS=--openssl-legacy-provider yarn",
"install:web": "yarn install:example && cd website && yarn",
"install-and-start": "node ./scripts/install-and-start",
"test-fast": "yarn test-node-debug && yarn test-browser-debug",
"test-node": "yarn test-node-debug | tap-spec",
"test-browser": "yarn test-browser-debug | tap-spec",
"test-headless": "NODE_ENV=test node ./test/browser-drive.js",
"test-browser-drive": "NODE_ENV=test node ./test/browser-drive.js debug",
"test-node-debug": "NODE_ENV=test node -r ./babel-register.js ./test/node.js",
"test-browser-debug": "NODE_ENV=test node -r ./babel-register.js ./test/setup-browser-env.js ./test/js-dom.js",
"test-jest": "jest",
"test-tape": "yarn test-node && yarn test-browser",
"test": "yarn test-jest && yarn test-tape",
"cover": "yarn cover-tape && yarn cover-jest && yarn cover-merge && yarn cover-report",
"cover-tape": "nyc --reporter=json --report-dir=tape-coverage --reporter=lcov yarn test-tape",
"cover-jest": "jest --coverage --reporter=lcov --watchAll=false",
"cover-merge": "istanbul-merge --out=coverage/coverage-all.json tape-coverage/coverage-final.json jest-coverage/coverage-final.json",
"cover-report": "nyc report -t coverage --report-dir coverage --reporter=json --reporter=lcov",
"start": "NODE_OPTIONS=--openssl-legacy-provider yarn install-and-start examples/demo-app start:local",
"start:deck": "NODE_OPTIONS=--openssl-legacy-provider yarn install-and-start examples/demo-app start:local-deck",
"start:deck-src": "NODE_OPTIONS=--openssl-legacy-provider yarn install-and-start examples/demo-app start:local-deck-src",
"start:loaders-src": "NODE_OPTIONS=--openssl-legacy-provider yarn install-and-start examples/demo-app start:local-loaders-src",
"start:open-modal": "yarn install-and-start examples/open-modal start-local",
"start:custom-reducer": "yarn install-and-start examples/custom-reducer start-local",
"start:replace-component": "yarn install-and-start examples/replace-component start:local",
"start:custom-theme": "yarn install-and-start examples/custom-theme start-local",
"start:custom-map-style": "yarn install-and-start examples/custom-map-style start-local",
"start:node-app": "yarn install-and-start examples/node-app start-local",
"start:web": "yarn install-and-start website start",
"start:https": "yarn install-and-start examples/demo-app start-local-https",
"start:e2e": "yarn install-and-start examples/demo-app start-local-e2e",
"build": "NODE_OPTIONS=--openssl-legacy-provider rm -fr dist && babel src/{actions,components,reducers,cloud-providers,localization,tasks,ai-assistant} --out-dir dist --source-maps inline --extensions '.ts,.tsx,.js,.jsx' --ignore '**/*.d.ts'",
"build:umd": "node ./esbuild/umd-esbuild.config.mjs",
"build:types": "tsc --project tsconfig.production.json",
"analyze": "yarn analyze:bundle",
"analyze:bundle": "NODE_OPTIONS=--openssl-legacy-provider webpack --config ./webpack/bundle.js --progress --env.prod",
"check-licence": "babel-node ./scripts/license-header/bin --license ./FILE-HEADER --dry",
"add-licence": "babel-node ./scripts/license-header/bin --license ./FILE-HEADER",
"prepublishOnly": "yarn workspaces foreach -At run stab && yarn workspaces foreach -At run prepublishOnly && yarn add-licence && yarn build:umd && yarn build:types",
"docs": "babel-node ./scripts/documentation.js",
"typedoc": "typedoc --theme markdown --out typedoc --inputFiles ./src/reducers --inputFiles ./src/actions --excludeExternals --excludeNotExported --excludePrivate",
"example-version": "babel-node ./scripts/edit-version.js",
"prettier-all": "prettier --write '{examples,src}/**/src/**/*.{js,tsx,ts}' 'test/**/*.{js,ts,tsx}'",
"lint": "yarn typescript && eslint src test webpack examples website --fix --ignore-path .gitignore",
"lint:css": "stylelint './src/**/*.js'",
"typescript": "tsc --noEmit",
"web": "(yarn && yarn install:web && yarn start:web)",
"deploy": "yarn install:web && cd website && yarn build",
"clean": "rm -rf node_modules examples/**/node_modules website/node_modules .nyc_output coverage jest-coverage tape-coverage",
"release:patch": "git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md' && npm version patch && git push origin && git push origin --tags",
"fix-dependencies": "./scripts/fix-dependencies.sh"
},
"files": [
"dist",
"src",
"umd"
],
"dependencies": {
"@deck.gl/mapbox": "^8.9.27",
"@hubble.gl/core": "1.4.0",
"@hubble.gl/react": "1.4.0",
"@kepler.gl/components": "3.2.6",
"@loaders.gl/polyfills": "^4.3.2",
"@types/mapbox__geo-viewport": "^0.4.1",
"html-webpack-plugin": "^4.3.0",
"monaco-editor": "^0.52.0",
"typedoc": "^0.19.2"
},
"devDependencies": {
"@babel/cli": "^7.12.1",
"@babel/core": "^7.12.1",
"@babel/eslint-parser": "^7.17.0",
"@babel/node": "^7.12.1",
"@babel/parser": "^7.12.1",
"@babel/plugin-transform-class-properties": "^7.12.1",
"@babel/plugin-transform-export-namespace-from": "^7.12.1",
"@babel/plugin-transform-logical-assignment-operators": "^7.12.1",
"@babel/plugin-transform-modules-commonjs": "^7.12.1",
"@babel/plugin-transform-nullish-coalescing-operator": "^7.12.1",
"@babel/plugin-transform-optional-chaining": "^7.12.1",
"@babel/plugin-transform-runtime": "^7.12.1",
"@babel/plugin-transform-typescript": "^7.16.8",
"@babel/polyfill": "^7.12.1",
"@babel/preset-env": "^7.12.1",
"@babel/preset-react": "^7.12.1",
"@babel/preset-typescript": "^7.16.7",
"@babel/register": "^7.12.1",
"@babel/runtime": "^7.12.1",
"@babel/traverse": "^7.12.1",
"@cfaester/enzyme-adapter-react-18": "^0.7.0",
"@deck.gl/test-utils": "^8.9.27",
"@loaders.gl/polyfills": "^4.3.2",
"@luma.gl/test-utils": "^8.5.20",
"@nebula.gl/layers": "1.0.2-alpha.1",
"@open-wc/webpack-import-meta-loader": "0.4.7",
"@probe.gl/env": "^3.5.0",
"@probe.gl/test-utils": "^3.5.0",
"@testing-library/dom": "^9.0.1",
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^14.0.0",
"@testing-library/user-event": "^14.4.3",
"@types/d3-array": "^2.8.0",
"@types/d3-scale": "^3.2.2",
"@types/geojson": "^7946.0.8",
"@types/jsdom": "^21.1.1",
"@types/redux-actions": "^2.6.2",
"@types/redux-logger": "^3",
"@types/supercluster": "^7.1.0",
"@typescript-eslint/eslint-plugin": "5.57.0",
"@typescript-eslint/parser": "^5.57.1",
"babel-loader": "^8.0.0",
"babel-plugin-istanbul": "^6.0.0",
"babel-plugin-module-resolver": "^4.0.0",
"babel-plugin-search-and-replace": "^1.0.0",
"babel-plugin-styled-components": "^2.1.4",
"babel-plugin-transform-builtin-extend": "^1.1.0",
"babelify": "^10.0.0",
"css-loader": "5.2.7",
"documentation": "^9.1.1",
"dts-bundle-webpack": "^1.0.2",
"enzyme": "^3.11.0",
"esbuild": "^0.23.1",
"esbuild-plugin-replace": "^1.4.0",
"esbuild-plugin-umd-wrapper": "3.0.0",
"eslint": "~8.53.0",
"eslint-config-developit": "^1.2.0",
"eslint-config-prettier": "8.5.0",
"eslint-import-resolver-typescript": "3.6.1",
"eslint-plugin-babel": "^5.3.0",
"eslint-plugin-enzyme-deprecation": "^0.7.7",
"eslint-plugin-import": "2.29.1",
"eslint-plugin-jest": "^27.2.1",
"eslint-plugin-prettier": "4.2.1",
"eslint-plugin-react": "^7.35.0",
"eslint-plugin-react-hooks": "^4.6.2",
"gl": "^6.0.2",
"global": "^4.4.0",
"istanbul-merge": "^2.0.0",
"jest": "^29.5.0",
"jest-environment-jsdom": "^29.5.0",
"jsdom": "^24.1.1",
"json-loader": "^0.5.4",
"mapbox-gl": "1.13.1",
"maplibre-gl": "^3.6.2",
"minimist": "^1.2.6",
"nyc": "^15.1.0",
"prettier": "2.8.8",
"progress-bar-webpack-plugin": "^2.1.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-hot-loader": "^4.13.0",
"readdirp": "^2.1.0",
"redux-logger": "^3.0.6",
"redux-mock-store": "^1.2.1",
"sinon": "^2.4.1",
"sinon-stub-promise": "^4.0.0",
"source-map-loader": "^1.1.1",
"style-loader": "2.0.0",
"styled-components": "6.1.8",
"stylelint": "^13.6.1",
"stylelint-config-recommended": "^3.0.0",
"stylelint-config-styled-components": "^0.1.1",
"stylelint-processor-styled-components": "^1.10.0",
"tap-spec": "^5.0.0",
"tape": "^4.9.2",
"tape-catch": "^1.0.6",
"typedoc-plugin-markdown": "^3.0.11",
"typescript": "4.7.2",
"url-loader": "^4.1.1",
"usehooks-ts": "^3.1.0",
"watchify": "^3.6.1",
"webpack": "^4.29.0",
"webpack-bundle-analyzer": "^3.3.2",
"webpack-cli": "^3.2.1",
"webpack-dev-middleware": "^3.5.1",
"webpack-dev-server": "^3.1.14",
"webpack-hot-middleware": "^2.24.3",
"webpack-stats-plugin": "^0.2.1"
},
"resolutions": {
"@loaders.gl/core": "4.3.2",
"@loaders.gl/csv": "4.3.2",
"@loaders.gl/draco": "4.3.2",
"@loaders.gl/gltf": "4.3.2",
"@loaders.gl/json": "4.3.2",
"@loaders.gl/loader-utils": "4.3.2",
"@loaders.gl/polyfills": "4.3.2",
"@loaders.gl/arrow": "4.3.2",
"@loaders.gl/parquet": "4.3.2",
"@loaders.gl/gis": "4.3.2",
"@loaders.gl/schema": "4.3.2",
"@loaders.gl/wkt": "4.3.2",
"@loaders.gl/wms": "4.3.2",
"@luma.gl/constants": "8.5.21",
"@luma.gl/core": "8.5.21",
"@luma.gl/experimental": "8.5.21",
"@luma.gl/shadertools": "8.5.21",
"@luma.gl/test-utils": "8.5.21",
"@luma.gl/webgl": "8.5.21",
"@types/lodash": "4.17.5",
"browserslist": "^4.17.0",
"caniuse-lite": "^1.0.30001636",
"d3-array": "^2.8.0",
"d3-scale": "^3.2.3",
"eslint-plugin-jest": "^27.2.1",
"dot-prop": "6.0.0",
"kind-of": "6.0.3",
"jpeg-js": "^0.4.3",
"lodash": "4.17.21",
"minimist": "1.2.6",
"node-fetch": "2.6.1",
"tough-cookie": "4.0.0"
},
"peerDependencies": {
"react": ">=18.2",
"react-dom": ">=18.2",
"styled-components": "6.1.8"
},
"nyc": {
"sourceMap": false,
"instrument": false,
"exclude": [
"test/**/*.js",
"src/tasks",
"src/templates",
"src/styles"
]
},
"maintainers": [
"Shan He ",
"Giuseppe Macri "
],
"nx": {
"tags": [
"type:lib",
"scope:frontend"
]
},
"engines": {
"node": ">=18"
},
"volta": {
"node": "18.18.2",
"yarn": "4.4.0"
},
"packageManager": "yarn@4.4.0"
}
================================================
FILE: scripts/action-table-maker.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import fs from 'fs';
import {resolve, join} from 'path';
import traverse from '@babel/traverse';
import * as parser from '@babel/parser';
import {walkSync} from './ast-helper';
const SRC_DIR = './src';
const entries = [
// action to type mapping
join(SRC_DIR, 'actions'),
// type to updater mapping
join(SRC_DIR, 'reducers')
];
/**
* Build action table
* @public
*/
export function buildActionTable() {
const allFiles = walkSync(entries, []);
let actionTypeMap = {};
allFiles.forEach(file => {
actionTypeMap = traverseTree(file, actionTypeMap);
});
return Object.keys(actionTypeMap).reduce((accu, type) => {
accu[actionTypeMap[type].action.name] = {
...actionTypeMap[type].action,
updaters: actionTypeMap[type].updaters,
actionType: type
};
return accu;
}, {});
}
function createActionNode(actionType) {
return {action: '', updaters: [], actionType};
}
/**
* Parse actionHandler declaration to map updater to action type
* @param {Object} path - AST node
* @param {Object} actionMap
* @param {string} filePath
*/
function addActionHandler(path, actionMap, filePath) {
const {init} = path.node;
if (init && Array.isArray(init.properties)) {
init.properties.forEach(property => {
const {key, value} = property;
if (key && value && key.property && value.property) {
const actionType = key.property.name;
const updater = value.name;
actionMap[actionType] = actionMap[actionType] || createActionNode(actionType);
actionMap[actionType].updaters.push({
updater: value.object.name,
name: value.property.name,
path: filePath
});
}
})
}
}
/**
* Parse createAction function to add action to action type
* @param {*} path
* @param {*} actionMap
* @param {*} filePath
*/
function addActionCreator(path, actionMap, filePath) {
const {node, parentPath} = path;
if (node.arguments.length && parentPath.node && parentPath.node.id) {
const action = parentPath.node.id.name;
const firstArg = node.arguments[0];
const actionType = firstArg.property ? firstArg.property.name : firstArg.name;
const {loc} = parentPath.node
actionMap[actionType] = actionMap[actionType] || createActionNode(actionType);
actionMap[actionType].action = {name: action, path: `${filePath}#L${loc.start.line}-L${loc.end.line}`};
}
}
function addActionDeclaration(path, actionMap, filePath) {
const {node} = path;
const action = node.id.name;
const returnStatement = node.body.body[0];
const returnValue = returnStatement.argument.properties[0].value;
const actionType = returnValue.property ? returnValue.property.name : returnValue.name;
const {loc} = path.node;
actionMap[actionType] = actionMap[actionType] || createActionNode(actionType);
actionMap[actionType].action = {name: action, path: `${filePath}#L${loc.start.line}-L${loc.end.line}`};
}
function traverseTree(filePath, actionMap = {}) {
const content = fs.readFileSync(filePath, 'utf8');
const ast = parser.parse(content, {
sourceType: 'module',
plugins: ['exportNamespaceFrom', 'exportDefaultFrom']
});
traverse(ast, {
VariableDeclarator(path) {
const {id} = path.node;
if (id.name === 'actionHandler') {
addActionHandler(path, actionMap, filePath);
}
},
CallExpression(path) {
/**
* If action is declared with createAction
* export const togglePerspective = createAction(
* ActionTypes.TOGGLE_PERSPECTIVE
* );
*/
const {callee} = path.node;
if (callee.name === 'createAction') {
addActionCreator(path, actionMap, filePath);
}
},
FunctionDeclaration(path) {
/**
* If action is declared with a function call
* export function layerConfigChange(oldLayer, newConfig) {
* return {type: ActionTypes.LAYER_CONFIG_CHANGE};
* }
*/
if (filePath.endsWith('actions.js')) {
const {leadingComments} = path.parentPath.node;
if (
Array.isArray(leadingComments) && leadingComments[0] && leadingComments[0].value.includes('@public')
) {
addActionDeclaration(path, actionMap, filePath);
}
}
}
});
return actionMap;
}
export default buildActionTable;
================================================
FILE: scripts/ast-helper.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import fs from 'fs';
import {join} from 'path';
export function walkSync(dir, fileList = []) {
// Ensure dir is an array
const directories = Array.isArray(dir) ? dir : [dir];
directories.forEach(dirPath => {
const files = fs.readdirSync(dirPath);
files.forEach((file) => {
const path = join(dirPath, file);
if (fs.statSync(path).isDirectory()) {
fileList = walkSync(path, fileList);
} else if (path.endsWith('.js')){
fileList.push(path);
}
});
});
return fileList;
};
================================================
FILE: scripts/documentation.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import documentation from 'documentation';
import fs from 'fs';
import {resolve, join} from 'path';
import {logSuccess, logProgress, logOk, logStep, logError} from './log';
import remark from 'remark';
import toc from 'remark-toc';
import unified from 'unified';
import markdown from 'remark-parse';
import actionTableMaker from './action-table-maker';
const INPUT_CONFIG = {
shallow: true,
access: ['public'],
'document-exported': true,
sortOrder: 'alpha'
// github: true
};
const OUT_CONFIG = {
markdownToc: true
};
const PATHS = {
src: resolve('./src'),
api: resolve('./docs/api-reference')
};
const BT = '`';
const TREE = {
path: '',
children: [
{
path: 'actions',
children: [
{
input: [
'../constants/action-types.js',
'actions.js',
'action-wrapper.js',
'vis-state-actions.js',
'ui-state-actions.js',
'map-state-actions.js',
'map-style-actions.js',
'identity-actions.js'
],
output: 'actions.md',
config: {shallow: true}
}
]
},
{
path: 'reducers',
children: [
{input: ['root.js', 'core.js'], output: 'reducers.md', config: {shallow: true}},
{input: 'combined-updaters.js', output: 'combine.md', config: {shallow: true}},
{input: 'vis-state-updaters.js', output: 'vis-state.md', config: {shallow: true}},
{input: 'map-state-updaters.js', output: 'map-state.md', config: {shallow: true}},
{input: 'map-style-updaters.js', output: 'map-style.md', config: {shallow: true}},
{input: 'ui-state-updaters.js', output: 'ui-state.md', config: {shallow: true}}
]
},
{
path: 'processors',
children: [{input: 'data-processor.js', output: 'processors.md', config: {shallow: true}}]
},
{
path: 'cloud-providers',
children: [{input: 'provider.js', output: 'cloud-provider.md', config: {shallow: true}}]
}
]
};
function _overrideHeading(nodes) {
const contents = ['Examples', 'Parameters'];
const mdContents = contents.map(text => {
return unified()
.use(markdown)
.parse(`__${text}__`);
});
return nodes.map(node => {
if (
node.type === 'heading' &&
Array.isArray(node.children) &&
contents.includes(node.children[0].value)
) {
const value = node.children[0].value;
const replacement = mdContents[contents.indexOf(value)].children[0];
return replacement;
}
return node;
});
}
function _appendActionTypesAndUpdatersToActions(node, actionMap) {
// __Updaters__: [`visStateUpdaters.loadFilesUpdater`](../reducers/ui-state.md#uistateupdaterssetexportfilteredupdater)
if (node.members && node.members.static.length) {
node.members.static = node.members.static.map(nd =>
_appendActionTypesAndUpdatersToActions(nd, actionMap)
);
}
const action = node.name;
if (!actionMap[action]) {
return node;
}
const {actionType, updaters} = actionMap[action];
const updaterList = updaters
.map(
({updater, name, path}) =>
`[${BT}${updater}.${name}${BT}](../reducers/${path.split('/')[2].replace('.js', '')}.md#${(
updater + name
).toLowerCase()})`
)
.join(', ');
const mdContent = `
* __ActionTypes__: [${BT}ActionTypes.${actionType}${BT}](#actiontypes)
* __Updaters__: ${updaterList}
`;
return _appendListToDescription(node, mdContent);
}
/**
* Add action to linked updaters
* @param {Object} node
* @param {Object} actionMap
*/
function _appendActionToUpdaters(node, actionMap) {
if (node.members && node.members.static.length) {
node.members.static = node.members.static.map(nd => _appendActionToUpdaters(nd, actionMap));
}
const updater = node.name;
const action = Object.values(actionMap).find(action =>
action.updaters.find(up => up.name === updater)
);
if (!action) {
return node;
}
const actionName = action.name;
const mdContent = `
* __Action__: [${BT}${actionName}${BT}](../actions/actions.md#${actionName.toLowerCase()})
`;
return _appendListToDescription(node, mdContent);
}
function _appendListToDescription(node, mdContent) {
const tree = unified()
.use(markdown)
.parse(mdContent);
if (typeof node.description === 'object') {
node.description.children = (node.description.children || []).concat(tree.children);
} else {
logError(`Missing Description for ${node.name}`);
node.description = tree;
}
return node;
}
function _isParagraph(node) {
return node.type === 'paragraph' && node.children.length === 1;
}
function _isLink(node) {
return node.type === 'link' && node.children.length === 1;
}
function _isLinkReference(node) {
return node.type === 'linkReference' && node.children.length === 1;
}
function _isExampleOrParam(node) {
return node.type === 'text' && ['Parameters', 'Examples', 'Properties'].includes(node.value);
}
function _isExampleOrParameterLink(node) {
return (
_isParagraph(node) &&
_isLinkReference(node.children[0]) &&
_isExampleOrParam(node.children[0].children[0])
);
}
/**
* Remove example and parameter link from TOC
*/
function _cleanUpTOCChildren(node) {
if (!Array.isArray(node.children)) {
return node;
}
if (_isExampleOrParameterLink(node)) {
return null;
}
const filteredChildren = node.children
.reduce((accu, nd) => {
accu.push(_cleanUpTOCChildren(nd));
return accu;
}, [])
.filter(n => n);
if (!filteredChildren.length) {
return null;
}
return {
...node,
children: filteredChildren
};
}
function buildChildDoc(inputPath, outputPath, actionMap, config) {
return documentation
.build(inputPath, {...INPUT_CONFIG, ...config})
.then(res => {
// res is an array of parsed comments with inferred properties
// and more: everything you need to build documentation or
// any other kind of code data.
let processed = res;
if (outputPath.includes('actions.md')) {
// add action type and updater links to action
processed = res.map(node => _appendActionTypesAndUpdatersToActions(node, actionMap));
} else if (inputPath.some(p => p.includes('reducers'))) {
// add action type and updater links to action
processed = res.map(node => _appendActionToUpdaters(node, actionMap));
}
return documentation.formats.remark(processed, OUT_CONFIG);
})
.then(output => {
// output is a string of remark json
const ast = JSON.parse(output);
ast.children = _overrideHeading(ast.children);
if (ast.children.length < 3) {
logError(inputPath, 'has less than 3 children');
}
const tableOfContent = _cleanUpTOCChildren(ast.children[2]);
ast.children[2] = tableOfContent;
const mdOutput = remark().stringify(ast);
fs.writeFileSync(outputPath, mdOutput);
logOk(` ✓ build docs ${inputPath} -> ${outputPath}`);
})
.catch(err => {
logError(err);
});
}
function buildMdDocs(nodePath, node, actionMap, allTasks) {
const {path, children} = node;
const joinPath = nodePath ? `${nodePath}/${path}` : path;
children.forEach(child => {
if (!child.children) {
const {input, output, config} = child;
const inputPaths = (Array.isArray(input) ? input : [input]).reduce((accu, inp) => {
const inputPath = join(PATHS.src, joinPath, inp);
if (fs.existsSync(inputPath)) {
// Do something
accu.push(inputPath);
} else {
logError(`[Error] ${inputPath} doesn't exist!`);
}
return accu;
}, []);
if (!inputPaths.length) {
return;
}
const outputPath = join(PATHS.api, joinPath, output);
allTasks.push(buildChildDoc(inputPaths, outputPath, actionMap, config));
} else {
buildMdDocs(joinPath, child, actionMap, allTasks);
}
});
return allTasks;
}
function buildDocs() {
logProgress('\n================= Start Building API Documentation =================\n');
logStep(' ## 1. Gathering action and updater mapping');
const actionMap = actionTableMaker();
logStep(' ## 2. Build Markdown files from jsDoc');
const allTasks = buildMdDocs(null, TREE, actionMap, []);
Promise.all(allTasks).then(() => {
logSuccess('\n================= Building API Documentation Success! =================\n');
});
}
buildDocs();
================================================
FILE: scripts/edit-version.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import fs from 'fs';
import {resolve, join} from 'path';
import {logSuccess, logProgress, logStep} from './log';
const KeplerPackage = require('../package');
const exampleDir = resolve('./examples');
// edit package.json in examples
function readWritePackage(file, version) {
fs.readFile(file, (err, data) => {
if (err) throw err;
const PackageContent = JSON.parse(data);
PackageContent.dependencies['kepler.gl'] = `^${version}`;
const out = JSON.stringify(PackageContent, null, 2);
fs.writeFile(file, out, error => {
if (error) throw error;
logStep(` ## Edit ${file} success.`);
});
});
}
function editExamplePackageJson(version) {
logProgress(
'\n============= Start Editing examples package.json =================\n'
);
fs.readdir(exampleDir, (err, items) => {
if (err) throw err;
for (let i = 0; i < items.length; i++) {
// for each example folder
const packageJsonPath = join(exampleDir, items[i], 'package.json');
if (fs.existsSync(packageJsonPath)) {
readWritePackage(packageJsonPath, version);
}
}
});
}
function editUMDPackage(version) {
logProgress(
'\n============= Start Editing umd package version =================\n'
);
const htmlFile = join(exampleDir, 'umd-client', 'index.html');
fs.readFile(htmlFile, 'utf8', (err, html) => {
if (err) throw err;
const out = html.replace(
/kepler\.gl@\d+.\d+.\d+\/umd/,
`kepler.gl@${version}/umd`
);
fs.writeFile(htmlFile, out, error => {
if (error) throw error;
logStep(` ## Edit ${htmlFile} success.`);
});
});
}
(function main() {
const KeplerGlVersion = KeplerPackage.version;
editExamplePackageJson(KeplerGlVersion);
editUMDPackage(KeplerGlVersion);
logSuccess(
`\n================= Edit example kepler.gl version to ${KeplerGlVersion} Success! =================\n`
);
})();
================================================
FILE: scripts/fix-dependencies.sh
================================================
#!/bin/bash
# Here we patch up the dependencies that need to be tweaked to work with our build system after installed
# Per https://github.com/visgl/deck.gl/issues/7735, @mapbox/tiny-sdf is a ESM that we need to transpile
# and consume the cjs version. For some reason, trying to force transpile it through Babel does not work
# as crash happens before it even gets to that point
# We use tail to avoid the first line of the the output which is the command itself
yarn babel node_modules/@mapbox/tiny-sdf/index.js | tail -n +2 > node_modules/@mapbox/tiny-sdf/index.cjs
# Patch for an issue with react-virtualized output having an invalid import
# https://github.com/bvaughn/react-virtualized/issues/1212
if [[ -f "node_modules/react-virtualized/dist/es/WindowScroller/utils/onScroll.js" ]]; then
sed -i -e '/import { bpfrpt_proptype_WindowScroller } from "..\/WindowScroller.js";/d' node_modules/react-virtualized/dist/es/WindowScroller/utils/onScroll.js
fi
# fix ERR_REQUIRE_ESM in yarn cover
yarn babel node_modules/maplibregl-mapbox-request-transformer/src/index.js | tail -n +2 > node_modules/maplibregl-mapbox-request-transformer/src/index.cjs
================================================
FILE: scripts/install-and-start.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
const {existsSync} = require('fs');
const {execSync} = require('child_process');
const folder = process.argv[2];
const script = process.argv[3];
const cmd = !existsSync(`${folder}/node_modules`) ? `yarn && yarn ${script}` : `yarn ${script}`;
execSync(cmd, {
cwd: folder,
stdio: 'inherit'
});
================================================
FILE: scripts/license-header/README.md
================================================
Utility to add license header to your files.
Forked from [uber-licence](https://github.com/uber/uber-licence).
Running the `license-header` binary adds licencing information to every javascript file in your project.
You can run `license-header --dry` where it does not mutate any files and instead outputs the number of files it would change.
You can use `--file` and `--dir` to specify your own file and directory filters to select source files to consider.
## Recommended usage
```
// package.json
{
"scripts": {
"check-license": "license-header --dry",
"add-license": "license-header"
},
"devDependencies": {
"minimist": "^1.1.0",
"readdirp": "^2.1.0",
"pre-commit": "0.0.9"
},
"pre-commit": [
"test",
"check-license"
],
"pre-commit.silent": true
}
```
Add missing headers.
```bash
yarn run babel-node ./scripts/license-header/bin
```
Migrate to a new header.
```bash
yarn run babel-node ./scripts/license-header/bin --license ./scripts/license-header/FILE-HEADER --legacy ./LICENSE
```
================================================
FILE: scripts/license-header/bin.mjs
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
// Forked from uber-licence, MIT
import readdirp from 'readdirp';
import minimist from 'minimist';
import {readFileSync} from 'fs';
import process from 'global/process.js';
import console from 'global/console.js';
import LicenseFixer from './license-fixer.mjs';
var argv = minimist(process.argv.slice(2));
var cwd = process.cwd();
/*eslint no-process-exit: 0, no-console: 0*/
// jscs:disable maximumLineLength
if (argv.help || argv.h) {
console.log('license-header');
console.log(' ');
console.log(' This binary will add a license to the top');
console.log(' of all your files');
console.log('');
console.log(' Options:');
console.log(' --dry does not write to files');
console.log(' --file pattern of files to modify');
console.log(' --dir pattern for directories containing files');
console.log(' --license intended license (file)');
console.log(' --legacy licenses to replace');
console.log(' --verbose log skipped and empty files');
console.log(' --silent do not log fixed files');
process.exit(0);
}
var fileFilter = ['*.js', '*.ts', '*.tsx', '*.mjs', '*.py'];
if (typeof argv.file === 'string') {
fileFilter = [argv.file];
} else if (Array.isArray(argv.file)) {
fileFilter = argv.file;
}
var directoryFilter = ['!.git', '!node_modules', '!coverage', '!env', '!.tox', '!vendor', '!Godeps', '!dist'];
if (typeof argv.dir === 'string') {
directoryFilter = [argv.dir];
} else if (Array.isArray(argv.dir)) {
directoryFilter = argv.dir;
}
var licenses = null;
if (typeof argv.license === 'string') {
licenses = licenses || [];
licenses.push(argv.license);
} else if (Array.isArray(argv.license)) {
licenses = licenses || [];
Array.prototype.push.apply(licenses, argv.license);
}
if (typeof argv.legacy === 'string') {
licenses = licenses || [];
licenses.push(argv.legacy);
} else if (Array.isArray(argv.legacy)) {
licenses = licenses || [];
Array.prototype.push.apply(licenses, argv.legacy);
}
if (licenses) {
for (var i = 0; i < licenses.length; i++) {
// Replace file names with content of files
licenses[i] = readFileSync(licenses[i], 'utf8');
}
} else {
console.error('no license provided');
process.exit(1);
}
var licenseFixer = new LicenseFixer({
dry: argv.dry,
silent: argv.silent,
verbose: argv.verbose
});
// Set the intended license text
licenseFixer.setLicense(licenses[0]);
// Add a license to match and replace.
// There can be multiple recognized licenses, for migration purposes.
for (var i = 0; i < licenses.length; i++) {
licenseFixer.addLicense(licenses[i]);
}
readTree({
root: cwd,
fileFilter: fileFilter,
directoryFilter: directoryFilter
}, processFiles);
function readTree(options, callback) {
var stream = readdirp(options);
var files = [];
stream.on('data', onData);
stream.on('end', onEnd);
stream.on('error', onEnd);
function onData(event) {
files.push(event.path);
}
function onEnd(err) {
callback(err, files);
}
}
function processFiles(err, files) {
if (err) {
console.error(err.message);
process.exit(1);
return;
}
var fixed = 0;
for (var filesIndex = 0; filesIndex < files.length; filesIndex++) {
var file = files[filesIndex];
fixed = fixed + licenseFixer.fixFile(file);
}
if (argv.dry) {
process.exit(fixed);
} else {
process.exit(0);
}
}
================================================
FILE: scripts/license-header/license-fixer.mjs
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
// Forked from uber-licence, MIT
import {readFileSync, writeFileSync} from 'fs';
import console from 'global/console.js';
function LicenseFixer(options) {
options = options || {};
this.slashLicense = null;
this.hashLicense = null;
this.licenseExpressions = [];
this.dry = options.dry || false;
this.silent = options.silent || false;
this.verbose = options.verbose || false;
Object.seal(this);
}
LicenseFixer.prototype.addLicense = function addLicense(license) {
this.licenseExpressions.push(createLicenseExpression(license));
};
function createLicenseExpression(license) {
license = license.trim();
// Transform the license into a regular expression that matches the exact
// license as well as similar licenses, with different dates and line
// wraps.
var pattern = license.split(/\s+/).map(relaxLicenseTerm).join('') + '\\s*';
return new RegExp(pattern, 'gmi');
}
function relaxLicenseTerm(term) {
// There has been at least one occasion where someone replaced all single
// quotes with double quotes throughout a file and got an extra license.
return '\\s*((//|#)\\s*)*' + // wrap around any comment or spacing
regexpEscape(term)
.replace(/\d{4}/g, '\\d{4}') // dates to date patterns
.replace(/['"]/g, '[\'"]'); // relax quotes
}
var regexpEscapePattern = /[|\\{}()[\]^$+*?.]/g;
function regexpEscape(string) {
return string.replace(regexpEscapePattern, '\\$&');
}
LicenseFixer.prototype.setLicense = function setLicense(license) {
this.slashLicense = createSlashLicense(license);
this.hashLicense = createHashLicense(license);
};
function createSlashLicense(license) {
return license.trim().split('\n').map(slashPrefix).join('');
}
function createHashLicense(license) {
return license.trim().split('\n').map(hashPrefix).join('');
}
function slashPrefix(line) {
return ('// ' + line).trim() + '\n';
}
function hashPrefix(line) {
return ('# ' + line).trim() + '\n';
}
LicenseFixer.prototype.getLicenseForFile = function getLicenseForFile(file) {
if (file.match(/\.(js|go|java|ts|tsx|mjs)$/)) {
return this.slashLicense;
} else if (file.match(/\.(pyx?|pxd)$/)) {
return this.hashLicense;
}
return null;
};
LicenseFixer.prototype.fixContent = function fixContent(file, content) {
var preamble = '';
// Check for shebang
var foundShebang = content.match(/^#!|#\s*(en)?coding=/m);
if (foundShebang) {
var shebangIndex = content.indexOf('\n');
if (shebangIndex >= 0) {
preamble += content.slice(0, shebangIndex + 1);
content = content.slice(shebangIndex + 1).trim() + '\n';
}
}
// check for @flow header
var foundFlowHeader = content.match(/^\/\/ @flow|^\/\* @flow \*\//m);
if (foundFlowHeader) {
var flowIndex = content.indexOf('\n');
if (flowIndex >= 0) {
preamble += content.slice(0, flowIndex + 1);
content = content.slice(flowIndex + 1).trim() + '\n';
}
}
if (foundShebang || foundFlowHeader) {
preamble += '\n';
}
// Remove old licenses
for (var i = 0; i < this.licenseExpressions.length; i++) {
// string replace hangs in some pathelogical cases of repeated licenses
var match = this.licenseExpressions[i].exec(content);
while (match) {
content = content.slice(0, match.index) + content.slice(match.index + match[0].length);
match = this.licenseExpressions[i].exec(content);
}
}
var license = this.getLicenseForFile(file);
if (license === null) {
if (!this.silent) {
console.error(`unrecognized file type ${file}`);
}
return null;
}
// Reintroduce the preamble and license
content = preamble + license + '\n' + content;
return content;
};
LicenseFixer.prototype.fixFile = function fixFile(file) {
var original = readFileSync(file, 'utf8');
if (original.length === 0) {
// Ignore empty files
if (this.verbose) {
console.log(`empty ${file}`);
}
return false;
}
var content = this.fixContent(file, original);
if (content === null) {
// Return true on error so dry run fails
return true;
}
if (original === content) {
// No change
if (this.verbose) {
console.log(`skip ${file}`);
}
return false;
}
if (!this.silent) {
console.log(`fix ${file}`);
}
if (this.dry) {
return true;
}
writeFileSync(file, content, 'utf8');
return true;
};
export default LicenseFixer
================================================
FILE: scripts/log.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
const console = require('global/console');
const Colors = {
Reset: '\x1b[0m',
Bright: '\x1b[1m',
Dim: '\x1b[2m',
Underscore: '\x1b[4m',
Blink: '\x1b[5m',
Reverse: '\x1b[7m',
Hidden: '\x1b[8m',
FgBlack: '\x1b[30m',
FgRed: '\x1b[31m',
FgGreen: '\x1b[32m',
FgYellow: '\x1b[33m',
FgBlue: '\x1b[34m',
FgMagenta: '\x1b[35m',
FgCyan: '\x1b[36m',
FgWhite: '\x1b[37m',
BgBlack: '\x1b[40m',
BgRed: '\x1b[41m',
BgGreen: '\x1b[42m',
BgYellow: '\x1b[43m',
BgBlue: '\x1b[44m',
BgMagenta: '\x1b[45m',
BgCyan: '\x1b[46m',
BgWhite: '\x1b[47m'
}
function log(color) {
return function logWithColor(msg) {
console.log(`${color}%s${Colors.Reset}`, msg);
};
}
module.exports = {
logSuccess: log(Colors.FgGreen),
logOk: log(Colors.FgCyan),
logError: log(Colors.FgRed),
logProgress: log(Colors.FgBlue),
logStep: log(Colors.FgMagenta),
}
================================================
FILE: scripts/ts-smoosh/README.md
================================================
## TS Smoosh
Combine type decls with related source files.
# Use
Given a JavaScript file (or list of files) like so:
```
$ node ts-smoosh/bin ./src/some-file.js
```
Will produce `.jsx` files using nearby `.d.ts` files.
# Running Tests
```
$ node test
```
Test cases live in various directories in `./tests`. Tests run by comparing the output against golden master `.tsx` files. To update the masters, run `node ts-smoosh/bin ./test/0X-dir/somefile.js`.
# Notes
Here are articles and docs I that were helpful when writing this script.
- [Using the Compiler API](https://github.com/microsoft/TypeScript/wiki/Using-the-Compiler-API)
- [Blog post about using TS's parser directly](https://medium.com/allenhwkim/how-to-parse-typescript-from-source-643387971f4e)
- [TypeScript compiler APIs revisited](https://blog.scottlogic.com/2017/05/02/typescript-compiler-api-revisited.html)
- [TypeScript API Playground on Glitch](https://typescript-api-playground.glitch.me/#example=Transformation%203)
================================================
FILE: scripts/ts-smoosh/bin.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
const { smoosh } = require("./smoosh");
// Given an array of `.js` files, smooshes their .d.ts declarations and
// produces a .tsx file.
const without = (ending) => (fileName) =>
fileName.endsWith(ending)
? fileName.substr(0, fileName.length - ending.length)
: fileName;
const files = process.argv.slice(2);
files.map(without(".js")).map(smoosh);
================================================
FILE: scripts/ts-smoosh/smoosh.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
const ts = require("typescript");
const fs = require("fs");
const path = require("path");
/**
* Writes the result of smooshing to a file
*/
function smoosh(base) {
const smooshedSrc = returnSmooshed(base);
const outputFile = `./${base}.tsx`;
fs.writeFileSync(outputFile, smooshedSrc);
}
const declDoesntExist = { typeAliases: [], declarations: [], imports: [] };
function returnSmooshed(base) {
const dtsFile = `${base}.d.ts`;
// TODO(btford): log a warning here?
const decls = fs.existsSync(dtsFile) ? parseDts(dtsFile) : declDoesntExist;
const jsFile = `${base}.js`;
const enrichedJsNode = enrichJs(jsFile, decls);
const outputFile = `${base}.tsx`;
const resultFile = ts.createSourceFile(
outputFile,
"",
ts.ScriptTarget.Latest,
false,
ts.ScriptKind.TSX
);
const printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed });
const smooshedSrc = printer.printNode(
ts.EmitHint.Unspecified,
enrichedJsNode,
resultFile
);
return smooshedSrc;
}
function parseDts(dtsFile) {
const parsed = ts.createSourceFile(
dtsFile,
fs.readFileSync(dtsFile, "utf8"),
ts.ScriptTarget.Latest
);
// these are going on top
const typeAliases = [];
const declarations = {};
const imports = [];
const aggregateDecl = (statement) => {
// console.log(statement);
const kind = ts.SyntaxKind[statement.kind];
if (kind === "TypeAliasDeclaration") {
declarations[getIdentifierName(statement)] = statement.type;
typeAliases.push(statement);
return;
}
if (kind === "ImportDeclaration") {
return console.log("import...");
}
if (kind === "FirstStatement") {
return statement.declarationList.declarations.map(aggregateDecl);
}
if (!kind.endsWith("Declaration")) {
const message = `Unexpected statement kind "${kind}" in type definition file "${dtsFile}"`;
return console.warn(message);
} else {
declarations[getIdentifierName(statement)] = statement;
}
};
parsed.statements.forEach(aggregateDecl);
return { typeAliases, declarations, imports };
}
function enrichJs(jsFile, dts) {
const parsed = ts.createSourceFile(
jsFile,
fs.readFileSync(jsFile, "utf8"),
ts.ScriptTarget.Latest
);
const findSource = (node) => {
let typeSource = null;
// First, search for a jsdoc tag with the type, like:
// @type {typeof import('./b').Noop}
if (node.jsDoc) {
const typeTag = node.jsDoc[0].tags.find(
(tag) => tag.tagName.escapedText === "type"
);
if (typeTag) {
const fileName =
typeTag.typeExpression.type.argument.literal.text;
const identifier =
typeTag.typeExpression.type.qualifier.escapedText;
const dir = path.dirname(jsFile);
const fullPath = path.resolve(dir, fileName + ".d.ts");
const importedDts = parseDts(fullPath);
const importedType = importedDts.declarations[identifier];
if (!importedType) {
console.warn(
`Could not find ${identifier} in ${fullPath} while trying to smoosh ${jsFile}`
);
return node;
}
typeSource = importedType;
}
}
// Second, use the d.ts file with the same name as this file.
if (!typeSource) {
typeSource = dts.declarations[getIdentifierName(node)];
}
return typeSource;
}
const transformer = (context) => (rootNode) => {
function visit(node) {
const kind = ts.SyntaxKind[node.kind];
if (kind.endsWith("Declaration")) {
if (kind === "FunctionDeclaration") {
const typeSource = findSource(node);
if (typeSource) {
return ts.factory.updateFunctionDeclaration(
node,
node.decorators,
node.modifiers,
node.asteriskToken,
node.name,
typeSource.typeParameters,
typeSource.parameters,
typeSource.type,
node.body
);
}
return node;
} else if (kind === 'VariableDeclaration') {
const typeSource = findSource(node);
if (typeSource) {
return ts.factory.updateVariableDeclaration(
node,
node.name,
node.exclamationToken,
typeSource.type,
node.initializer
);
}
return node;
}
return node;
}
return ts.visitEachChild(node, visit, context);
}
return ts.visitNode(rootNode, visit);
};
return ts.transform(parsed, [transformer]).transformed[0];
}
function getIdentifierName(node) {
return node.name.escapedText;
}
module.exports = {
smoosh,
returnSmooshed,
};
================================================
FILE: scripts/ts-smoosh/test.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
const fs = require("fs");
const assert = require("assert").strict;
const path = require("path");
const { returnSmooshed } = require("./smoosh");
const args = process.argv.slice(2);
const dirs = args.length > 0 ? args : fs.readdirSync("./tests").map(f => `./tests/${f}`);
dirs.forEach((dir) => {
const files = fs.readdirSync(dir);
files
.filter((file) => file.endsWith(".js"))
.map((file) => file.substr(0, file.length - 3))
.forEach((file) => {
const fullFile = path.resolve(dir, file);
console.log(`Testing ${fullFile}.js`);
const smooshed = returnSmooshed(fullFile);
const target = fs.readFileSync(fullFile + ".tsx", "utf8");
assert.equal(smooshed, target);
});
});
console.log("Done");
================================================
FILE: scripts/ts-smoosh/tests/01-functions/a.d.ts
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
export function foo(
bar: string,
baz: number
): {boo: number};
export function typeParams(a: A, b: B): B;
================================================
FILE: scripts/ts-smoosh/tests/01-functions/a.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
/**
* A function with a JSDoc type import that matches its name
* @type {typeof import('./a').foo}
*/
export function foo(
bar,
baz
) {
return {boo: baz}
}
// A function with no type import
export function typeParams(a, b) {
return a + b;
}
================================================
FILE: scripts/ts-smoosh/tests/01-functions/a.tsx
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
/**
* A function with a JSDoc type import that matches its name
* @type {typeof import('./a').foo}
*/
export function foo(bar: string, baz: number): {
boo: number;
} {
return { boo: baz };
}
// A function with no type import
export function typeParams (a: A, b: B): B {
return a + b;
}
================================================
FILE: scripts/ts-smoosh/tests/02-imports/b.d.ts
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
export type MyFn = (a: number, b: number) => number
================================================
FILE: scripts/ts-smoosh/tests/02-imports/c.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
/**
* A function with a JSDoc type import that is different from its name
* @type {typeof import('./b').MyFn}
*/
function c(a, b) {
console.log('haha hi')
return a + b;
}
================================================
FILE: scripts/ts-smoosh/tests/02-imports/c.tsx
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
/**
* A function with a JSDoc type import that is different from its name
* @type {typeof import('./b').MyFn}
*/
function c(a: number, b: number): number {
console.log("haha hi");
return a + b;
}
================================================
FILE: scripts/ts-smoosh/tests/03-const/e.d.ts
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
// hi
export const x: number;
export const add: (a: number, b: number) => number;
================================================
FILE: scripts/ts-smoosh/tests/03-const/e.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
export const x = 3;
export const add = (a, b) => a + b;
================================================
FILE: scripts/ts-smoosh/tests/03-const/e.tsx
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
export const x: number = 3;
export const add: (a: number, b: number) => number = (a, b) => a + b;
================================================
FILE: src/actions/babel.config.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
const KeplerPackage = require('./package');
const PRESETS = ['@babel/preset-env', '@babel/preset-react', '@babel/preset-typescript'];
const PLUGINS = [
['@babel/plugin-transform-typescript', {isTSX: true, allowDeclareFields: true}],
'@babel/plugin-transform-modules-commonjs',
'@babel/plugin-transform-class-properties',
'@babel/plugin-transform-optional-chaining',
'@babel/plugin-transform-logical-assignment-operators',
'@babel/plugin-transform-nullish-coalescing-operator',
'@babel/plugin-transform-export-namespace-from',
[
'@babel/transform-runtime',
{
regenerator: true
}
],
[
'search-and-replace',
{
rules: [
{
search: '__PACKAGE_VERSION__',
replace: KeplerPackage.version
}
]
}
]
];
const ENV = {
test: {
plugins: ['istanbul']
},
debug: {
sourceMaps: 'inline',
retainLines: true
}
};
module.exports = function babel(api) {
api.cache(true);
return {
presets: PRESETS,
plugins: PLUGINS,
env: ENV
};
};
================================================
FILE: src/actions/package.json
================================================
{
"name": "@kepler.gl/actions",
"author": "Shan He ",
"version": "3.2.6",
"description": "kepler.gl constants used by kepler.gl components, actions and reducers",
"license": "MIT",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"keywords": [
"babel",
"es6",
"react",
"webgl",
"visualization",
"deck.gl"
],
"repository": {
"type": "git",
"url": "https://github.com/keplergl/kepler.gl.git"
},
"scripts": {
"build": "rm -fr dist && babel src --out-dir dist --source-maps inline --extensions '.ts,.tsx,.js,.jsx' --ignore '**/*.d.ts'",
"build:umd": "NODE_OPTIONS=--openssl-legacy-provider webpack --config ./webpack/umd.js --progress --env.prod",
"build:types": "tsc --project ./tsconfig.production.json",
"prepublishOnly": "babel-node ../../scripts/license-header/bin --license ../../FILE-HEADER && yarn build && yarn build:types",
"stab": "mkdir -p dist && touch dist/index.js"
},
"files": [
"dist",
"umd"
],
"dependencies": {
"@deck.gl/core": "^8.9.27",
"@kepler.gl/cloud-providers": "3.2.6",
"@kepler.gl/constants": "3.2.6",
"@kepler.gl/layers": "3.2.6",
"@kepler.gl/processors": "3.2.6",
"@kepler.gl/table": "3.2.6",
"@kepler.gl/types": "3.2.6",
"@kepler.gl/utils": "3.2.6",
"@reduxjs/toolkit": "^1.7.2",
"@types/lodash": "4.17.5",
"@types/react-redux": "^7.1.23",
"@types/redux-actions": "^2.6.2",
"lodash": "4.17.21",
"react-palm": "^3.3.8",
"react-redux": "^8.0.5",
"redux": "^4.2.1",
"redux-actions": "^2.2.1"
},
"nyc": {
"sourceMap": false,
"instrument": false
},
"maintainers": [
"Shan He ",
"Giuseppe Macri "
],
"engines": {
"node": ">=18"
},
"volta": {
"node": "18.18.2",
"yarn": "4.4.0"
},
"packageManager": "yarn@4.4.0"
}
================================================
FILE: src/actions/src/action-types.ts
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
export const ACTION_PREFIX = '@@kepler.gl/';
/**
* Kepler.gl action types, can be listened by reducers to perform additional tasks whenever an action is called in kepler.gl
* @constant
* @type {Object}
* @public
*
* @example
* // store.js
* import {handleActions} from 'redux-actions';
* import {createStore, combineReducers, applyMiddleware} from 'redux';
* import {taskMiddleware} from 'react-palm/tasks';
*
* import keplerGlReducer from '@kepler.gl/reducers';
* import {ActionTypes} from '@kepler.gl/actions';
*
* const appReducer = handleActions({
* // listen on kepler.gl map update action to store a copy of viewport in app state
* [ActionTypes.UPDATE_MAP]: (state, action) => ({
* ...state,
* viewport: action.payload
* }),
* }, {});
*
* const reducers = combineReducers({
* app: appReducer,
* keplerGl: keplerGlReducer
* });
*
* export default createStore(reducers, {}, applyMiddleware(taskMiddleware))
*/
export const ActionTypes = {
// identity action
REGISTER_ENTRY: `${ACTION_PREFIX}REGISTER_ENTRY`,
DELETE_ENTRY: `${ACTION_PREFIX}DELETE_ENTRY`,
RENAME_ENTRY: `${ACTION_PREFIX}RENAME_ENTRY`,
// visState
ADD_DATA: `${ACTION_PREFIX}ADD_DATA`,
ADD_FILTER: `${ACTION_PREFIX}ADD_FILTER`,
CREATE_OR_UPDATE_FILTER: `${ACTION_PREFIX}CREATE_OR_UPDATE_FILTER`,
CREATE_NEW_DATASET_SUCCESS: `${ACTION_PREFIX}CREATE_NEW_DATASET_SUCCESS`,
ADD_LAYER: `${ACTION_PREFIX}ADD_LAYER`,
APPLY_FILTER_CONFIG: `${ACTION_PREFIX}APPLY_FILTER_CONFIG`,
APPLY_LAYER_CONFIG: `${ACTION_PREFIX}APPLY_LAYER_CONFIG`,
DUPLICATE_LAYER: `${ACTION_PREFIX}DUPLICATE_LAYER`,
INTERACTION_CONFIG_CHANGE: `${ACTION_PREFIX}INTERACTION_CONFIG_CHANGE`,
LAYER_CONFIG_CHANGE: `${ACTION_PREFIX}LAYER_CONFIG_CHANGE`,
LAYER_SET_IS_VALID: `${ACTION_PREFIX}LAYER_SET_IS_VALID`,
LAYER_VISUAL_CHANNEL_CHANGE: `${ACTION_PREFIX}LAYER_VISUAL_CHANNEL_CHANGE`,
LAYER_TYPE_CHANGE: `${ACTION_PREFIX}LAYER_TYPE_CHANGE`,
LAYER_VIS_CONFIG_CHANGE: `${ACTION_PREFIX}LAYER_VIS_CONFIG_CHANGE`,
LAYER_TOGGLE_VISIBILITY: `${ACTION_PREFIX}LAYER_TOGGLE_VISIBILITY`,
LAYER_TEXT_LABEL_CHANGE: `${ACTION_PREFIX}LAYER_TEXT_LABEL_CHANGE`,
LAYER_HOVER: `${ACTION_PREFIX}LAYER_HOVER`,
LAYER_CLICK: `${ACTION_PREFIX}LAYER_CLICK`,
MAP_CLICK: `${ACTION_PREFIX}MAP_CLICK`,
MOUSE_MOVE: `${ACTION_PREFIX}MOUSE_MOVE`,
REMOVE_FILTER: `${ACTION_PREFIX}REMOVE_FILTER`,
REMOVE_LAYER: `${ACTION_PREFIX}REMOVE_LAYER`,
REMOVE_DATASET: `${ACTION_PREFIX}REMOVE_DATASET`,
REORDER_LAYER: `${ACTION_PREFIX}REORDER_LAYER`,
SET_FILTER: `${ACTION_PREFIX}SET_FILTER`,
SET_FILTER_ANIMATION_TIME: `${ACTION_PREFIX}SET_FILTER_ANIMATION_TIME`,
SET_FILTER_ANIMATION_TIME_CONFIG: `${ACTION_PREFIX}SET_FILTER_ANIMATION_TIME_CONFIG`,
SET_FILTER_ANIMATION_WINDOW: `${ACTION_PREFIX}SET_FILTER_ANIMATION_WINDOW`,
SHOW_DATASET_TABLE: `${ACTION_PREFIX}SHOW_DATASET_TABLE`,
UPDATE_LAYER_BLENDING: `${ACTION_PREFIX}UPDATE_LAYER_BLENDING`,
UPDATE_OVERLAY_BLENDING: `${ACTION_PREFIX}UPDATE_OVERLAY_BLENDING`,
UPDATE_VIS_DATA: `${ACTION_PREFIX}UPDATE_VIS_DATA`,
RENAME_DATASET: `${ACTION_PREFIX}RENAME_DATASET`,
UPDATE_DATASET_PROPS: `${ACTION_PREFIX}UPDATE_DATASET_PROPS`,
TOGGLE_FILTER_ANIMATION: `${ACTION_PREFIX}TOGGLE_FILTER_ANIMATION`,
UPDATE_FILTER_ANIMATION_SPEED: `${ACTION_PREFIX}UPDATE_FILTER_ANIMATION_SPEED`,
PLAY_ANIMATION: `${ACTION_PREFIX}PLAY_ANIMATION`,
SET_ANIMATION_CONFIG: `${ACTION_PREFIX}SET_ANIMATION_CONFIG`,
SET_LAYER_ANIMATION_TIME: `${ACTION_PREFIX}SET_LAYER_ANIMATION_TIME`,
SET_LAYER_ANIMATION_TIME_CONFIG: `${ACTION_PREFIX}SET_LAYER_ANIMATION_TIME_CONFIG`,
UPDATE_ANIMATION_SPEED: `${ACTION_PREFIX}UPDATE_ANIMATION_SPEED`,
UPDATE_LAYER_ANIMATION_SPEED: `${ACTION_PREFIX}UPDATE_LAYER_ANIMATION_SPEED`,
TOGGLE_LAYER_ANIMATION: `${ACTION_PREFIX}TOGGLE_LAYER_ANIMATION`,
TOGGLE_LAYER_ANIMATION_CONTROL: `${ACTION_PREFIX}TOGGLE_LAYER_ANIMATION_CONTROL`,
TOGGLE_LAYER_CONFIG_ACTIVE: `${ACTION_PREFIX}TOGGLE_LAYER_CONFIG_ACTIVE`,
SET_FILTER_VIEW: `${ACTION_PREFIX}SET_FILTER_VIEW`,
TOGGLE_FILTER_FEATURE: `${ACTION_PREFIX}TOGGLE_FILTER_FEATURE`,
TOGGLE_LAYER_FOR_MAP: `${ACTION_PREFIX}TOGGLE_LAYER_FOR_MAP`,
SET_FILTER_PLOT: `${ACTION_PREFIX}SET_FILTER_PLOT`,
LOAD_FILES: `${ACTION_PREFIX}LOAD_FILES`,
LOAD_NEXT_FILE: `${ACTION_PREFIX}LOAD_NEXT_FILE`,
LOAD_BATCH_DATA_SUCCESS: `${ACTION_PREFIX}LOAD_BATCH_DATA_SUCCESS`,
LOAD_FILE_STEP_SUCCESS: `${ACTION_PREFIX}LOAD_FILE_STEP_SUCCESS`,
LOAD_FILES_ERR: `${ACTION_PREFIX}LOAD_FILES_ERR`,
LOAD_FILES_SUCCESS: `${ACTION_PREFIX}LOAD_FILES_SUCCESS`,
LAYER_COLOR_UI_CHANGE: `${ACTION_PREFIX}LAYER_COLOR_UI_CHANGE`,
TOGGLE_FEATURE_LAYER: `${ACTION_PREFIX}TOGGLE_FEATURE_LAYER`,
APPLY_CPU_FILTER: `${ACTION_PREFIX}APPLY_CPU_FILTER`,
SET_MAP_INFO: `${ACTION_PREFIX}SET_MAP_INFO`,
SORT_TABLE_COLUMN: `${ACTION_PREFIX}SORT_TABLE_COLUMN`,
PIN_TABLE_COLUMN: `${ACTION_PREFIX}PIN_TABLE_COLUMN`,
COPY_TABLE_COLUMN: `${ACTION_PREFIX}COPY_TABLE_COLUMN`,
SET_COLUMN_DISPLAY_FORMAT: `${ACTION_PREFIX}SET_COLUMN_DISPLAY_FORMAT`,
NEXT_FILE_BATCH: `${ACTION_PREFIX}NEXT_FILE_BATCH`,
PROCESS_FILE_CONTENT: `${ACTION_PREFIX}PROCESS_FILE_CONTENT`,
UPDATE_TABLE_COLOR: `${ACTION_PREFIX}UPDATE_TABLE_COLOR`,
ADD_EFFECT: `${ACTION_PREFIX}ADD_EFFECT`,
REORDER_EFFECT: `${ACTION_PREFIX}REORDER_EFFECT`,
REMOVE_EFFECT: `${ACTION_PREFIX}REMOVE_EFFECT`,
UPDATE_EFFECT: `${ACTION_PREFIX}UPDATE_EFFECT`,
// mapState
UPDATE_MAP: `${ACTION_PREFIX}UPDATE_MAP`,
FIT_BOUNDS: `${ACTION_PREFIX}FIT_BOUNDS`,
TOGGLE_PERSPECTIVE: `${ACTION_PREFIX}TOGGLE_PERSPECTIVE`,
TOGGLE_FULLSCREEN: `${ACTION_PREFIX}TOGGLE_FULLSCREEN`,
TOGGLE_SPLIT_MAP: `${ACTION_PREFIX}TOGGLE_SPLIT_MAP`,
TOGGLE_SPLIT_MAP_VIEWPORT: `${ACTION_PREFIX}TOGGLE_SPLIT_MAP_VIEWPORT`,
// mapStyle
MAP_CONFIG_CHANGE: `${ACTION_PREFIX}MAP_CONFIG_CHANGE`,
SET_DEFAULT_MAP_STYLE: `${ACTION_PREFIX}SET_DEFAULT_MAP_STYLE`,
MAP_STYLE_CHANGE: `${ACTION_PREFIX}MAP_STYLE_CHANGE`,
LOAD_MAP_STYLES: `${ACTION_PREFIX}LOAD_MAP_STYLES`,
LOAD_MAP_STYLE_ERR: `${ACTION_PREFIX}LOAD_MAP_STYLE_ERR`,
INPUT_MAP_STYLE: `${ACTION_PREFIX}INPUT_MAP_STYLE`,
LOAD_CUSTOM_MAP_STYLE: `${ACTION_PREFIX}LOAD_CUSTOM_MAP_STYLE`,
ADD_CUSTOM_MAP_STYLE: `${ACTION_PREFIX}ADD_CUSTOM_MAP_STYLE`,
EDIT_CUSTOM_MAP_STYLE: `${ACTION_PREFIX}EDIT_CUSTOM_MAP_STYLE`,
REMOVE_CUSTOM_MAP_STYLE: `${ACTION_PREFIX}REMOVE_CUSTOM_MAP_STYLE`,
REQUEST_MAP_STYLES: `${ACTION_PREFIX}REQUEST_MAP_STYLES`,
SET_3D_BUILDING_COLOR: `${ACTION_PREFIX}SET_3D_BUILDING_COLOR`,
SET_BACKGROUND_COLOR: `${ACTION_PREFIX}SET_BACKGROUND_COLOR`,
// uiState
TOGGLE_SIDE_PANEL: `${ACTION_PREFIX}TOGGLE_SIDE_PANEL`,
TOGGLE_MODAL: `${ACTION_PREFIX}TOGGLE_MODAL`,
SHOW_EXPORT_DROPDOWN: `${ACTION_PREFIX}SHOW_EXPORT_DROPDOWN`,
HIDE_EXPORT_DROPDOWN: `${ACTION_PREFIX}HIDE_EXPORT_DROPDOWN`,
TOGGLE_SIDE_PANEL_CLOSE_BUTTON: `${ACTION_PREFIX}TOGGLE_SIDE_PANEL_CLOSE_BUTTON`,
OPEN_DELETE_MODAL: `${ACTION_PREFIX}OPEN_DELETE_MODAL`,
TOGGLE_MAP_CONTROL: `${ACTION_PREFIX}TOGGLE_MAP_CONTROL`,
SET_MAP_CONTROL_VISIBILITY: `${ACTION_PREFIX}SET_MAP_CONTROL_VISIBILITY`,
SET_MAP_CONTROL_SETTINGS: `${ACTION_PREFIX}SET_MAP_CONTROL_SETTINGS`,
ADD_NOTIFICATION: `${ACTION_PREFIX}ADD_NOTIFICATION`,
REMOVE_NOTIFICATION: `${ACTION_PREFIX}REMOVE_NOTIFICATION`,
SET_LOCALE: `${ACTION_PREFIX}SET_LOCALE`,
LAYER_FILTERED_ITEMS_CHANGE: `${ACTION_PREFIX}LAYER_FILTERED_ITEMS_CHANGE`,
WMS_FEATURE_INFO: `${ACTION_PREFIX}WMS_FEATURE_INFO`,
SYNC_TIME_FILTER_WITH_LAYER_TIMELINE: `${ACTION_PREFIX}SYNC_TIME_FILTER_WITH_LAYER_TIMELINE`,
SYNC_TIME_FILTER_TIMELINE_MODE: `${ACTION_PREFIX}SYNC_TIME_FILTER_TIMELINE_MODE`,
TOGGLE_PANEL_LIST_VIEW: `${ACTION_PREFIX}TOGGLE_PANEL_LIST_VIEW`,
SET_LOADING_INDICATOR: `${ACTION_PREFIX}SET_LOADING_INDICATOR`,
// uiState > export image
SET_EXPORT_IMAGE_SETTING: `${ACTION_PREFIX}SET_EXPORT_IMAGE_SETTING`,
START_EXPORTING_IMAGE: `${ACTION_PREFIX}START_EXPORTING_IMAGE`,
SET_EXPORT_IMAGE_DATA_URI: `${ACTION_PREFIX}SET_EXPORT_IMAGE_DATA_URI`,
SET_EXPORT_IMAGE_ERROR: `${ACTION_PREFIX}SET_EXPORT_IMAGE_ERROR`,
CLEANUP_EXPORT_IMAGE: `${ACTION_PREFIX}CLEANUP_EXPORT_IMAGE`,
// uiState > export video (state only, via hubble.gl)
SET_EXPORT_VIDEO_SETTING: `${ACTION_PREFIX}SET_EXPORT_VIDEO_SETTING`,
// uiState > export data
SET_EXPORT_SELECTED_DATASET: `${ACTION_PREFIX}SET_EXPORT_SELECTED_DATASET`,
SET_EXPORT_DATA_TYPE: `${ACTION_PREFIX}SET_EXPORT_DATA_TYPE`,
SET_EXPORT_FILTERED: `${ACTION_PREFIX}SET_EXPORT_FILTERED`,
SET_EXPORT_DATA: `${ACTION_PREFIX}SET_EXPORT_DATA`,
// uiState > export map
SET_EXPORT_MAP_FORMAT: `${ACTION_PREFIX}SET_EXPORT_MAP_FORMAT`,
SET_USER_MAPBOX_ACCESS_TOKEN: `${ACTION_PREFIX}SET_USER_MAPBOX_ACCESS_TOKEN`,
SET_EXPORT_MAP_HTML_MODE: `${ACTION_PREFIX}SET_EXPORT_MAP_HTML_MODE`,
// uiState > editor
SET_EDITOR_MODE: `${ACTION_PREFIX}SET_EDITOR_MODE`,
SET_SELECTED_FEATURE: `${ACTION_PREFIX}SET_SELECTED_FEATURE`,
// all
INIT: `${ACTION_PREFIX}INIT`,
ADD_DATA_TO_MAP: `${ACTION_PREFIX}ADD_DATA_TO_MAP`,
RECEIVE_MAP_CONFIG: `${ACTION_PREFIX}RECEIVE_MAP_CONFIG`,
RESET_MAP_CONFIG: `${ACTION_PREFIX}RESET_MAP_CONFIG`,
REPLACE_DATA_IN_MAP: `${ACTION_PREFIX}REPLACE_DATA_IN_MAP`,
// geo-operations
SET_FEATURES: `${ACTION_PREFIX}SET_FEATURES`,
SET_POLYGON_FILTER_LAYER: `${ACTION_PREFIX}SET_POLYGON_FILTER_LAYER`,
DELETE_FEATURE: `${ACTION_PREFIX}DELETE_FEATURE`,
TOGGLE_EDITOR_VISIBILITY: `${ACTION_PREFIX}TOGGLE_EDITOR_VISIBILITY`,
// storage
START_SAVE_STORAGE: `${ACTION_PREFIX}START_SAVE_STORAGE`
};
// eslint-disable-next-line prettier/prettier
const assignType = (obj: T): {[K in keyof T]: `${typeof ACTION_PREFIX}${string & K}`} =>
obj as any;
export default assignType(ActionTypes);
================================================
FILE: src/actions/src/action-wrapper.ts
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
export const FORWARD = '@redux-forward/FORWARD';
export const ADDRESS_PREFIX = '@@KG_';
import {Dispatch} from 'redux';
import {ActionTypes} from './action-types';
import curry from 'lodash/curry';
interface IKeplerGlAction {
type: (typeof ActionTypes)[keyof typeof ActionTypes];
// TODO: Construct a type depending on the payload
payload?: any;
meta?: {
_forward_?: string;
_addr_?: string;
_id_?: string;
[key: string]: any;
};
}
export const getActionForwardAddress = (id: string) => `${ADDRESS_PREFIX}${id.toUpperCase()}`;
/**
* Wrap an action into a forward action that only modify the state of a specific
* kepler.gl instance. kepler.gl reducer will look for signatures in the action to
* determine whether it needs to be forwarded to a specific instance reducer.
*
* wrapTo can be curried. You can create a curried action wrapper by only supply the `id` argument
*
* A forward action looks like this
* ```js
* {
* type: "@@kepler.gl/LAYER_CONFIG_CHANGE",
* payload: {
* type: '@@kepler.gl/LAYER_CONFIG_CHANGE',
* payload: {},
* meta: {
* // id of instance
* _id_: id
* // other meta
* }
* },
* meta: {
* _forward_: '@redux-forward/FORWARD',
* _addr_: '@@KG_id'
* }
* };
* ```
*
* @memberof forwardActions
* @param {string} id - The id to forward to
* @param {Object} action - the action object {type: string, payload: *}
* @returns {{type: string, payload: {type: string, payload: *, meta: {_id_: string}, meta: {_forward_: string, _addr_: string}}}}
* @public
* @example
*
* import {wrapTo, togglePerspective} from '@kepler.gl/actions';
*
* // This action will only dispatch to the KeplerGl instance with `id: map_1`
* this.props.dispatch(wrapTo('map_1', togglePerspective()));
*
* // You can also create a curried action for each instance
* const wrapToMap1 = wrapTo('map_1');
* this.props.dispatch(wrapToMap1(togglePerspective()));
*/
export const wrapTo = curry((id: string, action: IKeplerGlAction) => ({
// keep original action.type
type: action.type,
// actual action
payload: {
...action,
meta: {
...action.meta,
_id_: id
}
},
// add forward signature to meta
meta: {
...(action.meta || {}),
_forward_: FORWARD,
_addr_: getActionForwardAddress(id)
}
}));
/**
* Whether an action is a forward action
* @memberof forwardActions
* @param {Object} action - the action object
* @returns {boolean} boolean - whether the action is a forward action
* @public
*/
export const isForwardAction = (action: IKeplerGlAction) => {
return Boolean(action && action.meta && action.meta._forward_ === FORWARD);
};
/**
* Unwrap an action
* @memberof forwardActions
* @param {Object} action - the action object
* @returns {Object} - unwrapped action
* @public
*/
export const unwrap = (action: IKeplerGlAction) =>
isForwardAction(action) ? unwrap(action.payload) : action;
/**
* Given an id, returns the action for that id.
* If the action is not a forward action, return the action
* @memberof forwardActions
* @param {String} id
* @param {Object} action
* @private
*/
export const _actionFor = (id: string, action: IKeplerGlAction) =>
isForwardAction(action)
? action.meta?._addr_ === getActionForwardAddress(id)
? action.payload
: {}
: action;
/**
* Returns an action dispatcher that wraps and forwards the actions to a specific instance
* @memberof forwardActions
* @param {string} id - instance id
* @param {Function} dispatch - action dispatcher
* @public
* @example
*
* // action and forward dispatcher
* import {toggleSplitMap, forwardTo} from '@kepler.gl/actions';
* import {connect} from 'react-redux';
*
* const MapContainer = props => (
*
* props.keplerGlDispatch(toggleSplitMap())}/>
*
* )
*
* const mapDispatchToProps = (dispatch, props) => ({
* dispatch,
* keplerGlDispatch: forwardTo(‘foo’, dispatch)
* });
*
* export default connect(
* state => state,
* mapDispatchToProps
* )(MapContainer);
*/
export const forwardTo =
(id: string, dispatch: Dispatch) => (action: IKeplerGlAction) =>
dispatch(wrapTo(id, action));
/**
* Update the state of a kepler.gl instance
* @memberof forwardActions
* @param {Object} state
* @param {string} id
* @param {Object} nextState
* @private
*/
export const _updateProperty = (state, id: string, nextState) =>
state[id] === nextState
? state
: {
...state,
[id]: nextState
};
/**
* This declaration is needed to group actions in docs
*/
/**
* A set of helpers to forward dispatch actions to a specific instance reducer
* @public
*/
/* eslint-disable @typescript-eslint/no-unused-vars */
// @ts-ignore
const forwardActions = null;
/* eslint-enable @typescript-eslint/no-unused-vars */
================================================
FILE: src/actions/src/actions.ts
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {default as ActionTypes} from './action-types';
import {createAction} from '@reduxjs/toolkit';
import {
AddDataToMapOptions,
AddDataToMapPayload,
Bounds,
UiState,
ParsedConfig,
ProtoDataset
} from '@kepler.gl/types';
type Handler = (...args: any) => any;
export type ActionHandler = (...args: Parameters ) => void;
export type ActionHandlers = {
[K in keyof T]: ActionHandler;
};
/**
* Add data to kepler.gl reducer, prepare map with preset configuration if config is passed.
* Kepler.gl provides a handy set of utils to parse data from different formats to the `data` object required in dataset. You rarely need to manually format the data obejct.
*
* Use `KeplerGlSchema.getConfigToSave` to generate a json blob of the currents instance config.
* The config object value will always have higher precedence than the options properties.
*
* Kepler.gl uses `dataId` in the config to match with loaded dataset. If you pass a config object, you need
* to match the `info.id` of your dataset to the `dataId` in each `layer`, `filter` and `interactionConfig.tooltips.fieldsToShow`
*
* @memberof main
* @param {Object} data
* @param {Array|Object} data.datasets - ***required** datasets can be a dataset or an array of datasets
* Each dataset object needs to have `info` and `data` property.
* @param {Object} data.datasets.info -info of a dataset
* @param {string} data.datasets.info.id - id of this dataset. If config is defined, `id` should matches the `dataId` in config.
* @param {string} data.datasets.info.label - A display name of this dataset
* @param {Object} data.datasets.data - ***required** The data object, in a tabular format with 2 properties `fields` and `rows`
* @param {Array} data.datasets.data.fields - ***required** Array of fields,
* @param {string} data.datasets.data.fields.name - ***required** Name of the field,
* @param {Array} data.datasets.data.rows - ***required** Array of rows, in a tabular format with `fields` and `rows`
*
* @param {Object} data.options
* @param {boolean} data.options.centerMap `default: true` if `centerMap` is set to `true` kepler.gl will
* place the map view within the data points boundaries. `options.centerMap` will override `config.mapState` if passed in.
* @param {boolean} data.options.readOnly `default: false` if `readOnly` is set to `true`
* the left setting panel will be hidden
* @param {boolean} data.options.keepExistingConfig whether to keep exiting map data and associated layer filter interaction config `default: false`.
* @param {Object} data.config this object will contain the full kepler.gl instance configuration {mapState, mapStyle, visState}
* @public
* @example
*
* // app.js
* import {addDataToMap} from '@kepler.gl/actions';
*
* const sampleTripData = {
* fields: [
* {name: 'tpep_pickup_datetime', format: 'YYYY-M-D H:m:s', type: 'timestamp'},
* {name: 'pickup_longitude', format: '', type: 'real'},
* {name: 'pickup_latitude', format: '', type: 'real'}
* ],
* rows: [
* ['2015-01-15 19:05:39 +00:00', -73.99389648, 40.75011063],
* ['2015-01-15 19:05:39 +00:00', -73.97642517, 40.73981094],
* ['2015-01-15 19:05:40 +00:00', -73.96870422, 40.75424576],
* ]
* };
*
* const sampleConfig = {
* visState: {
* filters: [
* {
* id: 'me',
* dataId: 'test_trip_data',
* name: 'tpep_pickup_datetime',
* type: 'timeRange',
* view: 'enlarged'
* }
* ]
* }
* }
*
* this.props.dispatch(
* addDataToMap({
* datasets: {
* info: {
* label: 'Sample Taxi Trips in New York City',
* id: 'test_trip_data'
* },
* data: sampleTripData
* },
* options: {
* centerMap: true,
* readOnly: false,
* keepExistingConfig: false
* },
* info: {
* title: 'Taro and Blue',
* description: 'This is my map'
* },
* config: sampleConfig
* })
* );
*/
export const addDataToMap: (data: AddDataToMapPayload) => {
type: typeof ActionTypes.ADD_DATA_TO_MAP;
payload: AddDataToMapPayload;
} = createAction(ActionTypes.ADD_DATA_TO_MAP, (data: AddDataToMapPayload) => ({payload: data}));
/**
* Reset all sub-reducers to its initial state. This can be used to clear out all configuration in the reducer.
* @memberof main
* @public
*/
export const resetMapConfig: () => {type: typeof ActionTypes.RESET_MAP_CONFIG} = createAction(
ActionTypes.RESET_MAP_CONFIG
);
export type ReceiveMapConfigPayload = {
config: ParsedConfig;
options?: AddDataToMapOptions;
bounds?: Bounds;
};
/**
* Pass config to kepler.gl instance, prepare the state with preset configs.
* Calling `KeplerGlSchema.parseSavedConfig` to convert saved config before passing it in is required.
*
* You can call `receiveMapConfig` before passing in any data. The reducer will store layer and filter config, waiting for
* data to come in. When data arrives, you can call `addDataToMap` without passing any config, and the reducer will try to match
* preloaded configs. This behavior is designed to allow asynchronous data loading.
*
* It is also useful when you want to prepare the kepler.gl instance with some preset layer and filter settings.
* **Note** Sequence is important, `receiveMapConfig` needs to be called __before__ data is loaded. Currently kepler.gl doesn't allow calling `receiveMapConfig` after data is loaded.
* It will reset current configuration first then apply config to it.
* @memberof main
* @param {Object} config - ***required** The Config Object
* @param {Object} options - ***optional** The Option object
* @param {boolean} options.centerMap `default: true` if `centerMap` is set to `true` kepler.gl will
* place the map view within the data points boundaries
* @param {boolean} options.readOnly `default: false` if `readOnly` is set to `true`
* the left setting panel will be hidden
* @param {boolean} options.keepExistingConfig whether to keep exiting layer filter and interaction config `default: false`.
* @param {boolean} options.autoCreateLayers whether to automatically create layers based on dataset columns `default: true`.
* @public
* @example
* import {receiveMapConfig} from '@kepler.gl/actions';
* import KeplerGlSchema from '@kepler.gl/schemas';
*
* const parsedConfig = KeplerGlSchema.parseSavedConfig(config);
* this.props.dispatch(receiveMapConfig(parsedConfig));
*/
export const receiveMapConfig: (
config: ReceiveMapConfigPayload['config'],
options: ReceiveMapConfigPayload['options']
) => {
type: typeof ActionTypes.RECEIVE_MAP_CONFIG;
payload: ReceiveMapConfigPayload;
} = createAction(
ActionTypes.RECEIVE_MAP_CONFIG,
(config: ReceiveMapConfigPayload['config'], options: ReceiveMapConfigPayload['options']) => ({
payload: {
config,
options
}
})
);
export type KeplerGlInitPayload = {
mapboxApiAccessToken?: string;
mapboxApiUrl?: string;
mapStylesReplaceDefault?: boolean;
initialUiState?: Partial;
};
/**
* Initialize kepler.gl reducer. It is used to pass in `mapboxApiAccessToken` to `mapStyle` reducer.
* @memberof main
* @param {object} payload
* @param payload.mapboxApiAccessToken - mapboxApiAccessToken to be saved to mapStyle reducer
* @param payload.mapboxApiUrl - mapboxApiUrl to be saved to mapStyle reducer.
* @param payload.mapStylesReplaceDefault - mapStylesReplaceDefault to be saved to mapStyle reducer
* @param payload.initialUiState - initial ui state
* @public
*/
// @ts-expect-error
export const keplerGlInit: (options?: KeplerGlInitPayload) => {
type: typeof ActionTypes.INIT;
payload: KeplerGlInitPayload;
} = createAction(ActionTypes.INIT, (payload: KeplerGlInitPayload) => ({payload}));
export type ReplaceDataToMapOptions = {
centerMap?: boolean;
keepExistingConfig?: boolean;
autoCreateLayers?: boolean;
};
export type ReplaceDataInMapPayload = {
datasetToReplaceId: string;
datasetToUse: ProtoDataset;
options?: ReplaceDataToMapOptions;
};
/**
* Initialize kepler.gl reducer. It is used to pass in `mapboxApiAccessToken` to `mapStyle` reducer.
* @memberof main
* @param payload
* @param payload.datasetToReplaceId - mapboxApiAccessToken to be saved to mapStyle reducer
* @param payload.datasetToUse - mapboxApiUrl to be saved to mapStyle reducer.
* @public
*/
export const replaceDataInMap: (payload: ReplaceDataInMapPayload) => {
type: typeof ActionTypes.REPLACE_DATA_IN_MAP;
payload: ReplaceDataInMapPayload;
} = createAction(ActionTypes.REPLACE_DATA_IN_MAP, (payload: ReplaceDataInMapPayload) => ({
payload
}));
/**
* This declaration is needed to group actions in docs
*/
/**
* Main kepler.gl actions, these actions handles loading data and config into kepler.gl reducer. These actions
* is listened by all subreducers,
* @public
*/
/* eslint-disable @typescript-eslint/no-unused-vars */
// @ts-ignore
const main = null;
/* eslint-enable @typescript-eslint/no-unused-vars */
================================================
FILE: src/actions/src/identity-actions.ts
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {createAction} from '@reduxjs/toolkit';
import {default as ActionTypes} from './action-types';
import {UiState} from '@kepler.gl/types';
export type RegisterEntryUpdaterAction = {
payload: {
id: string;
mint?: boolean;
mapboxApiAccessToken?: string;
mapboxApiUrl?: string;
mapStylesReplaceDefault?: boolean;
initialUiState?: Partial;
};
};
export type RenameEntryUpdaterAction = {
payload: {
oldId: string;
newId: string;
};
};
/**
*
* Add a new kepler.gl instance in `keplerGlReducer`. This action is called under-the-hood when a `KeplerGl` component is **mounted** to the dom.
* Note that if you dispatch actions such as adding data to a kepler.gl instance before the React component is mounted, the action will not be
* performed. Instance reducer can only handle actions when it is instantiated.
* @memberof rootActions
* @param payload
* @param payload.id - ***required** The id of the instance
* @param payload.mint - Whether to use a fresh empty state, when `mint: true` it will *always* load a fresh state when the component is re-mounted.
* When `mint: false` it will register with existing instance state under the same `id`, when the component is unmounted then mounted again. Default: `true`
* @param payload.mapboxApiAccessToken - mapboxApiAccessToken to be saved in `map-style` reducer.
* @param payload.mapboxApiUrl - mapboxApiUrl to be saved in `map-style` reducer.
* @param payload.mapStylesReplaceDefault - mapStylesReplaceDefault to be saved in `map-style` reducer.
* @param payload.initialUiState - initial ui state
* @public
*/
export const registerEntry: (entry: RegisterEntryUpdaterAction['payload']) => {
type: typeof ActionTypes.REGISTER_ENTRY;
payload: RegisterEntryUpdaterAction['payload'];
} = createAction(ActionTypes.REGISTER_ENTRY, (payload: RegisterEntryUpdaterAction['payload']) => ({
payload
}));
/**
*
* Delete an instance from `keplerGlReducer`. This action is called under-the-hood when a `KeplerGl` component is **un-mounted** to the dom.
* If `mint` is set to be `true` in the component prop, the instance state will be deleted from the root reducer. Otherwise, the root reducer will keep
* the instance state and later transfer it to a newly mounted component with the same `id`
* @memberof rootActions
* @param {string} id - the id of the instance to be deleted
* @public
*/
export const deleteEntry: (id: string) => {
type: typeof ActionTypes.DELETE_ENTRY;
payload: {id: string};
} = createAction(ActionTypes.DELETE_ENTRY, (id: string) => ({payload: {id: id}}));
/**
*
* Rename an instance in the root reducer, keep its entire state
*
* @memberof rootActions
* @param {string} oldId - ***required** old id
* @param {string} newId - ***required** new id
* @public
*/
export const renameEntry: (
oldId: string,
newId: string
) => {
type: typeof ActionTypes.RENAME_ENTRY;
payload: RenameEntryUpdaterAction['payload'];
} = createAction(ActionTypes.RENAME_ENTRY, (oldId: string, newId: string) => ({
payload: {
oldId,
newId
}
}));
/**
* This declaration is needed to group actions in docs
*/
/**
* Root actions managers adding and removing instances in root reducer.
* Under-the-hood, when a `KeplerGl` component is mounted or unmounted,
* it will automatically calls these actions to add itself to the root reducer.
* However, sometimes the data is ready before the component is registered in the reducer,
* in this case, you can manually call these actions or the corresponding updater to add it to the reducer.
*
* @public
*/
/* eslint-disable @typescript-eslint/no-unused-vars */
// @ts-ignore
const rootActions = null;
/* eslint-enable @typescript-eslint/no-unused-vars */
================================================
FILE: src/actions/src/index.ts
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import * as VisStateActions from './vis-state-actions';
import * as MapStateActions from './map-state-actions';
import * as UIStateActions from './ui-state-actions';
import * as MapStyleActions from './map-style-actions';
import * as ProviderActions from './provider-actions';
// Actions
export * from './actions';
// kepler.gl actions accessible outside component
export * from './action-wrapper';
export * from './vis-state-actions';
export * from './ui-state-actions';
export * from './map-state-actions';
export * from './map-style-actions';
export * from './identity-actions';
export * from './provider-actions';
export {VisStateActions, MapStateActions, UIStateActions, MapStyleActions, ProviderActions};
// Dispatch
export {
_actionFor,
forwardTo,
getActionForwardAddress,
isForwardAction,
unwrap,
wrapTo
} from './action-wrapper';
export {default as ActionTypes, ACTION_PREFIX} from './action-types';
export {ActionTypes as ProviderActionTypes} from './provider-actions';
================================================
FILE: src/actions/src/map-state-actions.ts
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {createAction} from '@reduxjs/toolkit';
import {default as ActionTypes} from './action-types';
import {Bounds, Merge, Viewport} from '@kepler.gl/types';
export type TogglePerspectiveUpdaterAction = void;
/**
*
* Toggle between 3d and 2d map.
* @memberof mapStateActions
* @public
* @example
* import {togglePerspective} from '@kepler.gl/actions';
* this.props.dispatch(togglePerspective());
*/
export const togglePerspective: () => Merge<
TogglePerspectiveUpdaterAction,
{type: typeof ActionTypes.TOGGLE_PERSPECTIVE}
> = createAction(ActionTypes.TOGGLE_PERSPECTIVE);
export type FitBoundsUpdaterAction = {payload: Bounds};
/**
* Fit map viewport to bounds
* @memberof mapStateActions
* @param {Array} bounds as `[lngMin, latMin, lngMax, latMax]`
* @public
* @example
* import {fitBounds} from '@kepler.gl/actions';
* this.props.dispatch(fitBounds([-122.23, 37.127, -122.11, 37.456]));
*/
export const fitBounds: (
payload: Bounds
) => Merge = createAction(
ActionTypes.FIT_BOUNDS,
(bounds: Bounds) => ({payload: bounds})
);
export type UpdateMapUpdaterAction = {payload: {viewport: Viewport; mapIndex?: number}};
/**
* Update map viewport
* @memberof mapStateActions
* @param {Object} viewport viewport object container one or any of these properties `width`, `height`, `latitude` `longitude`, `zoom`, `pitch`, `bearing`, `dragRotate`
* @param {Number} [viewport.width] Width of viewport
* @param {Number} [viewport.height] Height of viewport
* @param {Number} [viewport.zoom] Zoom of viewport
* @param {Number} [viewport.pitch] Camera angle in degrees (0 is straight down)
* @param {Number} [viewport.bearing] Map rotation in degrees (0 means north is up)
* @param {Number} [viewport.latitude] Latitude center of viewport on map in mercator projection
* @param {Number} [viewport.longitude] Longitude Center of viewport on map in mercator projection
* @param {boolean} [viewport.dragRotate] Whether to enable drag and rotate map into perspective viewport
* @param {number} mapIndex Index of which map to update the viewport of
* @public
* @example
* import {updateMap} from '@kepler.gl/actions';
* this.props.dispatch(updateMap({latitude: 37.75043, longitude: -122.34679, width: 800, height: 1200}, 0));
*/
export const updateMap: (
viewport: Viewport,
mapIndex?: number
) => Merge = createAction(
ActionTypes.UPDATE_MAP,
(viewport: Viewport, mapIndex?: number) => ({
payload: {
viewport,
mapIndex
}
})
);
export type ToggleSplitMapUpdaterAction = {
payload: number;
};
/**
* Toggle between single map or split maps
* @memberof mapStateActions
* @param {Number} [index] index is provided, close split map at index
* @public
* @example
* import {toggleSplitMap} from '@kepler.gl/actions';
* this.props.dispatch(toggleSplitMap());
*/
export const toggleSplitMap: (
payload: number
) => Merge = createAction(
ActionTypes.TOGGLE_SPLIT_MAP,
(index: number) => ({payload: index})
);
export type ToggleSplitMapViewportUpdaterAction = {
payload: {
isViewportSynced?: boolean;
isZoomLocked?: boolean;
};
};
/**
* For split maps, toggle between having (un)synced viewports and (un)locked zooms
* @memberof mapStateActions
* @param {Object} syncInfo
* @param {boolean} [syncInfo.isViewportSynced] Are the 2 split maps having synced viewports?
* @param {boolean} [syncInfo.isZoomLocked] If split, are the zooms locked to each other or independent?
*/
export const toggleSplitMapViewport: (payload: {
isViewportSynced?: boolean;
isZoomLocked?: boolean;
}) => Merge<
ToggleSplitMapViewportUpdaterAction,
{type: typeof ActionTypes.TOGGLE_SPLIT_MAP_VIEWPORT}
> = createAction(
ActionTypes.TOGGLE_SPLIT_MAP_VIEWPORT,
(syncInfo: ToggleSplitMapViewportUpdaterAction['payload']) => ({payload: syncInfo})
);
/**
* This declaration is needed to group actions in docs
*/
/**
* Actions handled mostly by `mapState` reducer.
* They manage map viewport update, toggle between 2d and 3d map,
* toggle between single and split maps.
*
* @public
*/
/* eslint-disable @typescript-eslint/no-unused-vars */
// @ts-ignore
const mapStateActions = null;
/* eslint-enable @typescript-eslint/no-unused-vars */
================================================
FILE: src/actions/src/map-style-actions.ts
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {createAction} from '@reduxjs/toolkit';
import {default as ActionTypes} from './action-types';
import {
InputStyle,
MapStyles,
Merge,
RGBColor,
MapState,
VisibleLayerGroups,
LayerGroup
} from '@kepler.gl/types';
/**
* Add map style from user input to reducer and set it to current style
* This action is called when user click confirm after putting in a valid style url in the custom map style dialog.
* It should not be called from outside kepler.gl without a valid `inputStyle` in the `mapStyle` reducer.
* param {void}
* @memberof mapStyleActions
* @public
*/
export const addCustomMapStyle: () => {
type: typeof ActionTypes.ADD_CUSTOM_MAP_STYLE;
} = createAction(ActionTypes.ADD_CUSTOM_MAP_STYLE);
export type RemoveCustomMapStyleUpdaterAction = {
payload: {
id: string;
};
};
/**
* Edit map style from user input to reducer.
* This action is called when user clicks confirm after editing an existing custom style in the custom map style dialog.
* It should not be called from outside kepler.gl without a valid `inputStyle` in the `mapStyle` reducer.
* param {void}
* @memberof mapStyleActions
* @public
*/
export const editCustomMapStyle: () => {
type: typeof ActionTypes.EDIT_CUSTOM_MAP_STYLE;
} = createAction(ActionTypes.EDIT_CUSTOM_MAP_STYLE);
/**
* Remove a custom map style from `state.mapStyle.mapStyles`.
* @param id
* @memberof mapStyleActions
* @public
*/
export const removeCustomMapStyle: ({
id
}: RemoveCustomMapStyleUpdaterAction['payload']) => Merge<
RemoveCustomMapStyleUpdaterAction,
{type: typeof ActionTypes.REMOVE_CUSTOM_MAP_STYLE}
> = createAction(ActionTypes.REMOVE_CUSTOM_MAP_STYLE, ({id}) => {
return {
payload: {
id
}
};
});
/** INPUT_MAP_STYLE */
export type InputMapStyleUpdaterAction = {
payload: {
inputStyle: Partial;
mapState?: MapState;
};
};
/**
* Input a custom map style object
* @memberof mapStyleActions
* @param inputStyle
* @param inputStyle.url - style url e.g. `'mapbox://styles/heshan/xxxxxyyyyzzz'`
* @param inputStyle.id - style id e.g. `'custom_style_1'`
* @param inputStyle.style - actual mapbox style json
* @param inputStyle.label - style name
* @param inputStyle.accessToken - mapbox access token
* @param inputStyle.icon - icon image data url
* @param [mapState] - mapState is optional
* @public
*/
export const inputMapStyle: (
inputStyle: InputMapStyleUpdaterAction['payload']['inputStyle'],
mapState?: InputMapStyleUpdaterAction['payload']['mapState']
) => Merge = createAction(
ActionTypes.INPUT_MAP_STYLE,
(
inputStyle: InputMapStyleUpdaterAction['payload']['inputStyle'],
mapState: InputMapStyleUpdaterAction['payload']['mapState']
) => ({
payload: {
inputStyle,
mapState
}
})
);
/** MAP_CONFIG_CHANGE */
export type MapConfigChangeUpdaterAction = {
payload: {
visibleLayerGroups?: VisibleLayerGroups;
topLayerGroups?: VisibleLayerGroups;
};
};
/**
* Update `visibleLayerGroups`to change layer group visibility
* @memberof mapStyleActions
* @param mapStyle new config `{visibleLayerGroups: {label: false, road: true, background: true}}`
* @public
*/
export const mapConfigChange: (
mapStyle: MapConfigChangeUpdaterAction['payload']
) => Merge =
createAction(
ActionTypes.MAP_CONFIG_CHANGE,
(mapStyle: MapConfigChangeUpdaterAction['payload']) => ({payload: mapStyle})
);
type OnLoadMapStyleSuccessCallback = (payload: {styleType: string}) => any;
/** REQUEST_MAP_STYLES */
export type RequestMapStylesUpdaterAction = {
payload: {
mapStyles: {
[key: string]: {
id: string;
label?: string;
url: string;
icon?: string;
layerGroups?: LayerGroup[];
};
};
onSuccess?: OnLoadMapStyleSuccessCallback;
};
};
/**
* Request map style style object based on style.url.
* @memberof mapStyleActions
* @public
*/
export const requestMapStyles: (
mapStyles: RequestMapStylesUpdaterAction['payload']['mapStyles'],
onSuccess?: RequestMapStylesUpdaterAction['payload']['onSuccess']
) => Merge =
createAction(
ActionTypes.REQUEST_MAP_STYLES,
(
mapStyles: RequestMapStylesUpdaterAction['payload']['mapStyles'],
onSuccess?: RequestMapStylesUpdaterAction['payload']['onSuccess']
) => ({payload: {mapStyles, onSuccess}})
);
/** LOAD_MAP_STYLES */
export type LoadMapStylesUpdaterAction = {
payload: {
newStyles: MapStyles;
onSuccess?: OnLoadMapStyleSuccessCallback;
};
};
/**
* Callback when load map style success
* @memberof mapStyleActions
* @param newStyles a `{[id]: style}` mapping
* @public
*/
export const loadMapStyles: (
newStyles: LoadMapStylesUpdaterAction['payload']['newStyles'],
onSuccess?: LoadMapStylesUpdaterAction['payload']['onSuccess']
) => Merge = createAction(
ActionTypes.LOAD_MAP_STYLES,
(
newStyles: LoadMapStylesUpdaterAction['payload']['newStyles'],
onSuccess?: LoadMapStylesUpdaterAction['payload']['onSuccess']
) => ({payload: {newStyles, onSuccess}})
);
/** LOAD_MAP_STYLE_ERR */
export type LoadMapStyleErrUpdaterAction = {
payload: {
ids: string[];
error: Error;
};
};
/**
* Callback when load map style error
* @memberof mapStyleActions
* @param ids
* @param error
* @public
*/
export const loadMapStyleErr: (
ids: LoadMapStyleErrUpdaterAction['payload']['ids'],
error: LoadMapStyleErrUpdaterAction['payload']['error']
) => Merge =
createAction(
ActionTypes.LOAD_MAP_STYLE_ERR,
(
ids: LoadMapStyleErrUpdaterAction['payload']['ids'],
error: LoadMapStyleErrUpdaterAction['payload']['error']
) => ({payload: {ids, error}})
);
/** MAP_STYLE_CHANGE */
export type MapStyleChangeUpdaterAction = {
payload: {
styleType: string;
onSuccess?: OnLoadMapStyleSuccessCallback;
};
};
/**
* Change to another map style. The selected style should already been loaded into `mapStyle.mapStyles`
* @memberof mapStyleActions
* @param styleType the style to change to
* @param onSuccess optional success callback function when an asynchronous basemap syle has loaded
* @public
*/
export const mapStyleChange: (
styleType: MapStyleChangeUpdaterAction['payload']['styleType'],
onSuccess?: MapStyleChangeUpdaterAction['payload']['onSuccess']
) => Merge = createAction(
ActionTypes.MAP_STYLE_CHANGE,
(
styleType: MapStyleChangeUpdaterAction['payload']['styleType'],
onSuccess?: MapStyleChangeUpdaterAction['payload']['onSuccess']
) => ({payload: {styleType, onSuccess}})
);
/** LOAD_CUSTOM_MAP_STYLE */
export type LoadCustomMapStyleUpdaterAction = {
payload: {
icon?: string;
style?: object;
error?: object | boolean;
};
};
/**
* Callback when a custom map style object is received
* @memberof mapStyleActions
* @param customMapStyle
* @param customMapStyle.icon
* @param customMapStyle.style
* @param customMapStyle.error
* @public
*/
export const loadCustomMapStyle: (
customMapStyle: LoadCustomMapStyleUpdaterAction['payload']
) => Merge =
createAction(
ActionTypes.LOAD_CUSTOM_MAP_STYLE,
(customMapStyle: LoadCustomMapStyleUpdaterAction['payload']) => ({payload: customMapStyle})
);
/** SET_3D_BUILDING_COLOR */
export type Set3dBuildingColorUpdaterAction = {
payload: RGBColor;
};
// SET_3D_BUILDING_COLOR
/**
* Set 3d building layer group color
* @memberof mapStyleActions
* @param color - [r, g, b]
* @public
*/
export const set3dBuildingColor: (
color: Set3dBuildingColorUpdaterAction['payload']
) => Merge =
createAction(
ActionTypes.SET_3D_BUILDING_COLOR,
(color: Set3dBuildingColorUpdaterAction['payload']) => ({payload: color})
);
/** SET_BACKGROUND_COLOR */
export type SetBackgroundColorUpdaterAction = {
payload: RGBColor;
};
/**
* Set background color
* @memberof mapStyleActions
* @param color - [r, g, b]
* @public
*/
export const setBackgroundColor: (
color: SetBackgroundColorUpdaterAction['payload']
) => Merge =
createAction(ActionTypes.SET_BACKGROUND_COLOR, (color: RGBColor) => ({payload: color}));
/**
* Actions handled mostly by `mapStyle` reducer.
* They manage the display of base map, such as loading and receiving base map styles,
* hiding and showing map layers, user input of custom map style url.
*
* @public
*/
/* eslint-disable @typescript-eslint/no-unused-vars */
// @ts-ignore
const mapStyleActions = null;
/* eslint-enable @typescript-eslint/no-unused-vars */
================================================
FILE: src/actions/src/provider-actions.ts
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {createAction} from '@reduxjs/toolkit';
import {ACTION_PREFIX} from './action-types';
import {
ExportFileOptions,
ExportFileToCloudPayload,
OnErrorCallBack,
OnSuccessCallBack
} from '@kepler.gl/types';
import {Provider} from '@kepler.gl/cloud-providers';
// eslint-disable-next-line prettier/prettier
const assignType = (obj: T): {[K in keyof T]: `${typeof ACTION_PREFIX}${string & K}`} =>
obj as any;
export const ActionTypes = assignType({
EXPORT_FILE_TO_CLOUD: `${ACTION_PREFIX}EXPORT_FILE_TO_CLOUD`,
EXPORT_FILE_SUCCESS: `${ACTION_PREFIX}EXPORT_FILE_SUCCESS`,
EXPORT_FILE_ERROR: `${ACTION_PREFIX}EXPORT_FILE_ERROR`,
RESET_PROVIDER_STATUS: `${ACTION_PREFIX}RESET_PROVIDER_STATUS`,
POST_SAVE_LOAD_SUCCESS: `${ACTION_PREFIX}POST_SAVE_LOAD_SUCCESS`,
LOAD_CLOUD_MAP: `${ACTION_PREFIX}LOAD_CLOUD_MAP`,
LOAD_CLOUD_MAP_SUCCESS: `${ACTION_PREFIX}LOAD_CLOUD_MAP_SUCCESS`,
LOAD_CLOUD_MAP_SUCCESS_2: `${ACTION_PREFIX}LOAD_CLOUD_MAP_SUCCESS_2`,
LOAD_CLOUD_MAP_ERROR: `${ACTION_PREFIX}LOAD_CLOUD_MAP_ERROR`
});
/**
* Call provider to upload file to cloud
* @param mapData
* @param provider
* @param options
* @param onSuccess
* @param onError
* @param closeModal
*/
export const exportFileToCloud: (p: ExportFileToCloudPayload) => {
type: typeof ActionTypes.EXPORT_FILE_TO_CLOUD;
payload: ExportFileToCloudPayload;
} = createAction(ActionTypes.EXPORT_FILE_TO_CLOUD, (payload: ExportFileToCloudPayload) => ({
payload
}));
/** EXPORT_FILE_SUCCESS */
export type ExportFileSuccessPayload = {
response: any;
provider: Provider;
options?: ExportFileOptions;
onSuccess?: OnSuccessCallBack;
closeModal?: boolean;
};
export const exportFileSuccess: (p: ExportFileSuccessPayload) => {
type: typeof ActionTypes.EXPORT_FILE_SUCCESS;
payload: ExportFileSuccessPayload;
} = createAction(ActionTypes.EXPORT_FILE_SUCCESS, (payload: ExportFileSuccessPayload) => ({
payload
}));
/** EXPORT_FILE_ERROR */
export type ExportFileErrorPayload = {
error: any;
provider: Provider;
options?: ExportFileOptions;
onError?: OnErrorCallBack;
};
export const exportFileError: (p: ExportFileErrorPayload) => {
type: typeof ActionTypes.EXPORT_FILE_ERROR;
payload: ExportFileErrorPayload;
} = createAction(ActionTypes.EXPORT_FILE_ERROR, (payload: ExportFileErrorPayload) => ({payload}));
/** POST_SAVE_LOAD_SUCCESS */
export type PostSaveLoadSuccessPayload = string;
export const postSaveLoadSuccess: (p: PostSaveLoadSuccessPayload) => {
type: typeof ActionTypes.POST_SAVE_LOAD_SUCCESS;
payload: PostSaveLoadSuccessPayload;
} = createAction(ActionTypes.POST_SAVE_LOAD_SUCCESS, (message: PostSaveLoadSuccessPayload) => ({
payload: message
}));
export const resetProviderStatus: () => {
type: typeof ActionTypes.RESET_PROVIDER_STATUS;
} = createAction(ActionTypes.RESET_PROVIDER_STATUS);
/** LOAD_CLOUD_MAP */
export type LoadCloudMapPayload = {
loadParams: any;
provider: string;
onSuccess?: any;
onError?: OnErrorCallBack;
};
export const loadCloudMap: (p: LoadCloudMapPayload) => {
type: typeof ActionTypes.LOAD_CLOUD_MAP;
payload: LoadCloudMapPayload;
} = createAction(ActionTypes.LOAD_CLOUD_MAP, payload => ({payload}));
/** LOAD_CLOUD_MAP_SUCCESS */
type LoadCloudMapSuccessCallback = (p: {response: any; loadParams: any; provider: Provider}) => any;
export type LoadCloudMapSuccessPayload = {
response: any;
loadParams: any;
provider: Provider;
onSuccess?: LoadCloudMapSuccessCallback;
onError?: OnErrorCallBack;
};
export const loadCloudMapSuccess: (p: LoadCloudMapSuccessPayload) => {
type: typeof ActionTypes.LOAD_CLOUD_MAP_SUCCESS;
payload: LoadCloudMapSuccessPayload;
} = createAction(ActionTypes.LOAD_CLOUD_MAP_SUCCESS, (payload: LoadCloudMapSuccessPayload) => ({
payload
}));
/** LOAD_CLOUD_MAP_SUCCESS_2 */
export type LoadCloudMapSuccess2Payload = LoadCloudMapSuccessPayload & {
datasetsPayload: any;
};
export const loadCloudMapSuccess2: (p: LoadCloudMapSuccess2Payload) => {
type: typeof ActionTypes.LOAD_CLOUD_MAP_SUCCESS_2;
payload: LoadCloudMapSuccess2Payload;
} = createAction(ActionTypes.LOAD_CLOUD_MAP_SUCCESS_2, (payload: LoadCloudMapSuccess2Payload) => ({
payload
}));
/** LOAD_CLOUD_MAP_ERROR */
export type LoadCloudMapErrorPayload = {
error: any;
provider: Provider;
onError?: OnErrorCallBack;
};
export const loadCloudMapError: (p: LoadCloudMapErrorPayload) => {
type: typeof ActionTypes.LOAD_CLOUD_MAP_ERROR;
payload: LoadCloudMapErrorPayload;
} = createAction(ActionTypes.LOAD_CLOUD_MAP_ERROR, (payload: LoadCloudMapErrorPayload) => ({
payload
}));
================================================
FILE: src/actions/src/ui-state-actions.ts
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {createAction} from '@reduxjs/toolkit';
import {default as ActionTypes} from './action-types';
import {Merge, ExportImage} from '@kepler.gl/types';
/** TOGGLE_SIDE_PANEL */
export type ToggleSidePanelUpdaterAction = {
payload: string | null;
};
/**
* Toggle active side panel
* @memberof uiStateActions
* @param id id of side panel to be shown, one of `layer`, `filter`, `interaction`, `map`
* @public
*/
export const toggleSidePanel: (
id: ToggleSidePanelUpdaterAction['payload']
) => Merge =
createAction(ActionTypes.TOGGLE_SIDE_PANEL, (id: string | null) => ({payload: id}));
/** TOGGLE_MODAL */
export type ToggleModalUpdaterAction = {
payload: string | null;
};
/**
* Show and hide modal dialog
* @memberof uiStateActions
* @param id - id of modal to be shown, null to hide modals. One of:
* - [`DATA_TABLE_ID`](../constants/default-settings.md#data_table_id)
* - [`DELETE_DATA_ID`](../constants/default-settings.md#delete_data_id)
* - [`ADD_DATA_ID`](../constants/default-settings.md#add_data_id)
* - [`EXPORT_IMAGE_ID`](../constants/default-settings.md#export_image_id)
* - [`EXPORT_DATA_ID`](../constants/default-settings.md#export_data_id)
* - [`ADD_MAP_STYLE_ID`](../constants/default-settings.md#add_map_style_id)
* @public
*/
export const toggleModal: (
id: ToggleModalUpdaterAction['payload']
) => Merge = createAction(
ActionTypes.TOGGLE_MODAL,
(id: ToggleModalUpdaterAction['payload']) => ({
payload: id
})
);
/** SHOW_EXPORT_DROPDOWN */
export type ShowExportDropdownUpdaterAction = {
payload: string;
};
/**
* Hide and show side panel header dropdown, activated by clicking the share link on top of the side panel
* @memberof uiStateActions
* @param id - id of the dropdown
* @public
*/
export const showExportDropdown: (
id: ShowExportDropdownUpdaterAction['payload']
) => Merge =
createAction(
ActionTypes.SHOW_EXPORT_DROPDOWN,
(id: ShowExportDropdownUpdaterAction['payload']) => ({payload: id})
);
/**
* Hide side panel header dropdown, activated by clicking the share link on top of the side panel
* @memberof uiStateActions
* @public
*/
export const hideExportDropdown: () => {
type: typeof ActionTypes.HIDE_EXPORT_DROPDOWN;
} = createAction(ActionTypes.HIDE_EXPORT_DROPDOWN);
/** TOGGLE_SIDE_PANEL_CLOSE_BUTTON*/
export type ToggleSidePanelCloseButtonUpdaterAction = {
payload: {
show: boolean;
};
};
/**
* Toggle side panel close button
* @memberof uiStateActions
* @param show - if side panel button visible
* @public
*/
export const toggleSidePanelCloseButton: (
show: boolean
) => Merge<
ToggleSidePanelCloseButtonUpdaterAction,
{type: typeof ActionTypes.TOGGLE_SIDE_PANEL_CLOSE_BUTTON}
> = createAction(ActionTypes.TOGGLE_SIDE_PANEL_CLOSE_BUTTON, show => ({payload: {show}}));
/** TOGGLE_MAP_CONTROL */
export type ToggleMapControlUpdaterAction = {
payload: {
panelId: string;
index: number;
};
};
/**
* Toggle active map control panel
* @memberof uiStateActions
* @param panelId - map control panel id, one of the keys of: [`DEFAULT_MAP_CONTROLS`](#default_map_controls)
* @public
*/
export const toggleMapControl: (
panelId: ToggleMapControlUpdaterAction['payload']['panelId'],
index: ToggleMapControlUpdaterAction['payload']['index']
) => Merge =
createAction(
ActionTypes.TOGGLE_MAP_CONTROL,
(
panelId: ToggleMapControlUpdaterAction['payload']['panelId'],
index: ToggleMapControlUpdaterAction['payload']['index']
) => ({
payload: {
panelId,
index
}
})
);
/** SET_MAP_CONTROL_VISIBILITY */
export type setMapControlVisibilityUpdaterAction = {
payload: {
panelId: string;
show: boolean;
};
};
/**
* Toggle active map control panel
* @memberof uiStateActions
* @param panelId - map control panel id, one of the keys of: [`DEFAULT_MAP_CONTROLS`](#default_map_controls)
* @public
*/
export const setMapControlVisibility: (
panelId: setMapControlVisibilityUpdaterAction['payload']['panelId'],
show: setMapControlVisibilityUpdaterAction['payload']['show']
) => Merge<
setMapControlVisibilityUpdaterAction,
{type: typeof ActionTypes.SET_MAP_CONTROL_VISIBILITY}
> = createAction(
ActionTypes.SET_MAP_CONTROL_VISIBILITY,
(
panelId: setMapControlVisibilityUpdaterAction['payload']['panelId'],
show: setMapControlVisibilityUpdaterAction['payload']['show']
) => ({
payload: {
panelId,
show
}
})
);
/** SET_MAP_CONTROL_SETTINGS */
export type setMapControlSettingsUpdaterAction = {
payload: {
panelId: string;
settings: Record;
};
};
/**
* Set map control settings
* @memberof uiStateActions
* @param panelId - map control panel id, one of the keys of: [`DEFAULT_MAP_CONTROLS`](#default_map_controls)
* @public
*/
export const setMapControlSettings: (
panelId: string,
settings: Record
) => Merge<
setMapControlSettingsUpdaterAction,
{type: typeof ActionTypes.SET_MAP_CONTROL_SETTINGS}
> = createAction(ActionTypes.SET_MAP_CONTROL_SETTINGS, (panelId, settings) => ({
payload: {panelId, settings}
}));
/** OPEN_DELETE_MODAL */
export type OpenDeleteModalUpdaterAction = {
payload: string;
};
/**
* Toggle active map control panel
* @memberof uiStateActions
* @param datasetId - `id` of the dataset to be deleted
* @public
*/
export const openDeleteModal: (
datasetId: OpenDeleteModalUpdaterAction['payload']
) => Merge =
createAction(
ActionTypes.OPEN_DELETE_MODAL,
(datasetId: OpenDeleteModalUpdaterAction['payload']) => ({payload: datasetId})
);
/** ADD_NOTIFICATION */
export type AddNotificationUpdaterAction = {
payload: object;
};
/**
* Add a notification to be displayed.
* Existing notification will be updated in case of matching id.
* @memberof uiStateActions
* @param notification - The `notification` object to be added or updated
* @public
*/
export const addNotification: (notification: AddNotificationUpdaterAction['payload']) => Merge<
AddNotificationUpdaterAction,
{
type: typeof ActionTypes.ADD_NOTIFICATION;
}
> = createAction(
ActionTypes.ADD_NOTIFICATION,
(notification: AddNotificationUpdaterAction['payload']) => ({payload: notification})
);
/** REMOVE_NOTIFICATION */
export type RemoveNotificationUpdaterAction = {
payload: string;
};
/**
* Remove a notification
* @memberof uiStateActions
* @param id - `id` of the notification to be removed
* @public
*/
export const removeNotification: (
id: RemoveNotificationUpdaterAction['payload']
) => Merge =
createAction(
ActionTypes.REMOVE_NOTIFICATION,
(id: RemoveNotificationUpdaterAction['payload']) => ({payload: id})
);
/** SET_EXPORT_IMAGE_SETTING */
export type SetExportImageSettingUpdaterAction = {
payload: Partial;
};
/**
* Set `exportImage` settings: ratio, resolution, legend
* @memberof uiStateActions
* @param newSetting - {ratio: '1x'}
* @public
*/
export const setExportImageSetting: (
newSetting: SetExportImageSettingUpdaterAction['payload']
) => Merge<
SetExportImageSettingUpdaterAction,
{type: typeof ActionTypes.SET_EXPORT_IMAGE_SETTING}
> = createAction(
ActionTypes.SET_EXPORT_IMAGE_SETTING,
(newSetting: SetExportImageSettingUpdaterAction['payload']) => ({payload: newSetting})
);
/**
* Start exporting image flow
* @memberof uiStateActions
* @public
*/
export const startExportingImage: (options?: {
ratio?: string;
resolution?: string;
legend?: string;
center?: boolean;
}) => Merge =
createAction(ActionTypes.START_EXPORTING_IMAGE, (payload: any) => ({payload}));
/** SET_EXPORT_IMAGE_DATA_URI */
export type SetExportImageDataUriUpdaterAction = {
payload: string;
};
/**
* Set `exportImage.setExportImageDataUri` to a dataUri
* @memberof uiStateActions
* @param dataUri - export image data uri
* @public
*/
export const setExportImageDataUri: (
dataUri: SetExportImageDataUriUpdaterAction['payload']
) => Merge<
SetExportImageDataUriUpdaterAction,
{type: typeof ActionTypes.SET_EXPORT_IMAGE_DATA_URI}
> = createAction(
ActionTypes.SET_EXPORT_IMAGE_DATA_URI,
(dataUri: SetExportImageDataUriUpdaterAction['payload']) => ({payload: dataUri})
);
/** SET_EXPORT_IMAGE_ERROR */
export type SetExportImageErrorUpdaterAction = {
payload: Error;
};
/**
* Set Export image error
* @memberof uiStateActions
* @public
*/
export const setExportImageError: (
error: SetExportImageErrorUpdaterAction['payload']
) => Merge =
createAction(
ActionTypes.SET_EXPORT_IMAGE_ERROR,
(error: SetExportImageErrorUpdaterAction['payload']) => ({payload: error})
);
/**
* Delete cached export image
* @memberof uiStateActions
* @public
*/
export const cleanupExportImage: () => {
type: typeof ActionTypes.CLEANUP_EXPORT_IMAGE;
} = createAction(ActionTypes.CLEANUP_EXPORT_IMAGE);
/** SET_EXPORT_SELECTED_DATASET */
export type SetExportSelectedDatasetUpdaterAction = {
payload: string;
};
/**
* Set selected dataset for export
* @memberof uiStateActions
* @param datasetId - dataset id
* @public
*/
export const setExportSelectedDataset: (
datasetId: SetExportSelectedDatasetUpdaterAction['payload']
) => Merge<
SetExportSelectedDatasetUpdaterAction,
{type: typeof ActionTypes.SET_EXPORT_SELECTED_DATASET}
> = createAction(
ActionTypes.SET_EXPORT_SELECTED_DATASET,
(datasetId: SetExportSelectedDatasetUpdaterAction['payload']) => ({payload: datasetId})
);
/** SET_EXPORT_DATA_TYPE */
export type SetExportDataTypeUpdaterAction = {
payload: string;
};
/**
* Set data format for exporting data
* @memberof uiStateActions
* @param dataType - one of `'text/csv'`
* @public
*/
export const setExportDataType: (
dataType: SetExportDataTypeUpdaterAction['payload']
) => Merge =
createAction(
ActionTypes.SET_EXPORT_DATA_TYPE,
(dataType: SetExportDataTypeUpdaterAction['payload']) => ({payload: dataType})
);
/** SET_EXPORT_FILTERED */
export type SetExportFilteredUpdaterAction = {
payload: boolean;
};
/**
* Whether to export filtered data, `true` or `false`
* @memberof uiStateActions
* @param payload - set `true` to ony export filtered data
* @public
*/
export const setExportFiltered: (
exportFiltered: SetExportFilteredUpdaterAction['payload']
) => Merge =
createAction(
ActionTypes.SET_EXPORT_FILTERED,
(payload: SetExportFilteredUpdaterAction['payload']) => ({payload})
);
/**
* Whether to including data in map config, toggle between `true` or `false`
* @memberof uiStateActions
* @public
*/
export const setExportData: () => {type: typeof ActionTypes.SET_EXPORT_DATA} = createAction(
ActionTypes.SET_EXPORT_DATA
);
/** SET_USER_MAPBOX_ACCESS_TOKEN */
export type SetUserMapboxAccessTokenUpdaterAction = {
payload: string;
};
/**
* Whether we export a mapbox access token used to create a single map html file
* @memberof uiStateActions
* @param payload - mapbox access token
* @public
*/
export const setUserMapboxAccessToken: (
payload: SetUserMapboxAccessTokenUpdaterAction['payload']
) => Merge<
SetUserMapboxAccessTokenUpdaterAction,
{type: typeof ActionTypes.SET_USER_MAPBOX_ACCESS_TOKEN}
> = createAction(
ActionTypes.SET_USER_MAPBOX_ACCESS_TOKEN,
(payload: SetUserMapboxAccessTokenUpdaterAction['payload']) => ({payload})
);
/** SET_EXPORT_MAP_FORMAT */
export type SetExportMapFormatUpdaterAction = {
payload: string;
};
/**
* Set the export map format (html, json)
* @memberOf uiStateActions
* @param payload - map format
* @public
*/
export const setExportMapFormat: (
mapFormat: SetExportMapFormatUpdaterAction['payload']
) => Merge =
createAction(
ActionTypes.SET_EXPORT_MAP_FORMAT,
(payload: SetExportMapFormatUpdaterAction['payload']) => ({payload})
);
/** SET_EXPORT_MAP_HTML_MODE */
export type SetExportHTMLMapModeUpdaterAction = {
payload: string;
};
/**
* Set the HTML mode to use to export HTML mode
* @memberOf uiStateActions
* @param payload - map mode
*/
export const setExportHTMLMapMode: (
mode: SetExportHTMLMapModeUpdaterAction['payload']
) => Merge =
createAction(
ActionTypes.SET_EXPORT_MAP_HTML_MODE,
(payload: SetExportHTMLMapModeUpdaterAction['payload']) => ({payload})
);
/** SET_LOCALE */
export type SetLocaleUpdaterAction = {
payload: {locale: string};
};
/**
* Set `locale` value
* @memberof uiStateActions
* @param locale - locale of the UI
* @public
*/
export const setLocale: (
locale: SetLocaleUpdaterAction['payload']['locale']
) => Merge = createAction(
ActionTypes.SET_LOCALE,
(locale: SetLocaleUpdaterAction['payload']['locale']) => ({
payload: {
locale
}
})
);
/** TOGGLE_PANEL_LIST_VIEW */
export type TogglePanelListViewAction = {
payload: {
panelId: string;
listView: string;
};
};
/**
* Toggle layer panel list view
* @memberof uiStateActions
* @param payload
* @param payload.panelId panel id.
* @param payload.listView layer panel listView value. Can be 'list' or 'sortByDataset'
* @public
*/
export const togglePanelListView: (
payload: TogglePanelListViewAction['payload']
) => Merge =
createAction(
ActionTypes.TOGGLE_PANEL_LIST_VIEW,
(payload: TogglePanelListViewAction['payload']) => ({payload})
);
/**
* This declaration is needed to group actions in docs
*/
/**
* Actions handled mostly by `uiState` reducer.
* They manage UI changes in tha app, such as open and close side panel,
* switch between tabs in the side panel, open and close modal dialog for exporting data / images etc.
* It also manges which settings are selected during image and map export
*
* @public
*/
/* eslint-disable @typescript-eslint/no-unused-vars */
// @ts-ignore
const uiStateActions = null;
/* eslint-enable @typescript-eslint/no-unused-vars */
================================================
FILE: src/actions/src/vis-state-actions.ts
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
// vis-state-reducer
import {PickInfo} from '@deck.gl/core/lib/deck';
import {default as ActionTypes} from './action-types';
import {FileCacheItem} from '@kepler.gl/processors';
import {Layer, LayerBaseConfig} from '@kepler.gl/layers';
import {KeplerTable} from '@kepler.gl/table';
import {
AddDataToMapPayload,
ValueOf,
Merge,
RGBColor,
NestedPartial,
LayerVisConfig,
ColorUI,
Feature,
FeatureSelectionContext,
InteractionConfig,
Filter,
ParsedConfig,
ParsedLayer,
EffectPropsPartial,
SyncTimelineMode,
AnimationConfig,
FilterAnimationConfig
} from '@kepler.gl/types';
import {createAction} from '@reduxjs/toolkit';
// TODO - import LoaderObject type from @loaders.gl/core when supported
// TODO - import LoadOptions type from @loaders.gl/core when supported
export type ApplyLayerConfigUpdaterAction = {
oldLayerId: string;
newLayerConfig: ParsedLayer;
layerIndex?: number;
};
/**
* Update layer base config: dataId, label, column, isVisible
* @param oldLayerId - layer id to be updated
* @param newLayerConfig - new layer config
* @param layerIndex - (Optional) Index of the layer to be updated (can be useful in some cases, because
* the layer id might change during update, e.g. when the type of the layer changes)
* @returns action
* @public
*/
export function applyLayerConfig(
oldLayerId: string,
newLayerConfig: ParsedLayer,
layerIndex?: number
): Merge {
return {
type: ActionTypes.APPLY_LAYER_CONFIG,
oldLayerId,
newLayerConfig,
layerIndex
};
}
export type LayerConfigChangeUpdaterAction = {
oldLayer: Layer;
newConfig: Partial;
};
/**
* Update layer base config: dataId, label, column, isVisible
* @param oldLayer - layer to be updated
* @param newConfig - new config to be merged with old config
* @returns action
* @public
*/
export function layerConfigChange(
oldLayer: Layer,
newConfig: Partial
): Merge {
return {
type: ActionTypes.LAYER_CONFIG_CHANGE,
oldLayer,
newConfig
};
}
export type LayerToggleVisibilityUpdaterAction = {
layerId: string;
isVisible: boolean;
splitMapId?: string;
};
/**
* Update layer visibility depends on splitMap single or dual
* @param layerId - layerId to be updated
* @param isVisible - whether this layer is visible globally
* @param splitMapId - id for this splitMap
* @returns action
* @public
*/
export function layerToggleVisibility(
layerId: string,
isVisible: boolean,
splitMapId?: string
): Merge {
return {
type: ActionTypes.LAYER_TOGGLE_VISIBILITY,
layerId,
isVisible,
splitMapId
};
}
export type LayerTextLabelChangeUpdaterAction = {
oldLayer: Layer;
idx: number | 'all';
prop: string;
value: any;
};
/**
* Update layer text label
* @param oldLayer - layer to be updated
* @param idx -`idx` of text label to be updated
* @param prop - `prop` of text label, e,g, `anchor`, `alignment`, `color`, `size`, `field`, `outlineWidth`, `outlineColor`
* @param value - new value
* @returns action
* @public
*/
export function layerTextLabelChange(
oldLayer: Layer,
idx: number | 'all',
prop: string,
value: any
): Merge {
return {
type: ActionTypes.LAYER_TEXT_LABEL_CHANGE,
oldLayer,
idx,
prop,
value
};
}
export type LayerSetIsValidUpdaterAction = {
oldLayer: Layer;
isValid: boolean;
};
/**
* Changes value of isValid flag for a layer.
* The action also updates visibility of the layer based on isValid.
* @param oldLayer - layer to be updated
* @param isValid - new value for isValid flag
* @returns action
* @public
*/
export function layerSetIsValid(
oldLayer: Layer,
isValid: boolean
): Merge {
return {
type: ActionTypes.LAYER_SET_IS_VALID,
oldLayer,
isValid
};
}
export type LayerTypeChangeUpdaterAction = {
oldLayer: Layer;
newType: string;
};
/**
* Update layer type. Previews layer config will be copied if applicable.
* @param oldLayer - layer to be updated
* @param newType - new type
* @returns action
* @public
*/
export function layerTypeChange(
oldLayer: Layer,
newType: string
): Merge {
return {
type: ActionTypes.LAYER_TYPE_CHANGE,
oldLayer,
newType
};
}
export type LayerVisualChannelConfigChangeUpdaterAction = {
oldLayer: Layer;
newConfig: Partial;
channel: string;
newVisConfig?: Partial;
};
/**
* Update layer visual channel
* @memberof visStateActions
* @param oldLayer - layer to be updated
* @param newConfig - new visual channel config
* @param channel - channel to be updated
* @returns action
* @public
*/
export function layerVisualChannelConfigChange(
oldLayer: Layer,
newConfig: Partial,
channel: string,
newVisConfig?: Partial
): Merge<
LayerVisualChannelConfigChangeUpdaterAction,
{type: typeof ActionTypes.LAYER_VISUAL_CHANNEL_CHANGE}
> {
return {
type: ActionTypes.LAYER_VISUAL_CHANNEL_CHANGE,
oldLayer,
newConfig,
channel,
newVisConfig
};
}
export type LayerVisConfigChangeUpdaterAction = {
oldLayer: Layer;
newVisConfig: Partial;
};
/**
* Update layer `visConfig`
* @memberof visStateActions
* @param oldLayer - layer to be updated
* @param newVisConfig - new visConfig as a key value map: e.g. `{opacity: 0.8}`
* @returns action
* @public
*/
export function layerVisConfigChange(
oldLayer: Layer,
newVisConfig: Partial
): Merge {
return {
type: ActionTypes.LAYER_VIS_CONFIG_CHANGE,
oldLayer,
newVisConfig
};
}
export type LayerColorUIChangeUpdaterAction = {
oldLayer: Layer;
prop: string;
newConfig: NestedPartial;
};
/**
* Set the color palette ui for layer color
* @memberof visStateActions
* @param oldLayer - layer to be updated
* @param prop - which color prop
* @param newConfig - to be merged
* @returns action
* @public
*/
export function layerColorUIChange(
oldLayer: Layer,
prop: string,
newConfig: NestedPartial
): Merge {
return {
type: ActionTypes.LAYER_COLOR_UI_CHANGE,
oldLayer,
prop,
newConfig
};
}
export type UpdateLayerBlendingUpdaterAction = {
mode: 'additive' | 'normal' | 'subtractive';
};
/**
* Update layer blending mode
* @memberof visStateActions
* @param mode one of `additive`, `normal` and `subtractive`
* @returns action
* @public
*/
export function updateLayerBlending(
mode: 'additive' | 'normal' | 'subtractive'
): Merge {
return {
type: ActionTypes.UPDATE_LAYER_BLENDING,
mode
};
}
export type UpdateOverlayBlendingUpdaterAction = {
mode: 'screen' | 'normal' | 'darken';
};
/**
* Update overlay blending mode
* @memberof visStateActions
* @param mode one of `screen`, `normal` and `darken`
* @returns action
* @public
*/
export function updateOverlayBlending(
mode: 'screen' | 'normal' | 'darken'
): Merge {
return {
type: ActionTypes.UPDATE_OVERLAY_BLENDING,
mode
};
}
export type InteractionConfigChangeUpdaterAction = {
config: ValueOf;
};
/**
* Update `interactionConfig`
* @memberof visStateActions
* @param config - new config as key value map: `{tooltip: {enabled: true}}`
* @returns action
* @public
*/
export function interactionConfigChange(
config: ValueOf
): Merge<
InteractionConfigChangeUpdaterAction,
{type: typeof ActionTypes.INTERACTION_CONFIG_CHANGE}
> {
return {
type: ActionTypes.INTERACTION_CONFIG_CHANGE,
config
};
}
export type ApplyFilterConfigUpdaterAction = {
filterId: string;
newFilter: Filter;
};
/**
* Update filter config
* @param filterId - id of the filter to be updated
* @param newFilter - new filter config
* @returns action
* @public
*/
export function applyFilterConfig(
filterId: string,
newFilter: Filter
): Merge {
return {
type: ActionTypes.APPLY_FILTER_CONFIG,
filterId,
newFilter
};
}
export type SetFilterUpdaterAction = {
idx: number;
prop: string | string[];
value: any;
valueIndex?: number;
};
/**
* Update filter property
* @memberof visStateActions
* @param idx -`idx` of filter to be updated
* @param prop - `prop` of filter, e,g, `dataId`, `name`, `value`
* or an array e.g. ['idx', 'name']. in that case the value
* should also be an array of the corresponding values (by index)
* @param value - new value
* @param valueIndex - dataId index
* @returns action
* @public
*/
export function setFilter(
idx: number,
prop: string | string[],
value: any,
valueIndex?: number
): Merge {
return {
type: ActionTypes.SET_FILTER,
idx,
prop,
value,
valueIndex
};
}
export type SetFilterAnimationTimeUpdaterAction = {
idx: number;
prop: string;
value: any;
valueIndex?: number;
};
/**
* Same as Update filter
* @memberof visStateActions
* @param idx -`idx` of filter to be updated
* @param prop - `prop` of filter, e,g, `dataId`, `name`, `value`
* @param value - new value
* @param valueIndex - dataId index
* @returns action
* @public
*/
export function setFilterAnimationTime(
idx: number,
prop: string,
value: any,
valueIndex?: number
): Merge<
SetFilterAnimationTimeUpdaterAction,
{type: typeof ActionTypes.SET_FILTER_ANIMATION_TIME}
> {
return {
type: ActionTypes.SET_FILTER_ANIMATION_TIME,
idx,
prop,
value,
valueIndex
};
}
export type SetFilterAnimationWindowUpdaterAction = {
id: string;
animationWindow: string;
};
/**
* Same as Update filter
* @memberof visStateActions
* @public
*/
export function setFilterAnimationWindow({
id,
animationWindow
}: SetFilterAnimationWindowUpdaterAction): Merge<
SetFilterAnimationWindowUpdaterAction,
{type: typeof ActionTypes.SET_FILTER_ANIMATION_WINDOW}
> {
return {
type: ActionTypes.SET_FILTER_ANIMATION_WINDOW,
id,
animationWindow
};
}
export type AddFilterUpdaterAction = {
dataId?: string | string[] | null;
id?: string;
};
/**
* Add a new filter
* @memberof visStateActions
* @param dataId - dataset `id` this new filter is associated with
* @param id - `id` for the new filter
* @returns action
* @public
*/
export function addFilter(
dataId: string | null,
id?: string
): Merge {
return {
type: ActionTypes.ADD_FILTER,
dataId,
id
};
}
export type CreateOrUpdateFilterUpdaterAction = {
id?: string;
dataId?: string | string[];
field?: string | string[];
value?: any;
};
/**
* Create or updates a filter
* @memberof visStateActions
* @param dataId - dataset `id` this new filter is associated with
* @returns action
* @public
*/
export function createOrUpdateFilter(
id?: string,
dataId?: string | string[],
field?: string | string[],
value?: any
): Merge {
return {
type: ActionTypes.CREATE_OR_UPDATE_FILTER,
id,
dataId,
field,
value
};
}
export type AddLayerUpdaterAction = {
config?: object;
datasetId?: string;
};
/**
* Add a new layer
* @memberof visStateActions
* @param config - new layer config
* @param datasetId - dataset id used for creating an empty layer
* @returns action
* @public
*/
export function addLayer(
config?: object,
datasetId?: string
): Merge {
return {
type: ActionTypes.ADD_LAYER,
config,
datasetId
};
}
export type ReorderLayerUpdaterAction = {
order: string[];
};
/**
* Reorder layer, order is an array of layer indexes, index 0 will be the one at the bottom
* @memberof visStateActions
* @param order an array of layer indexes
* @returns action
* @public
* @example
*
* bring `layers[1]` below `layers[0]`, the sequence layers will be rendered is `layers[1].id`, `layers[0].id`, `layers[2].id`, `layers[3].id`.
* `layers[1]` will be at the bottom, `layers[13]` will be at the top.
* this.props.dispatch(reorderLayer([`layers[1].id`, `layers[0].id`, `layers[2].id`, `layers[3].id`]));
*/
export function reorderLayer(
order: string[]
): Merge {
return {
type: ActionTypes.REORDER_LAYER,
order
};
}
export type RemoveFilterUpdaterAction = {
idx: number;
};
/**
* Remove a filter from `visState.filters`, once a filter is removed, data will be re-filtered and layer will be updated
* @memberof visStateActions
* @param idx idx of filter to be removed
* @returns action
* @public
*/
export function removeFilter(
idx: number
): Merge {
return {
type: ActionTypes.REMOVE_FILTER,
idx
};
}
export type RemoveLayerUpdaterAction = {
id: string;
};
/**
* Remove a layer
* @memberof visStateActions
* @param id idx of layer to be removed
* @returns action
* @public
*/
export function removeLayer(
id: string
): Merge {
return {
type: ActionTypes.REMOVE_LAYER,
id
};
}
export type DuplicateLayerUpdaterAction = {
id: string;
};
/**
* Duplicate a layer
* @memberof visStateActions
* @param id id of layer to be duplicated
* @returns action
* @public
*/
export function duplicateLayer(
id: string
): Merge {
return {
type: ActionTypes.DUPLICATE_LAYER,
id
};
}
export type AddEffectUpdaterAction = {
config: EffectPropsPartial;
};
/**
* Add a new effect
* @memberof visStateActions
* @param config - new effect config
* @returns action
* @public
*/
export function addEffect(
config: EffectPropsPartial
): Merge {
return {
type: ActionTypes.ADD_EFFECT,
config
};
}
export type ReorderEffectUpdaterAction = {
order: string[];
};
/**
* Reorder effects
* @memberof visStateActions
* @param order an array of effect ids
* @returns action
* @public
*/
export function reorderEffect(
order: string[]
): Merge {
return {
type: ActionTypes.REORDER_EFFECT,
order
};
}
export type RemoveEffectUpdaterAction = {
id: string;
};
/**
* Remove an effect
* @memberof visStateActions
* @param id idx of the effect to be removed
* @returns action
* @public
*/
export function removeEffect(
id: string
): Merge {
return {
type: ActionTypes.REMOVE_EFFECT,
id
};
}
export type UpdateEffectUpdaterAction = {
id: string;
props: EffectPropsPartial;
};
/**
* Update an effect
* @memberof visStateActions
* @param props idx of the effect to be updated with specified props
* @returns action
* @public
*/
export function updateEffect(
id: string,
props: EffectPropsPartial
): Merge {
return {
type: ActionTypes.UPDATE_EFFECT,
id,
props
};
}
export type RemoveDatasetUpdaterAction = {
dataId: string;
};
/**
* Remove a dataset and all layers, filters, tooltip configs that based on it
* @memberof visStateActions
* @param dataId dataset id
* @returns action
* @public
*/
export function removeDataset(
dataId: string
): Merge {
return {
type: ActionTypes.REMOVE_DATASET,
dataId
};
}
export type ShowDatasetTableUpdaterAction = {
dataId: string;
};
/**
* Display dataset table in a modal
* @memberof visStateActions
* @param dataId dataset id to show in table
* @returns action
* @public
*/
export function showDatasetTable(
dataId: string
): Merge {
return {
type: ActionTypes.SHOW_DATASET_TABLE,
dataId
};
}
export type UpdateDatasetColorUpdater = {
dataId: string;
newColor: RGBColor;
};
/**
* Update dataset color to custom by means of color picker
* @memberof visStateActions
* @param dataId dataset `id` this custom color is associated with
* @param newColor custom color in RGBformat
* @returns action
* @public
*/
export function updateTableColor(
dataId: string,
newColor: RGBColor
): Merge {
return {
type: ActionTypes.UPDATE_TABLE_COLOR,
dataId,
newColor
};
}
export type SortTableColumnUpdaterAction = {
dataId: string;
column: string;
mode?: string;
};
/**
* Sort dataset column, for table display
* @memberof visStateActions
* @param dataId
* @param column
* @param mode
* @returns action
* @public
*/
export function sortTableColumn(
dataId: string,
column: string,
mode?: string
): Merge {
return {
type: ActionTypes.SORT_TABLE_COLUMN,
dataId,
column,
mode
};
}
export type PinTableColumnUpdaterAction = {
dataId: string;
column: string;
};
/**
* Pin dataset column, for table display
* @param dataId
* @param column
* @returns action
* @public
*/
export function pinTableColumn(
dataId: string,
column: string
): Merge {
return {
type: ActionTypes.PIN_TABLE_COLUMN,
dataId,
column
};
}
export type CopyTableColumnUpdaterAction = {
dataId: string;
column: string;
};
/**
* Copy column, for table display
* @param dataId
* @param column
* @returns action
* @public
*/
export function copyTableColumn(
dataId: string,
column: string
): Merge {
return {
type: ActionTypes.COPY_TABLE_COLUMN,
dataId,
column
};
}
export type SetColumnDisplayFormatUpdaterAction = {
dataId: string;
formats: {
[key: string]: string;
};
};
/**
* Set column display format
* @param dataId
* @param formats
* @returns action
* @public
*/
export function setColumnDisplayFormat(
dataId: SetColumnDisplayFormatUpdaterAction['dataId'],
formats: SetColumnDisplayFormatUpdaterAction['formats']
): Merge<
SetColumnDisplayFormatUpdaterAction,
{type: typeof ActionTypes.SET_COLUMN_DISPLAY_FORMAT}
> {
return {
type: ActionTypes.SET_COLUMN_DISPLAY_FORMAT,
dataId,
formats
};
}
export type AddDataToMapUpdaterOptions = {
centerMap?: boolean;
readOnly?: boolean;
keepExistingConfig?: boolean;
};
export type UpdateVisDataUpdaterAction = {
datasets: AddDataToMapPayload['datasets'];
options: AddDataToMapPayload['options'];
config?: ParsedConfig;
};
// * @param dataset.info -info of a dataset
// * @param dataset.info.id - id of this dataset. If config is defined, `id` should matches the `dataId` in config.
// * @param dataset.info.label - A display name of this dataset
// * @param dataset.data - ***required** The data object, in a tabular format with 2 properties `fields` and `rows`
// * @param dataset.data.fields - ***required** Array of fields,
// * @param dataset.data.fields.name - ***required** Name of the field,
// * @param dataset.data.rows - ***required** Array of rows, in a tabular format with `fields` and `rows`
/**
* Add new dataset to `visState`, with option to load a map config along with the datasets
* @memberof visStateActions
* @param datasets - ***required** datasets can be a dataset or an array of datasets
* Each dataset object needs to have `info` and `data` property.
* @param {object} options
* @param options.centerMap `default: true` if `centerMap` is set to `true` kepler.gl will
* place the map view within the data points boundaries
* @param options.readOnly `default: false` if `readOnly` is set to `true`
* the left setting panel will be hidden
* @param config this object will contain the full kepler.gl instance configuration {mapState, mapStyle, visState}
* @returns action
* @public
*/
export function updateVisData(
datasets: AddDataToMapPayload['datasets'],
options: AddDataToMapPayload['options'],
config?: ParsedConfig
): Merge {
return {
type: ActionTypes.UPDATE_VIS_DATA,
datasets,
options,
config
};
}
export type RenameDatasetUpdaterAction = {
dataId: string;
label: string;
};
/**
* Rename an existing dataset in `visState`
* @memberof visStateActions
* @param dataId - ***required** Id of the dataset to update
* @param label - ***required** New name for the dataset
* @returns action
* @public
*/
export function renameDataset(
dataId: string,
label: string
): Merge {
return {
type: ActionTypes.RENAME_DATASET,
dataId,
label
};
}
export type UpdateDatasetPropsUpdaterAction = {
dataId: string;
props: {
label?: string;
color?: RGBColor;
metadata?: Record;
};
};
/**
* Update an existing dataset props in `visState`
* @param dataId - ***required** Id of the dataset to update
* @param props - ***required** New props to update
* @returns action
*/
export function updateDatasetProps(
dataId: string,
props: {
label?: string;
color?: RGBColor;
metadata?: Record;
}
): Merge {
return {
type: ActionTypes.UPDATE_DATASET_PROPS,
dataId,
props
};
}
export type ToggleFilterAnimationUpdaterAction = {
idx: number;
};
/**
* Start and end filter animation
* @memberof visStateActions
* @param {Number} idx of filter
* @returns action
* @public
*/
export function toggleFilterAnimation(
idx: number
): Merge {
return {
type: ActionTypes.TOGGLE_FILTER_ANIMATION,
idx
};
}
export type UpdateFilterAnimationSpeedUpdaterAction = {
idx: number;
speed: number;
};
/**
* Change filter animation speed
* @memberof visStateActions
* @param idx - `idx` of filter
* @param speed - `speed` to change it to. `speed` is a multiplier
* @returns action
* @public
*/
export function updateFilterAnimationSpeed(
idx: number,
speed: number
): Merge<
UpdateFilterAnimationSpeedUpdaterAction,
{type: typeof ActionTypes.UPDATE_FILTER_ANIMATION_SPEED}
> {
return {
type: ActionTypes.UPDATE_FILTER_ANIMATION_SPEED,
idx,
speed
};
}
export type SetAnimationConfigUpdaterAction = {
config: AnimationConfig | FilterAnimationConfig;
};
/**
* Set animation config: works with both layer animation and filter animation
* @param config
* @returns action
*/
export function setAnimationConfig(
config: AnimationConfig | FilterAnimationConfig
): Merge {
return {
type: ActionTypes.SET_ANIMATION_CONFIG,
config
};
}
export type SetLayerAnimationTimeUpdaterAction = {
value: number | null;
};
/**
* Reset animation
* @memberof visStateActions
* @param value - Current value of the slider
* @returns action
* @public
*/
export function setLayerAnimationTime(
value: number
): Merge {
return {
type: ActionTypes.SET_LAYER_ANIMATION_TIME,
value
};
}
export type UpdateLayerAnimationSpeedUpdaterAction = {
speed: number;
};
/**
* update trip layer animation speed
* @memberof visStateActions
* @param speed - `speed` to change it to. `speed` is a multiplier
* @returns action
* @public
*/
export function updateLayerAnimationSpeed(
speed: number
): Merge<
UpdateLayerAnimationSpeedUpdaterAction,
{type: typeof ActionTypes.UPDATE_LAYER_ANIMATION_SPEED}
> {
return {
type: ActionTypes.UPDATE_LAYER_ANIMATION_SPEED,
speed
};
}
export type ToggleLayerAnimationUpdaterAction = void;
/**
* start end end layer animation
* @memberof visStateActions
* @returns action
* @public
*/
export function toggleLayerAnimation(): Merge<
ToggleLayerAnimationUpdaterAction,
{type: typeof ActionTypes.TOGGLE_LAYER_ANIMATION}
> {
return {
type: ActionTypes.TOGGLE_LAYER_ANIMATION
};
}
export type ToggleLayerAnimationControlUpdaterAction = void;
/**
* hide and show layer animation control
* @memberof visStateActions
* @returns action
* @public
*/
export function toggleLayerAnimationControl(): Merge<
ToggleLayerAnimationControlUpdaterAction,
{type: typeof ActionTypes.TOGGLE_LAYER_ANIMATION_CONTROL}
> {
return {
type: ActionTypes.TOGGLE_LAYER_ANIMATION_CONTROL
};
}
export type SetFilterViewUpdaterAction = {
idx: number;
view: Filter['view'];
};
/**
* Show larger time filter at bottom for time playback (apply to time filter only)
* @memberof visStateActions
* @param idx - index of filter to enlarge
* @param view - type of filter view
* @returns action
* @public
*/
export function setFilterView(
idx: number,
view: Filter['view']
): Merge {
return {
type: ActionTypes.SET_FILTER_VIEW,
idx,
view
};
}
export type ToggleFilterFeatureUpdaterAction = {
idx: number;
};
/**
* Show/hide filter feature on map
* @memberof visStateActions
* @param idx - index of filter feature to show/hide
* @return action
*/
export function toggleFilterFeature(
idx: number
): Merge {
return {
type: ActionTypes.TOGGLE_FILTER_FEATURE,
idx
};
}
export type OnLayerHoverUpdaterAction = {
info: PickInfo | null;
mapIndex?: number;
};
/**
* Trigger layer hover event with hovered object
* @memberof visStateActions
* @param info - Object hovered, returned by deck.gl.
* @param mapIndex - Optional property for limiting the display of the `` to the `` the user is interacting with.
* @returns action
* @public
*/
export function onLayerHover(
info: PickInfo | null,
mapIndex?: number
): Merge {
return {
type: ActionTypes.LAYER_HOVER,
info,
mapIndex
};
}
export type OnLayerClickUpdaterAction = {
info: PickInfo | null;
};
/**
* Trigger layer click event with clicked object
* @memberof visStateActions
* @param info - Object clicked, returned by deck.gl
* @returns action
* @public
*/
export function onLayerClick(
info: PickInfo | null
): Merge {
return {
type: ActionTypes.LAYER_CLICK,
info
};
}
export type OnMapClickUpdaterAction = void;
/**
* Trigger map click event, unselect clicked object
* @memberof visStateActions
* @returns action
* @public
*/
export function onMapClick(): Merge {
return {
type: ActionTypes.MAP_CLICK
};
}
export type OnMouseMoveUpdaterAction = {
evt;
};
/**
* Trigger map mouse moveevent, payload would be
* React-map-gl MapLayerMouseEvent
* https://visgl.github.io/react-map-gl/docs/api-reference/types#maplayermouseevent
*
* @memberof visStateActions
* @param evt - MapLayerMouseEvent
* @returns action
* @public
*/
export function onMouseMove(
evt
): Merge {
return {
type: ActionTypes.MOUSE_MOVE,
evt
};
}
export type ToggleLayerForMapUpdaterAction = {
mapIndex: number;
layerId: string;
};
/**
* Toggle visibility of a layer in a split map
* @memberof visStateActions
* @param mapIndex - index of the split map
* @param layerId - id of the layer
* @returns action
* @public
*/
export function toggleLayerForMap(
mapIndex: number,
layerId: string
): Merge {
return {
type: ActionTypes.TOGGLE_LAYER_FOR_MAP,
mapIndex,
layerId
};
}
type FilterPlotNewProp = {
yAxis?: null | Record;
plotType?: {type: string};
};
export type SetFilterPlotUpdaterAction = {
idx: number;
newProp: FilterPlotNewProp;
valueIndex?: number;
};
/**
* Set the property of a filter plot
* @memberof visStateActions
* @param idx
* @param newProp key value mapping of new prop `{yAxis: 'histogram'}`
* @param valueIndex dataId index
* @returns action
* @public
*/
export function setFilterPlot(
idx: number,
newProp: FilterPlotNewProp,
valueIndex?: number
): Merge {
return {
type: ActionTypes.SET_FILTER_PLOT,
idx,
newProp,
valueIndex
};
}
export type SetMapInfoUpdaterAction = {
info: any;
};
/**
* Set the property of a filter plot
* @memberof visStateActions
* @param info
* @returns action
* @public
*/
export function setMapInfo(
info: any
): Merge {
return {
type: ActionTypes.SET_MAP_INFO,
info
};
}
export type LoadFilesUpdaterAction = {
files: File[];
onFinish?(result: any): any;
};
/**
* Trigger file loading dispatch `addDataToMap` if succeed, or `loadFilesErr` if failed
* @memberof visStateActions
* @param files array of fileblob
* @returns action
* @public
*/
export function loadFiles(
files: File[],
onFinish?: (result: any) => any
): Merge {
return {
type: ActionTypes.LOAD_FILES,
files,
onFinish
};
}
/**
* Called with next file to load
* @memberof visStateActions
* @returns action
* @public
*/
export function loadNextFile(): {type: typeof ActionTypes.LOAD_NEXT_FILE} {
return {
type: ActionTypes.LOAD_NEXT_FILE
};
}
export type loadFilesSuccessUpdaterAction = {
result: FileCacheItem[];
};
/**
* called when all files are processed and loaded
* @memberof visStateActions
* @param result
* @returns action
*/
export function loadFilesSuccess(
result: FileCacheItem[]
): Merge {
return {
type: ActionTypes.LOAD_FILES_SUCCESS,
result
};
}
export type LoadFileStepSuccessAction = {
fileName: string;
fileCache: FileCacheItem[];
};
/**
* called when successfully loaded one file, ready to move on to the next one
* @memberof visStateActions
* @param result
* @returns action
*/
export function loadFileStepSuccess({
fileName,
fileCache
}: {
fileName: string;
fileCache: FileCacheItem[];
}): Merge {
return {
type: ActionTypes.LOAD_FILE_STEP_SUCCESS,
fileName,
fileCache
};
}
export type LoadFilesErrUpdaterAction = {
fileName: string;
error: any;
};
/**
* Trigger loading file error
* @memberof visStateActions
* @param error
* @returns action
* @public
*/
export function loadFilesErr(
fileName: string,
error: any
): Merge {
return {
type: ActionTypes.LOAD_FILES_ERR,
fileName,
error
};
}
export type SetFeaturesUpdaterAction = {
features: Feature[];
};
/**
* Store features to state
* @memberof visStateActions
* @param features
* @returns action
*/
export function setFeatures(
features: Feature[]
): Merge {
return {
type: ActionTypes.SET_FEATURES,
features
};
}
export type SetPolygonFilterLayerUpdaterAction = {
layer: Layer;
feature: Feature;
};
/**
* It will apply the provide feature as filter to the given layer.
* If the given feature is already applied as filter to the layer, it will remove the layer from the filter
* @memberof visStateActions
* @param layer
* @param feature
* @returns action
*/
export function setPolygonFilterLayer(
layer: Layer,
feature: Feature
): Merge {
return {
type: ActionTypes.SET_POLYGON_FILTER_LAYER,
layer,
feature
};
}
export type SetSelectedFeatureUpdaterAction = {
feature: Feature | null;
selectionContext?: FeatureSelectionContext;
};
/**
* Set the current feature to be edited/deleted,
* and the context of how the feature was selected.
* @memberof visStateActions
* @param feature
* @param selectionContext
* @returns action
*/
export function setSelectedFeature(
feature: Feature | null,
selectionContext?: FeatureSelectionContext
): Merge {
return {
type: ActionTypes.SET_SELECTED_FEATURE,
feature,
selectionContext
};
}
export type DeleteFeatureUpdaterAction = {
feature: Feature;
};
/**
* Delete the given feature
* @memberof visStateActions
* @param feature
* @returns action
*/
export function deleteFeature(
feature: Feature
): Merge {
return {
type: ActionTypes.DELETE_FEATURE,
feature
};
}
export type SetEditorModeUpdaterAction = {
mode: string;
};
/** Set the map mode
* @memberof visStateActions
* @param mode one of EDITOR_MODES
* @returns action
* @public
* @example
* import {setMapMode} from '@kepler.gl/actions';
* import {EDITOR_MODES} from '@kepler.gl/constants';
*
* this.props.dispatch(setMapMode(EDITOR_MODES.DRAW_POLYGON));
*/
export function setEditorMode(
mode: string
): Merge {
return {
type: ActionTypes.SET_EDITOR_MODE,
mode
};
}
export type ApplyCPUFilterUpdaterAction = {
dataId: string | string[];
};
/**
* Trigger CPU filter of selected dataset
* @memberof visStateActions
* @param dataId - single dataId or an array of dataIds
* @returns action
* @public
*/
export function applyCPUFilter(
dataId: string | string[]
): Merge {
return {
type: ActionTypes.APPLY_CPU_FILTER,
dataId
};
}
export type ToggleEditorVisibilityUpdaterAction = void;
/**
* Toggle editor layer visibility
* @memberof visStateActions
* @return action
*/
export function toggleEditorVisibility(): Merge<
ToggleEditorVisibilityUpdaterAction,
{type: typeof ActionTypes.TOGGLE_EDITOR_VISIBILITY}
> {
return {
type: ActionTypes.TOGGLE_EDITOR_VISIBILITY
};
}
type FileContent = {
fileName: string;
header: string[];
data: any;
};
export type NextFileBatchUpdaterAction = {
payload: {
/* eslint-disable no-undef */
gen: AsyncGenerator;
fileName: string;
progress?: any;
accumulated?: any;
onFinish: (result: any) => any;
};
};
/**
* Process the next file batch
* @memberof visStateActions
* @param payload - batch payload
* @return action
*/
export function nextFileBatch(
payload: NextFileBatchUpdaterAction['payload']
): Merge {
return {
type: ActionTypes.NEXT_FILE_BATCH,
payload
};
}
export type ProcessFileContentUpdaterAction = {
payload: {
content: FileContent;
fileCache: FileCacheItem[];
};
};
/**
* Process the file content
* @memberof visStateActions
* @param payload - the file content
* @return action
*/
export function processFileContent(
payload: ProcessFileContentUpdaterAction['payload']
): Merge {
return {
type: ActionTypes.PROCESS_FILE_CONTENT,
payload
};
}
export type SetLayerAnimationTimeConfigAction = {
config: {
timezone?: string;
timeFormat?: string;
};
};
/**
* Set layer animation time format and timezone
* @memberof visStateActions
* @param config - {timeFormat: string, timezone: string}
* @return action
*/
export function setLayerAnimationTimeConfig(
config: SetLayerAnimationTimeConfigAction['config']
): Merge<
SetLayerAnimationTimeConfigAction,
{type: typeof ActionTypes.SET_LAYER_ANIMATION_TIME_CONFIG}
> {
return {
type: ActionTypes.SET_LAYER_ANIMATION_TIME_CONFIG,
config
};
}
export type SetFilterAnimationTimeConfigAction = {
idx: number;
config: {
timezone?: string;
timeFormat?: string;
};
};
/**
* Set Filter animation time format and timezone
* @memberof visStateActions
* @param idx
* @param config
* @return action
*/
export function setFilterAnimationTimeConfig(
idx: SetFilterAnimationTimeConfigAction['idx'],
config: SetFilterAnimationTimeConfigAction['config']
): Merge<
SetFilterAnimationTimeConfigAction,
{type: typeof ActionTypes.SET_FILTER_ANIMATION_TIME_CONFIG}
> {
return {
type: ActionTypes.SET_FILTER_ANIMATION_TIME_CONFIG,
idx,
config
};
}
export type LayerFilteredItemsChangeAction = {
event: {
id: string;
count: number;
};
layer: Layer;
};
/**
* deck.gl layer gpu filter callback
* @memberof visStateActions
* @param layer
* @param event
* @return action
*/
export function layerFilteredItemsChange(
layer: LayerFilteredItemsChangeAction['layer'],
event: LayerFilteredItemsChangeAction['event']
): Merge {
return {
type: ActionTypes.LAYER_FILTERED_ITEMS_CHANGE,
layer,
event
};
}
export type WMSFeatureInfoAction = {
layer: Layer;
featureInfo: Array<{name: string; value: string}> | string | null;
coordinate?: [number, number] | null;
};
/**
* WMS layer feature info callback
* @memberof visStateActions
* @param layer
* @param featureInfo
* @param coordinate
* @return action
*/
export function wmsFeatureInfo(
layer: WMSFeatureInfoAction['layer'],
featureInfo: WMSFeatureInfoAction['featureInfo'],
coordinate?: WMSFeatureInfoAction['coordinate']
): Merge {
return {
type: ActionTypes.WMS_FEATURE_INFO,
layer,
featureInfo,
coordinate
};
}
export type SyncTimeFilterWithLayerTimelineAction = {
idx: number;
enable: boolean;
};
/**
* Sync time filter with layer timeline
* @memberof visStateActions
* @param idx
* @param enable
* @return action
*/
export function syncTimeFilterWithLayerTimeline(
idx: SyncTimeFilterWithLayerTimelineAction['idx'],
enable: SyncTimeFilterWithLayerTimelineAction['enable']
): Merge<
SyncTimeFilterWithLayerTimelineAction,
{type: typeof ActionTypes.SYNC_TIME_FILTER_WITH_LAYER_TIMELINE}
> {
return {
type: ActionTypes.SYNC_TIME_FILTER_WITH_LAYER_TIMELINE,
idx,
enable
};
}
export type setTimeFilterSyncTimelineModeAction = {
id: string;
mode: SyncTimelineMode;
};
/**
* Set time filter sync timeline mode
* @memberof visStateActions
* @param id
* @param mode
* @return action
*/
export function setTimeFilterSyncTimelineMode({
id,
mode
}: setTimeFilterSyncTimelineModeAction): Merge<
setTimeFilterSyncTimelineModeAction,
{type: typeof ActionTypes.SYNC_TIME_FILTER_TIMELINE_MODE}
> {
return {
type: ActionTypes.SYNC_TIME_FILTER_TIMELINE_MODE,
id,
mode
};
}
export type CreateNewDatasetSuccessPayload = {
results: (PromiseFulfilledResult | PromiseRejectedResult)[];
addToMapOptions: AddDataToMapPayload['options'];
};
/**
* Called when a new dataset is created successfully via async table methods
* @memberof visStateActions
* @param payload
* @param payload.results - results of promises.allSettlted
* @returns
*/
export const createNewDatasetSuccess = createAction(
ActionTypes.CREATE_NEW_DATASET_SUCCESS
);
export type SetLoadingIndicatorPayload = {
change: number;
};
/**
* Change of number of active loading items, used to render loading indicator.
* @memberof visStateActions
* @param payload
* @param payload.change Change of number of active loading actions.
* @public
*/
export const setLoadingIndicator = createAction(
ActionTypes.SET_LOADING_INDICATOR
);
/**
* This declaration is needed to group actions in docs
*/
/**
* Actions handled mostly by `visState` reducer.
* They manage how data is processed, filtered and displayed on the map by operates on layers,
* filters and interaction settings.
*
* @public
*/
/* eslint-disable @typescript-eslint/no-unused-vars */
// @ts-ignore
const visStateActions = null;
/* eslint-enable @typescript-eslint/no-unused-vars */
================================================
FILE: src/actions/tsconfig.production.json
================================================
{
"compilerOptions": {
"target": "es2020",
"allowJs": false,
"checkJs": false,
"jsx": "react",
"module": "esnext",
"moduleResolution": "node",
"declaration": true,
"emitDeclarationOnly": true,
"noImplicitAny": false,
"noImplicitReturns": true,
"noImplicitThis": true,
"noUnusedLocals": false, //TODO needs to be removed once all isolations are ready
"outDir": "dist",
"sourceMap": true,
"strictNullChecks": true,
"suppressImplicitAnyIndexErrors": false,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"skipLibCheck": true,
"strict": true,
"resolveJsonModule": true,
"isolatedModules": true,
"baseUrl": "./src"
},
"include": ["src"]
}
================================================
FILE: src/ai-assistant/README.md
================================================
# Kepler.gl AI Assistant Module
The AI Assistant is a module that adds an AI chatbot to Kepler.gl. This module aims to integrates Kepler.gl with AI-powered capabilities, enabling it to interact with multiple AI models seamlessly.
## Overview
The system is designed to enable Kepler.gl, a React-based single-page application, to integrate an AI Assistant Module for performing tasks with large language models (LLMs) like OpenAI GPT models, Google Gemini models, Ollama models, etc.

Below is a flow map that shows how a user can update a basemap in Kepler.gl through a simple AI-driven prompt, showcasing the integration of LLMs with application actions and rendering.

The AI Assistant Module also provides a set of tools to support data analysis and visualization. These AI Tools are designed to be used in conjunction with the Kepler.gl application and transform kepler.gl into a powerful spatial data analysis and visualization tool. For more details about the AI Assistant Module, please to https://github.com/geodacenter/openassistant.
## AI Tools
LLMs use these AI Tools to perform spatial data analysis and visualization tasks to help users explore and understand their data.
For example, a user can ask the AI Assistant to simply change the basemap to a `voyager` basemap, and the AI Assistant will call the `basemap` tool to change the basemap.
For complex tasks, the AI Assistant can use multiple tools to perform the task. For example, a user can ask the AI Assistant if the points dataset loaded in kepler.gl is clustering in zipcode areas. The AI Assistant could call the following tools to perform the task:
1. `mapBoundary` to get the boundary of current map view
2. `queryUSZipcode` to get a list of zipcodes using the map boundary
3. `usZipcode` to fetch the geometries of the zipcodes from Github site
4. `saveData` to save the zipcode areas as a new GeoJSON dataset in kepler.gl
5. `spatialJoin` to count the number of points in each zipcode area
6. `saveData` to save the spatialJoin result as a new dataset in kepler.gl
7. `weightsCreation` to create a e.g. queen contiguity weights using the spatialJoin result
8. `local Moran's I` to apply local Moran's I using the counts and the queen contiguity weights
9. `saveData` to save the local Moran's I result as a new dataset in kepler.gl
10. `addLayer` to add the local Moran's I result as a new layer in kepler.gl

These fine grained spatial tools are designed to transform the LLMs, which are fundarmentally statistical language models, into powerful spatial data analysis and visualization AI Agent.
As of May 2025, the AI Assistant Module supports the following AI Tools:
- Kepler.gl Tools
- [basemap](https://github.com/keplergl/kepler.gl/blob/main/src/ai-assistant/src/tools/kepler-tools/basemap-tool.tsx)
- [mapBoundary](https://github.com/keplergl/kepler.gl/blob/main/src/ai-assistant/src/tools/kepler-tools/boundary-tool.tsx)
- [addLayer](https://github.com/keplergl/kepler.gl/blob/main/src/ai-assistant/src/tools/kepler-tools/layer-creation-tool.tsx)
- [updateLayerColor](https://github.com/keplergl/kepler.gl/blob/main/src/ai-assistant/src/tools/kepler-tools/layer-style-tool.tsx)
- [loadData](https://github.com/keplergl/kepler.gl/blob/main/src/ai-assistant/src/tools/kepler-tools/loaddata-tool.tsx)
- [saveData](https://github.com/keplergl/kepler.gl/blob/main/src/ai-assistant/src/tools/kepler-tools/savedata-tool.tsx)
- Plot Tools
- eCharts Plots
- [boxplot](https://github.com/GeoDaCenter/openassistant/blob/main/packages/tools/plots/src/echarts/boxplot/tool.ts)
- [bubbleChart](https://github.com/GeoDaCenter/openassistant/blob/main/packages/tools/plots/src/echarts/bubble-chart/tool.ts)
- [histogram](https://github.com/GeoDaCenter/openassistant/blob/main/packages/tools/plots/src/echarts/histogram/tool.ts)
- [parallel coordinate](https://github.com/GeoDaCenter/openassistant/blob/main/packages/tools/plots/src/echarts/pcp/tool.ts)
- [scatterplot](https://github.com/GeoDaCenter/openassistant/blob/main/packages/tools/plots/src/echarts/scatterplot/tool.ts)
- [Vega-Lite Plots](https://github.com/GeoDaCenter/openassistant/blob/main/packages/tools/plots/src/vegalite/tool.ts) (coming soon)
- Query Tools
- [genericQuery](https://github.com/GeoDaCenter/openassistant/blob/main/packages/tools/duckdb/src/tool.ts)
- [filterDataset](https://github.com/keplergl/kepler.gl/blob/main/src/ai-assistant/src/tools/query-tool.tsx)
- OSM Tools
- [geocoding](https://github.com/GeoDaCenter/openassistant/blob/main/packages/tools/osm/src/geocoding.ts)
- [isochrone](https://github.com/GeoDaCenter/openassistant/blob/main/packages/tools/osm/src/isochrone.ts)
- [routing](https://github.com/GeoDaCenter/openassistant/blob/main/packages/tools/osm/src/routing.ts)
- [roads](https://github.com/GeoDaCenter/openassistant/blob/main/packages/tools/osm/src/roads.ts)
- [US County](https://github.com/GeoDaCenter/openassistant/blob/main/packages/tools/osm/src/us/county.ts)
- [US State](https://github.com/GeoDaCenter/openassistant/blob/main/packages/tools/osm/src/us/state.ts)
- [US Zipcode](https://github.com/GeoDaCenter/openassistant/blob/main/packages/tools/osm/src/us/zipcode.ts)
- [Query US Zipcodes](https://github.com/GeoDaCenter/openassistant/blob/main/packages/tools/osm/src/us/queryZipcode.ts)
- Spatial Analysis Tools (powered by [Geoda](https://geodacenter.github.io/geoda-lib/))
- Geo Tools
- [area](https://github.com/GeoDaCenter/openassistant/blob/main/packages/tools/geoda/src/spatial_ops/area.ts)
- [buffer](https://github.com/GeoDaCenter/openassistant/blob/main/packages/tools/geoda/src/spatial_ops/buffer.ts)
- [centroid](https://github.com/GeoDaCenter/openassistant/blob/main/packages/tools/geoda/src/spatial_ops/centroid.ts)
- [dissolve](https://github.com/GeoDaCenter/openassistant/blob/main/packages/tools/geoda/src/spatial_ops/dissolve.ts)
- [length](https://github.com/GeoDaCenter/openassistant/blob/main/packages/tools/geoda/src/spatial_ops/length.ts)
- [perimeter](https://github.com/GeoDaCenter/openassistant/blob/main/packages/tools/geoda/src/spatial_ops/perimeter.ts)
- Data Tools
- [data classification](https://github.com/GeoDaCenter/openassistant/blob/main/packages/tools/geoda/src/data-classify/tool.ts)
- quantile
- natural Jenks breaks
- equal interval
- percentile
- box
- standard deviation
- unique values
- data by rates (comming soon)
- Spatial Join
- [spatialJoin](https://github.com/GeoDaCenter/openassistant/blob/main/packages/tools/geoda/src/spatial_join/tool.ts)
- [spatialFilter](https://github.com/GeoDaCenter/openassistant/blob/main/packages/tools/geoda/src/spatial_join/spatial-filter.ts)
- Spatial Weights
- [weightsCreation](https://github.com/GeoDaCenter/openassistant/blob/main/packages/tools/geoda/src/weights/tool.ts)
- queen/rook
- k-nearest neighbors
- distance band
- Spatial Autocorrelation
- [global Moran's I](https://github.com/GeoDaCenter/openassistant/blob/main/packages/tools/geoda/src/spatial_autocorrelation/global-moran.ts)
- [local spatial autocorrelation](https://github.com/GeoDaCenter/openassistant/blob/main/packages/tools/geoda/src/lisa/tool.ts)
- local Moran's I
- local Geary's C
- local Getis-Ord Gi\*
- quantile LISA
- [spatial regression](https://github.com/GeoDaCenter/openassistant/blob/main/packages/tools/geoda/src/regression/tool.ts)
- OLS with spatial diagnostics
- Spatial Lag Model
- Spatial Error Model
## Tutorials
Next: [Spatial Data Analysis using Kepler.gl AI Assistant](https://github.com/keplergl/kepler.gl/blob/main/docs/spatial-analysis-tutorial/README.md)
================================================
FILE: src/ai-assistant/babel.config.js
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
const KeplerPackage = require('./package');
const PRESETS = ['@babel/preset-env', '@babel/preset-react', '@babel/preset-typescript'];
const PLUGINS = [
['@babel/plugin-transform-typescript', {isTSX: true, allowDeclareFields: true}],
'@babel/plugin-transform-modules-commonjs',
'@babel/plugin-transform-class-properties',
'@babel/plugin-transform-optional-chaining',
'@babel/plugin-transform-logical-assignment-operators',
'@babel/plugin-transform-nullish-coalescing-operator',
'@babel/plugin-transform-export-namespace-from',
[
'@babel/transform-runtime',
{
regenerator: true
}
],
[
'search-and-replace',
{
rules: [
{
search: '__PACKAGE_VERSION__',
replace: KeplerPackage.version
}
]
}
]
];
const ENV = {
test: {
plugins: ['istanbul']
},
debug: {
sourceMaps: 'inline',
retainLines: true
}
};
module.exports = function babel(api) {
api.cache(true);
return {
presets: PRESETS,
plugins: PLUGINS,
env: ENV
};
};
================================================
FILE: src/ai-assistant/package.json
================================================
{
"name": "@kepler.gl/ai-assistant",
"author": "Xun Li",
"version": "3.2.6",
"description": "kepler.gl AI assistant",
"license": "MIT",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"keywords": [
"babel",
"es6",
"react",
"webgl",
"visualization",
"deck.gl"
],
"repository": {
"type": "git",
"url": "https://github.com/keplergl/kepler.gl.git"
},
"scripts": {
"build": "rm -fr dist && babel src --out-dir dist --source-maps inline --extensions '.ts,.tsx,.js,.jsx' --ignore '**/*.d.ts'",
"build:umd": "NODE_OPTIONS=--openssl-legacy-provider webpack --config ./webpack/umd.js --progress --env.prod",
"build:types": "tsc --project ./tsconfig.production.json",
"prepublishOnly": "babel-node ../../scripts/license-header/bin --license ../../FILE-HEADER && yarn build && yarn build:types",
"stab": "mkdir -p dist && touch dist/index.js"
},
"files": [
"dist",
"umd"
],
"dependencies": {
"@ai-sdk/anthropic": "^1.2.11",
"@ai-sdk/deepseek": "^0.2.14",
"@ai-sdk/google": "^1.2.18",
"@ai-sdk/xai": "^1.2.16",
"@kepler.gl/components": "3.2.6",
"@kepler.gl/constants": "3.2.6",
"@kepler.gl/layers": "3.2.6",
"@kepler.gl/table": "3.2.6",
"@kepler.gl/types": "3.2.6",
"@kepler.gl/utils": "3.2.6",
"@openassistant/core": "^0.5.17",
"@openassistant/duckdb": "^0.5.17",
"@openassistant/echarts": "^0.5.17",
"@openassistant/geoda": "^0.5.17",
"@openassistant/osm": "^0.5.17",
"@openassistant/plots": "^0.5.17",
"@openassistant/tables": "^0.5.17",
"@openassistant/ui": "^0.5.17",
"@openassistant/utils": "^0.5.17",
"color-interpolate": "^1.0.5",
"global": "^4.3.0",
"ollama-ai-provider-v2": "^0.0.5",
"react-intl": "^6.3.0",
"usehooks-ts": "^3.1.0"
},
"nyc": {
"sourceMap": false,
"instrument": false
},
"maintainers": [
"Xun Li "
],
"engines": {
"node": ">=18"
},
"volta": {
"node": "18.18.2",
"yarn": "4.4.0"
},
"packageManager": "yarn@4.4.0"
}
================================================
FILE: src/ai-assistant/src/actions.ts
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {MessageModel} from '@openassistant/core';
import {AiAssistantConfig} from './reducers';
const ACTION_PREFIX = '@@openassistant/';
export const UPDATE_AI_ASSISTANT_CONFIG = `${ACTION_PREFIX}UPDATE_AI_ASSISTANT_CONFIG`;
export const UPDATE_AI_ASSISTANT_MESSAGES = `${ACTION_PREFIX}UPDATE_AI_ASSISTANT_MESSAGES`;
export const SET_START_SCREEN_CAPTURE = `${ACTION_PREFIX}SET_START_SCREEN_CAPTURE`;
export const SET_SCREEN_CAPTURED = `${ACTION_PREFIX}SET_SCREEN_CAPTURED`;
export const SET_MAP_BOUNDARY = `${ACTION_PREFIX}SET_MAP_BOUNDARY`;
// Action creators
export function updateAiAssistantConfig(config: AiAssistantConfig) {
return {
type: UPDATE_AI_ASSISTANT_CONFIG,
payload: config
};
}
export function updateAiAssistantMessages(messages: MessageModel[]) {
return {
type: UPDATE_AI_ASSISTANT_MESSAGES,
payload: messages
};
}
export function setStartScreenCapture(flag: boolean) {
return {
type: SET_START_SCREEN_CAPTURE,
payload: flag
};
}
export function setScreenCaptured(screenshot: string) {
return {
type: SET_SCREEN_CAPTURED,
payload: screenshot
};
}
export function setMapBoundary(nw: [number, number], se: [number, number]) {
return {
type: SET_MAP_BOUNDARY,
payload: {nw, se}
};
}
================================================
FILE: src/ai-assistant/src/components/ai-assistant-component.tsx
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React, {useEffect, useRef, useState} from 'react';
import {useDispatch, useSelector} from 'react-redux';
import styled from 'styled-components';
import {textColorLT, theme} from '@kepler.gl/styles';
import {MessageModel, useAssistant} from '@openassistant/core';
import {AiAssistant} from '@openassistant/ui';
import '@openassistant/echarts/dist/index.css';
import '@openassistant/ui/dist/index.css';
import {setScreenCaptured, setStartScreenCapture, updateAiAssistantMessages} from '../actions';
import {
ASSISTANT_DESCRIPTION,
ASSISTANT_NAME,
ASSISTANT_VERSION,
INSTRUCTIONS,
PROMPT_IDEAS,
WELCOME_MESSAGE
} from '../constants';
import {getDatasetContext} from '../tools/utils';
import {setupLLMTools} from '../tools/tools';
import {State} from './ai-assistant-manager';
const StyledAiAssistantComponent = styled.div`
height: 100%;
padding-bottom: 4px;
* {
font-size: 11px;
}
`;
export function AiAssistantComponent() {
const visState = useSelector((state: State) => state.demo.keplerGl.map.visState);
const aiAssistant = useSelector((state: State) => state.demo.aiAssistant);
const dispatch = useDispatch();
// define LLM functions
const tools = setupLLMTools({visState, aiAssistant, dispatch});
// enable voice and screen capture
const enableVoiceAndScreenCapture =
aiAssistant?.config.provider === 'openai' || aiAssistant?.config.provider === 'google' || false;
// define assistant props
const assistantProps = {
name: ASSISTANT_NAME,
description: ASSISTANT_DESCRIPTION,
version: ASSISTANT_VERSION,
modelProvider: aiAssistant?.config.provider || '',
model: aiAssistant?.config.model || '',
apiKey: aiAssistant?.config.apiKey || '',
baseUrl: aiAssistant?.config.baseUrl || '',
tools
};
const [datasetMetaData, setDatasetMetaData] = useState('');
const [ideas, setIdeas] = useState<{title: string; description: string}[]>([]);
const [restartKey, setRestartKey] = useState(0);
// get dataset meta data and re-initialize assistant when datasets or layers change
useEffect(() => {
const metaData = getDatasetContext(visState?.datasets, visState?.layers || []);
setDatasetMetaData(metaData);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [visState?.datasets, visState?.layers]);
// use dataset meta data in LLM instructions
const instructions = `${INSTRUCTIONS}\n\n${datasetMetaData}`;
// generate ideas from LLM
const {temporaryPrompt, restartChat: libraryRestartChat} = useAssistant({...assistantProps, instructions});
const restartChatRef = useRef(libraryRestartChat);
restartChatRef.current = libraryRestartChat;
const generateIdeas = async () => {
try {
const response = await temporaryPrompt({
prompt: PROMPT_IDEAS,
temperature: 1.0
});
// find [{},{}...] in the text and parse it as json, handling whitespace
const match = response?.match(/\[\s*\{.*\}\s*\]/s);
if (match) {
const json = JSON.parse(match[0]);
setIdeas(json);
}
} catch (error) {
console.error('Error generating ideas', error);
}
};
useEffect(() => {
// get ideas UI component
if (ideas.length === 0 && datasetMetaData.length > 0) {
generateIdeas();
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [datasetMetaData]);
const onRestartAssistant = async () => {
dispatch(updateAiAssistantMessages([]));
try {
await restartChatRef.current();
} catch (e) {
console.error('Error restarting chat:', e);
}
setRestartKey(prev => prev + 1);
};
const onMessagesUpdated = (messages: MessageModel[]) => {
dispatch(updateAiAssistantMessages(messages));
};
const onScreenshotClick = () => {
dispatch(setStartScreenCapture(true));
};
const onRemoveScreenshot = () => {
dispatch(setScreenCaptured(''));
};
return (
);
}
================================================
FILE: src/ai-assistant/src/components/ai-assistant-config.tsx
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React, {useState} from 'react';
import styled from 'styled-components';
import {useSelector, useDispatch} from 'react-redux';
import {
Input,
PanelLabelWrapper,
ItemSelector,
RangeSliderFactory,
Button,
LoadingSpinner,
appInjector,
Checkbox
} from '@kepler.gl/components';
import {State} from '../index';
import ApiKey from '../icons/api-key';
import {PROVIDER_MODELS, PROVIDER_DEFAULT_BASE_URLS} from '../config/models';
import {useLocalStorage} from 'usehooks-ts';
import {GetAssistantModelByProvider} from '@openassistant/core';
import {updateAiAssistantConfig} from '../actions';
import {FormattedMessage, useIntl} from 'react-intl';
const SectionTitle = styled.div`
font-size: ${props => props.theme.inputFontSize};
color: ${props => props.theme.effectPanelTextSecondary1};
text-transform: capitalize;
`;
const StyledAiAssistantConfig = styled.div`
padding: 12px;
font-size: ${props => props.theme.primaryBtnFontSizeDefault};
display: flex;
flex-direction: column;
gap: 12px;
width: 100%;
height: 100%;
.api-key-input {
box-shadow: ${props => props.theme.boxShadow};
width: 100%;
.api-key-input__icon {
position: absolute;
height: ${props => props.theme.geocoderInputHeight}px;
width: 30px;
padding-left: 6px;
display: flex;
align-items: center;
justify-content: center;
color: ${props => props.theme.subtextColor};
}
input {
padding: 4px 36px;
height: ${props => props.theme.geocoderInputHeight}px;
caret-color: unset;
}
}
`;
// Ollama model input wrapper: checkbox + 'Input Model Name:' + input
// all children element have width based on the content
const OllamaModelInputWrapper = styled.div`
display: flex;
flex-direction: row;
gap: 4px;
align-items: center;
`;
const StyledWrapper = styled.div`
display: flex;
justify-content: space-between;
align-items: center;
`;
const StyledItemSelector = styled(ItemSelector)`
.item-selector__dropdown {
padding-left: 10px;
border-radius: 4px;
}
.active {
border-color: ${props => props.theme.activeColor};
border-radius: 4px 4px 0px 0px !important;
}
width: 100%;
`;
const StyleSliderWrapper = styled.div`
width: 100%;
align-self: flex-start;
height: 32px;
display: flex;
align-items: center;
.kg-range-slider__input {
height: 32px;
text-align: center;
padding: 3px 6px;
}
.kg-slider {
padding-left: 6px;
}
.kg-range-slider {
padding: 0px !important;
}
`;
const StyledButton = styled.div`
width: 100%;
align-self: flex-start;
margin-top: 12px;
button div {
display: flex;
align-items: center;
gap: 4px;
margin-right: 4px;
}
`;
const StyleErrorMessage = styled.div`
font-size: ${props => props.theme.primaryBtnFontSizeDefault};
background-color: ${props => props.theme.errorColor};
border-radius: 4px;
padding: 4px 8px;
color: ${props => props.theme.errorTextColor};
`;
const RangeSlider = appInjector.get(RangeSliderFactory);
export function AiAssistantConfig() {
const dispatch = useDispatch();
const aiAssistantConfig = useSelector((state: State) => state.demo.aiAssistant.config);
const intl = useIntl();
const [provider, setProvider] = useLocalStorage(
'ai-assistant-provider',
aiAssistantConfig.provider || 'openai'
);
const [model, setModel] = useLocalStorage(
'ai-assistant-model',
aiAssistantConfig.model || PROVIDER_MODELS[provider][0]
);
const [apiKey, setApiKey] = useLocalStorage(
'ai-assistant-api-key',
aiAssistantConfig.apiKey || ''
);
const [temperature, setTemperature] = useLocalStorage(
'ai-assistant-temperature',
aiAssistantConfig.temperature || 0.0
);
const [topP, setTopP] = useLocalStorage('ai-assistant-top-p', aiAssistantConfig.topP || 1.0);
const [baseUrl, setBaseUrl] = useLocalStorage(
'ai-assistant-base-url',
aiAssistantConfig.baseUrl || PROVIDER_DEFAULT_BASE_URLS[provider]
);
const [mapboxToken, setMapboxToken] = useLocalStorage(
'ai-assistant-mapbox-token',
aiAssistantConfig.mapboxToken || ''
);
const [ollamaModelInputChecked, setOllamaModelInputChecked] = useState(false);
const [ollamaModelInputValue, setOllamaModelInputValue] = useState('');
const [connectionError, setConnectionError] = useState(false);
const [errorMessage, setErrorMessage] = useState('');
const [isRunning, setIsRunning] = useState(false);
const onAiProviderSelect = (value: string | number | boolean | object | null) => {
if (typeof value === 'string') {
setProvider(value);
setModel(PROVIDER_MODELS[value][0]);
setBaseUrl(PROVIDER_DEFAULT_BASE_URLS[value]);
setConnectionError(false);
setErrorMessage('');
}
};
const onLLMModelSelect = (value: string | number | boolean | object | null) => {
if (typeof value === 'string') {
setModel(value);
}
};
const onApiKeyChange = (e: React.ChangeEvent) => {
setApiKey(e.target.value);
// reset previous key error if any
setConnectionError(false);
setErrorMessage('');
};
const onTemperatureChange = (value: number[]) => {
setTemperature(value[1]);
};
const onTopPChange = (value: number[]) => {
setTopP(value[1]);
};
const onBaseUrlChange = (e: React.ChangeEvent) => {
setBaseUrl(e.target.value);
setConnectionError(false);
setErrorMessage('');
};
const onMapboxTokenChange = (e: React.ChangeEvent) => {
setMapboxToken(e.target.value);
};
const onOllamaModelInputChecked = (e: React.ChangeEvent) => {
setOllamaModelInputChecked(e.target.checked);
if (!e.target.checked) {
// use model from selector
setModel('');
}
};
const onOllamaModelInputValueChange = (e: React.ChangeEvent) => {
setOllamaModelInputValue(e.target.value);
setModel(e.target.value);
};
const onStartChat = async () => {
setIsRunning(true);
try {
const timeoutPromise = new Promise((_, reject) => {
setTimeout(() => reject(new Error('Connection timeout after 15 seconds')), 15000);
});
const AssistantModel = await GetAssistantModelByProvider({
provider: provider
});
if (!AssistantModel || !AssistantModel.configure || !AssistantModel.testConnection) {
throw new Error('Failed to initialize AI model');
}
// configure model
AssistantModel.configure({
model: model,
baseURL: baseUrl || PROVIDER_DEFAULT_BASE_URLS[provider],
apiKey: apiKey,
temperature: Number(temperature),
topP: Number(topP)
});
const success = (await Promise.race([
AssistantModel.testConnection(apiKey, model),
timeoutPromise
])) as boolean;
const errorMessage = !success
? provider === 'ollama'
? 'Connection failed: maybe invalid Base URL'
: 'Connection failed: maybe invalid API Key or Base URL'
: '';
setConnectionError(!success);
setErrorMessage(errorMessage);
dispatch(
updateAiAssistantConfig({
provider: provider,
model: model,
apiKey: apiKey,
baseUrl: baseUrl || PROVIDER_DEFAULT_BASE_URLS[provider],
isReady: success,
temperature: temperature,
topP: topP,
mapboxToken: mapboxToken
})
);
} catch (error) {
setConnectionError(true);
setErrorMessage(error instanceof Error ? error.message : 'Connection failed');
} finally {
setIsRunning(false);
}
};
return (
op}
displayOption={op => op}
searchable={false}
showArrow={true}
/>
{((provider === 'ollama' && !ollamaModelInputChecked) || provider !== 'ollama') && (
op}
displayOption={op => op}
searchable={false}
showArrow={true}
/>
)}
{provider === 'ollama' && (
)}
{provider !== 'ollama' && (
<>
>
)}
{connectionError && (
{errorMessage}
)}
<>
Mapbox Token (optional for route/isochrone)
>
{isRunning && }
);
}
================================================
FILE: src/ai-assistant/src/components/ai-assistant-manager.tsx
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React, {useCallback, useMemo} from 'react';
import styled from 'styled-components';
import {useSelector, useDispatch} from 'react-redux';
import {IntlProvider} from 'react-intl';
import {flattenMessages} from '@kepler.gl/utils';
import {messages as keplerGlMessages} from '@kepler.gl/localization';
import {MapStyle} from '@kepler.gl/reducers';
import {SidePanelTitleFactory, Icons} from '@kepler.gl/components';
import {VisState} from '@kepler.gl/schemas';
import {AiAssistantState} from '../index';
import {updateAiAssistantConfig} from '../actions';
import {AiAssistantConfig} from './ai-assistant-config';
import {AiAssistantComponent} from './ai-assistant-component';
import {messages} from '../localization';
const StyledAiAssistantPanelContainer = styled.div`
display: flex;
flex-direction: column;
pointer-events: none !important; /* prevent padding from blocking input */
flex-grow: 1;
justify-content: space-between;
overflow: hidden;
height: 100%;
width: 100%;
& > * {
/* all children should allow input */
pointer-events: all;
}
`;
const StyledAiAssistantPanel = styled.div`
top: 0;
background-color: ${props => props.theme.sidePanelBg};
display: flex;
flex-direction: column;
flex-grow: 1;
overflow: hidden;
`;
const StyledAiAssistantPanelHeader = styled.div`
padding: 16px 16px 4px 16px;
border-bottom: 1px solid ${props => props.theme.borderColor};
color: ${props => props.theme.subtextColorActive};
`;
const StyledAiAssistantPanelContent = styled.div`
${props => props.theme.sidePanelScrollBar};
color: ${props => props.theme.subtextColorActive};
padding: 10px 0px 10px 0px;
overflow-y: auto;
display: flex;
flex-direction: column;
height: 100%;
`;
const SidePanelTitle = SidePanelTitleFactory();
export type State = {
demo: {
keplerGl: {
map: {
uiState: {locale: string};
visState: VisState;
mapStyle: MapStyle;
};
};
aiAssistant: AiAssistantState;
};
};
export function AiAssistantPanel() {
const dispatch = useDispatch();
const aiAssistant = useSelector((state: State) => state.demo.aiAssistant);
const locale = useSelector((state: State) => state.demo.keplerGl.map.uiState.locale);
const onConfigButtonClick = useCallback(() => {
if (aiAssistant) {
// set aiAssistant.config.isReady to false so we can render the config component
dispatch(updateAiAssistantConfig({...aiAssistant.config, isReady: false}));
}
}, [aiAssistant, dispatch]);
// combine keplerGlMessages and messages
const combinedMessages = useMemo(() => {
return Object.keys(messages).reduce(
(acc, language) => ({
...acc,
[language]: {
...(messages[language] || {}),
...(keplerGlMessages[language] || {})
}
}),
{}
);
}, []);
return (
{!aiAssistant?.config.isReady ? : }
);
}
================================================
FILE: src/ai-assistant/src/config/models.ts
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
export const PROVIDER_DEFAULT_BASE_URLS = {
"openai": "https://api.openai.com/v1",
"anthropic": "https://api.anthropic.com/v1",
"google": "https://generativelanguage.googleapis.com/v1beta",
"deepseek": "https://api.deepseek.com/v1",
"xai": "https://api.x.ai/v1",
"ollama": "http://localhost:11434/api"
};
export const PROVIDER_MODELS = {
openai: [
'gpt-4.1',
'gpt-4o',
'gpt-4o-mini',
'gpt-4',
'gpt-3.5-turbo',
'o1',
'o1-preview',
'o1-mini'
],
google: [
'gemini-2.5-flash',
'gemini-2.5-pro',
'gemini-2.0-flash',
'gemini-1.5-flash',
'gemini-1.5-pro'
],
deepseek: ['deepseek-chat'],
anthropic: [
'claude-opus-4-1',
'claude-opus-4-0',
'claude-sonnet-4-0',
'claude-3.7-sonnet',
'claude-3.5-sonnet',
'claude-3.5-haiku',
'claude-3-opus',
'claude-3-sonnet',
'claude-3-haiku'
],
xai: ['grok-3', 'grok-3-fast', 'grok-3-mini', 'grok-3-mini-fast'],
ollama: ['qwen3:32b', 'gpt-oss']
};
================================================
FILE: src/ai-assistant/src/constants.ts
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
export const WELCOME_MESSAGE = `Hi, I am Kepler.gl AI Assistant!`;
export const INSTRUCTIONS = `You are a Kepler.gl AI Assistant. You are a helpful assistant that can help users with their spatial analysis tasks.
Please act like an instructor and explain your reasoning in a concise and clear manner:
- Explain the terms in the user's question in a way that is easy to understand
- Explain the tools in a way that is easy to understand
- Explain the steps to achieve the user's goal in a way that is easy to understand
- Explain the results in a way that is easy to understand
Note:
- IMPORTANT: make a plan if tools can be used to answer the question before calling tools
- Add emojis to your responses to make them more engaging
- For tool usage:
1. If parameters are missing, ask the user to provide them
2. If a tool fails:
a. First try to understand and fix the error
b. If the error persists, explain the issue to the user
c. Suggest alternative approaches if available
3. Use the most appropriate tool for each task
4. Chain tool calls when necessary to achieve the desired outcome
5. Please do not run tools in parallel
- For kepler.gl tools:
1. IMPORTANT: use loadData tool to load a dataset from a URL if requested by the user.
1. Do not call addLayer tool after loadData tool or saveToolResults tool, as these tools automatically create a map layer.
2. For addLayer tool: if dataset can not be found, please prompt the user to save the dataset first
3. Do not call saveToolResults after tableTool, as tableTool will automatically save the dataset to kepler.gl
- For any SQL query:
1. IMPORTANT: only use statements, query syntax, data types, expressions, functions, constraints and operators that are supported by DuckDB
2. Only include columns that already exist in the dataset in variableNames. New columns created via SQL expressions should only be referenced in the SQL query.
3. Please use dbTableName in the SQL query to reference the table in the database.
4. Please note that for data security, only first 2 rows of the result will be returned to LLM for reference, and the full result will be returned to the user.
- For dataClassify tool: when classify data into bins using break values, please use the following rules:
a. The lower bound is inclusive, and the upper bound is exclusive for all bins except the last bin, which is inclusive of both bounds.
b. For example, for breaks at [1000, 1100], the classifcation or bins should be:
- b1: values < 1000
- b2: 1000 ≤ values < 1100
- b3: values ≥ 1100
c. If user provides custom breaks, there is no need to call dataClassify tool
- Colocation is a map that shows the co-location of two variables V1 and V2 from a dataset A
1. create a categorical variable for the first variable by other tools, e.g.
a. breaks in quantile/box map/equal interval/natural breaks/percentile/standard deviation/custom breaks
b. clusters in lisa
2. create a categorical variable for the second varaible using the same tool
3. use tableTool to save the two categorical variables in a new dataset B e.g.
a. SELECT ..., CASE WHEN V1 < 0 THEN 1 WHEN V1 >= 5 AND V1 < 10 THEN 2 WHEN V1 >= 10 THEN 3 END AS C1, CASE WHEN V2 < 4 THEN 1 WHEN V2 >= 8 AND V2 < 9 THEN 2 WHEN V2 >= 9 THEN 3 END AS C2;
4. use tableTool to compare the two categorical values from dataset B and save the result in a new dataset C
a. keep the value if they are the same
b. assign -1 if they are different
5. create a unique values for the comparison result with Paired color scheme and assign gray color to value -1
- When a user requests to standardize (or apply a similar transformation to) multiple variables in a dataset, follow this strategy:
1. If the tool only allows standardizing one variable at a time and creates a new dataset for each operation, always use the most recently created dataset (which contains the previously standardized variables) as the input for the next standardization.
2. Repeat this process for each variable to be standardized, so that the final dataset contains all the standardized variables together.
3. Only use the original dataset for the first standardization; for subsequent variables, use the latest dataset that includes all previous results.
4. After all variables are standardized, confirm that the final dataset contains all original columns plus all new standardized columns.
- For data analysis:
1. If new dataset has been generated by tools e.g. bufferTool, centroidTool, getUsCountyTool, getUsZipcodeTool, isochrone, mergeTables, etc.:
a. Save them as a new dataset in kepler.gl first
b. Use the new dataset for spatial analysis
2. For clustering analysis:
a. Always perform a spatial statistical test (e.g., Local Moran's I)
b. Explain the results in context
c. STRICT RULE: Never use datasets generated from previous LISA tools (dataset name with "lisa_" prefix) as input for a new LISA analysis
3. For using road or line dataset in spatial analysis (e.g. local moran, spatial weights, and spatial join):
a. buffer the road by 1 meter first
b. save the buffered road as a new dataset
c. if needed, spatial join by buffered road (left) with points (right)
d. if needed, create a spatial weights using the buffered road
e. apply spatial analysis using the count in the result of spatial join
- For spatial filtering:
1. IMPORTANT: when use spatial filter to filter the points within polygons, please follow the steps:
a. The leftDatasetName should be the points dataset
b. The rightDatasetName should be the polygon dataset
c. Apply the spatial filter tool and save the result (points)
d. Use the filterDataset tool to filter the result where Count > 0
e. Save the result of filterDataset as the final answer
- For datasetName argument:
1. Please use the dataset name or dataset label as the datasetName argument, not the dataset id
`;
export const PROMPT_IDEAS = `Return ONLY a JSON array of 5 ideas based on the tools in current context.
IMPORTANT: please mention tool in a user-friendly title, and use actual field name in the description.
Do not include any other text or explanation.
Randomly pick 5 tools.
Format:
[{
"title": "Data Insight",
"description": "What is the distribution of HR60?"
},
{
"title": "Spatial Analysis",
"description": "Is HR60 spatially clustered?"
},
];
`;
export const ASSISTANT_NAME = 'kepler-gl-ai-assistant';
export const ASSISTANT_DESCRIPTION = 'A Kepler.gl AI Assistant';
export const ASSISTANT_VERSION = '0.0.2';
================================================
FILE: src/ai-assistant/src/icons/ai-star.tsx
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React, {Component} from 'react';
import {Icons} from '@kepler.gl/components';
export default class AiStar extends Component {
static defaultProps = {
height: '16px',
viewBox: '2 2 20 20',
predefinedClassName: 'data-ex-icons-ai-assistant-star'
};
render() {
return (
);
}
}
================================================
FILE: src/ai-assistant/src/icons/api-key.tsx
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React, {Component} from 'react';
import {Icons} from '@kepler.gl/components';
export default class ApiKey extends Component> {
static defaultProps = {
height: '16px',
viewBox: '0 0 24 24',
predefinedClassName: 'data-ex-icons-api-key'
};
render() {
return (
);
}
}
================================================
FILE: src/ai-assistant/src/index.ts
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
export * from './components/ai-assistant-manager';
export * from './components/ai-assistant-config';
export * from './components/ai-assistant-component';
export {default as AiAssistantControlFactory} from './map/ai-assistant-control';
export type {AiAssistantState, AiAssistantConfig} from './reducers';
export {aiAssistantReducer} from './reducers';
export * from './actions';
export * from './localization';
import {keplerGlAiAssistantPlugin} from './plugin';
export {keplerGlAiAssistantPlugin};
================================================
FILE: src/ai-assistant/src/localization.ts
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
// Add english messages here, other languages will use these
// if translations not available for every message
export const messages = {
en: {
tooltip: {
showAiAssistantPanel: 'Show AI Assistant panel',
hideAiAssistantPanel: 'Hide AI Assistant panel'
},
aiAssistantManager: {
title: 'AI Assistant',
aiProvider: 'AI Provider',
llmModel: {
title: 'Select LLM Model'
},
apiKey: {
title: 'API Key',
placeholder: 'Enter your API Key'
},
baseUrl: {
title: 'Base URL',
placeholder: 'Enter Base URL'
},
temperature: {
title: 'Temperature'
},
topP: {
title: 'Top P'
},
startChat: "Let's Chat"
}
},
fi: {
tooltip: {
showAiAssistantPanel: 'Näytä AI-ohjainpaneeli',
hideAiAssistantPanel: 'Piilota AI-ohjainpaneeli'
},
aiAssistantManager: {
title: 'AI-ohjain',
aiProvider: 'AI-toimittaja',
llmModel: {
title: 'Valitse LLM-malli'
},
apiKey: {
title: 'API-avain',
placeholder: 'Syötä API-avain'
},
baseUrl: {
title: 'Base URL',
placeholder: 'Syötä Base URL'
},
temperature: {
title: 'Lämpötila'
},
topP: {
title: 'Top P'
},
startChat: 'Aloita keskustelu'
}
},
ca: {
tooltip: {
showAiAssistantPanel: "Mostrar panell d'IA",
hideAiAssistantPanel: "Ocultar panell d'IA"
},
aiAssistantManager: {
title: 'IA',
aiProvider: "Proveïdor d'IA",
llmModel: {
title: 'Seleccionar model LLM'
},
apiKey: {
title: 'Clau API',
placeholder: 'Introdueix la teva clau API'
},
baseUrl: {
title: 'URL OllamaBase',
placeholder: 'Introdueix URL OllamaBase'
},
temperature: {
title: 'Temperatura'
},
topP: {
title: 'Top P'
},
startChat: 'Començar xat'
}
},
es: {
tooltip: {
showAiAssistantPanel: 'Mostrar panel de IA',
hideAiAssistantPanel: 'Ocultar panel de IA'
},
aiAssistantManager: {
title: 'IA',
aiProvider: 'Proveedor de IA',
llmModel: {
title: 'Seleccionar modelo LLM'
},
apiKey: {
title: 'Clave API',
placeholder: 'Introduce tu clave API'
},
baseUrl: {
title: 'URL OllamaBase',
placeholder: 'Introduce URL OllamaBase'
},
temperature: {
title: 'Temperatura'
},
topP: {
title: 'Top P'
},
startChat: 'Iniciar chat'
}
},
cn: {
tooltip: {
showAiAssistantPanel: '显示 AI 助手面板',
hideAiAssistantPanel: '隐藏 AI 助手面板'
},
aiAssistantManager: {
title: 'AI 助手',
aiProvider: 'AI 提供商',
llmModel: {
title: '选择 LLM 模型'
},
apiKey: {
title: 'API 密钥',
placeholder: '输入你的 API 密钥'
},
baseUrl: {
title: 'OllamaBase 网址',
placeholder: '输入 OllamaBase 网址'
},
temperature: {
title: '温度'
},
topP: {
title: 'Top P'
},
startChat: '开始聊天'
}
},
jp: {
tooltip: {
showAiAssistantPanel: 'AI アシスタントパネルを表示',
hideAiAssistantPanel: 'AI アシスタントパネルを非表示'
},
aiAssistantManager: {
title: 'AI アシスタント',
aiProvider: 'AI プロバイダー',
llmModel: {
title: 'LLM モデルを選択'
},
apiKey: {
title: 'API キー',
placeholder: 'API キーを入力'
},
baseUrl: {
title: 'Base URL',
placeholder: 'Base URL を入力'
},
temperature: {
title: '温度'
},
topP: {
title: 'Top P'
},
startChat: 'チャットを開始'
}
}
};
================================================
FILE: src/ai-assistant/src/map/ai-assistant-control.tsx
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React, {useCallback, ComponentType} from 'react';
import {MapControls} from '@kepler.gl/types';
import AiStar from '../icons/ai-star';
import {MapControlButton, MapControlTooltipFactory} from '@kepler.gl/components';
type AiAssistantControlIcons = {
aiAssistantIcon: ComponentType<{
height?: string;
width?: string;
className?: string;
style?: React.CSSProperties;
}>;
};
/**
* AiAssistantControlProps
* @param mapControls MapControls from kepler.gl
* @param onToggleMapControl (control: string) => void
* @param actionIcons AiAssistantControlIcons
* @returns
*/
export type AiAssistantControlProps = {
mapControls: MapControls;
onToggleMapControl: (control: string) => void;
actionIcons: AiAssistantControlIcons;
};
AiAssistantControlFactory.deps = [MapControlTooltipFactory];
/**
* AiAssistantControlFactory
* @param MapControlTooltip
* @returns
*/
export default function AiAssistantControlFactory(
MapControlTooltip: ReturnType
): React.FC {
const defaultActionIcons = {
aiAssistantIcon: AiStar
};
const AiAssistantControl = ({
mapControls,
onToggleMapControl,
actionIcons = defaultActionIcons
}: AiAssistantControlProps) => {
const onClick = useCallback(
event => {
event.preventDefault();
onToggleMapControl('aiAssistant');
},
[onToggleMapControl]
);
const showControl = mapControls?.aiAssistant?.show;
if (!showControl) {
return null;
}
const active = mapControls?.aiAssistant?.active;
return (
);
};
AiAssistantControl.displayName = 'AiAssistantControl';
return React.memo(AiAssistantControl);
}
================================================
FILE: src/ai-assistant/src/plugin.ts
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
export const keplerGlAiAssistantPlugin = {
name: 'ai-assistant',
async init() {
console.log('kepler.gl AI Assistant Plugin initialized');
}
};
================================================
FILE: src/ai-assistant/src/reducers/index.ts
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {Action, handleActions} from 'redux-actions';
import {
UPDATE_AI_ASSISTANT_CONFIG,
UPDATE_AI_ASSISTANT_MESSAGES,
SET_START_SCREEN_CAPTURE,
SET_SCREEN_CAPTURED,
SET_MAP_BOUNDARY
} from '../actions';
import {MessageModel} from '@openassistant/core';
import {PROVIDER_DEFAULT_BASE_URLS} from '../config/models';
export type AiAssistantConfig = {
isReady: boolean;
provider: string;
model: string;
apiKey: string;
baseUrl?: string;
temperature: number;
topP: number;
mapboxToken?: string;
};
// Initial state for the reducer
const initialConfig: AiAssistantConfig = {
isReady: false,
provider: 'openai',
model: 'gpt-4o',
apiKey: '',
baseUrl: PROVIDER_DEFAULT_BASE_URLS['openai'],
temperature: 0.0,
topP: 1.0
};
export type AiAssistantState = {
config: AiAssistantConfig;
messages: MessageModel[];
screenshotToAsk: {
startScreenCapture: boolean;
screenCaptured: string;
};
keplerGl?: {
mapBoundary?: {
nw: [number, number];
se: [number, number];
};
};
};
const initialState: AiAssistantState = {
config: initialConfig,
messages: [],
screenshotToAsk: {
startScreenCapture: false,
screenCaptured: ''
}
};
export const aiAssistantReducer = handleActions(
{
[UPDATE_AI_ASSISTANT_CONFIG]: updateAiAssistantConfigHandler,
[UPDATE_AI_ASSISTANT_MESSAGES]: updateAiAssistantMessagesHandler,
[SET_START_SCREEN_CAPTURE]: setStartScreenCaptureHandler,
[SET_SCREEN_CAPTURED]: setScreenCapturedHandler,
[SET_MAP_BOUNDARY]: setMapBoundaryHandler
},
initialState
);
function updateAiAssistantConfigHandler(
state: AiAssistantState,
action: Action
) {
return {
...state,
config: {...state.config, ...action.payload}
};
}
function updateAiAssistantMessagesHandler(state: AiAssistantState, action: Action) {
return {
...state,
messages: action.payload
};
}
function setStartScreenCaptureHandler(state: AiAssistantState, action: Action) {
return {
...state,
screenshotToAsk: {startScreenCapture: action.payload, screenCaptured: ''}
};
}
function setScreenCapturedHandler(state: AiAssistantState, action: Action) {
return {
...state,
screenshotToAsk: {...state.screenshotToAsk, screenCaptured: action.payload}
};
}
function setMapBoundaryHandler(
state: AiAssistantState,
action: Action<{nw: [number, number]; se: [number, number]}>
) {
return {
...state,
keplerGl: {
...state.keplerGl,
mapBoundary: action.payload
}
};
}
================================================
FILE: src/ai-assistant/src/tools/echarts-tools.tsx
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {
boxplot,
BoxplotTool,
bubbleChart,
BubbleChartTool,
histogram,
HistogramTool,
pcp,
PCPTool,
scatterplot,
ScatterplotTool
} from '@openassistant/plots';
import {
BoxplotComponent,
BubbleChartComponent,
HistogramPlotComponent,
ParallelCoordinateComponent,
ScatterplotComponent
} from '@openassistant/echarts';
import {layerSetIsValid} from '@kepler.gl/actions';
import {Datasets} from '@kepler.gl/table';
import {Layer} from '@kepler.gl/layers';
import {Dispatch} from 'redux';
import {getValuesFromDataset, highlightRows} from './utils';
export function getEchartsTools(datasets: Datasets, layers: Layer[], dispatch: Dispatch) {
// context for tools
const getValues = async (datasetName: string, variableName: string) => {
const values = getValuesFromDataset(datasets, layers, datasetName, variableName);
return values as number[];
};
const onSelected = (datasetName: string, selectedIndices: number[]) => {
const triggerLayerReRender = (layer: Layer, isValid: boolean) => {
dispatch(layerSetIsValid(layer, isValid));
};
highlightRows(datasets, layers, datasetName, selectedIndices, triggerLayerReRender);
};
// Create the boxplot tool with the getValues implementation
const boxplotTool: BoxplotTool = {
...boxplot,
context: {
...boxplot.context,
getValues,
onSelected
},
component: BoxplotComponent
};
// Create the bubble chart tool with the getValues implementation
const bubbleChartTool: BubbleChartTool = {
...bubbleChart,
context: {
...bubbleChart.context,
getValues,
onSelected
},
component: BubbleChartComponent
};
const histogramTool: HistogramTool = {
...histogram,
context: {
...histogram.context,
getValues,
onSelected
},
component: HistogramPlotComponent
};
const pcpTool: PCPTool = {
...pcp,
context: {
...pcp.context,
getValues,
onSelected
},
component: ParallelCoordinateComponent
};
const scatterplotTool: ScatterplotTool = {
...scatterplot,
context: {
...scatterplot.context,
getValues,
onSelected
},
component: ScatterplotComponent
};
return {
boxplotTool,
bubbleChartTool,
histogramTool,
pcpTool,
scatterplotTool
};
}
================================================
FILE: src/ai-assistant/src/tools/geo-tools.tsx
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import React, {useEffect} from 'react';
import {useDispatch, useSelector} from 'react-redux';
import {
dataClassify,
DataClassifyTool,
spatialWeights,
SpatialWeightsTool,
globalMoran,
GlobalMoranTool,
spatialRegression,
SpatialRegressionTool,
lisa,
LisaTool,
spatialJoin,
SpatialJoinTool,
spatialFilter,
buffer,
BufferTool,
centroid,
CentroidTool,
dissolve,
DissolveTool,
length,
area,
perimeter,
grid,
GridTool,
standardizeVariable,
StandardizeVariableTool,
thiessenPolygons,
ThiessenPolygonsTool,
minimumSpanningTree,
MinimumSpanningTreeTool,
cartogram,
CartogramTool,
rate,
RateTool
} from '@openassistant/geoda';
import {
getUsStateGeojson,
getUsCountyGeojson,
getUsZipcodeGeojson,
queryUSZipcodes,
geocoding,
routing,
isochrone,
IsochroneTool,
RoutingTool,
roads,
GetUsStateGeojsonTool,
GetUsCountyGeojsonTool,
GetUsZipcodeGeojsonTool
} from '@openassistant/osm';
import {
SpatialJoinComponent,
DataTableComponent,
DataTableComponentProps
} from '@openassistant/tables';
import {ToolCache} from '@openassistant/utils';
import {Datasets} from '@kepler.gl/table';
import {Layer} from '@kepler.gl/layers';
import {addDataToMap} from '@kepler.gl/actions';
import {LisaToolComponent} from './lisa-tool';
import {appendColumnsToDataset, getGeometriesFromDataset, getValuesFromDataset} from './utils';
import {AiAssistantState} from '../reducers';
import {State} from '../components/ai-assistant-manager';
export function getGeoTools(
aiAssistant: AiAssistantState,
datasets: Datasets,
layers: Layer[],
layerData: any[]
) {
// tool cache
const toolCache = ToolCache.getInstance();
// context for geo tools
const getValues = async (datasetName: string, variableName: string) => {
const values = getValuesFromDataset(datasets, layers, datasetName, variableName);
return values as number[];
};
const getGeometries = async (datasetName: string) => {
let geoms = getGeometriesFromDataset(datasets, layers, layerData, datasetName);
if (geoms.length === 0) {
// even though the tool dataset should be saved by 'saveDataToMapTool',
// we still try to get the dataset from tool cache, e.g. route, isochrone etc.
const dataset = toolCache.getDataset(datasetName);
// check if dataset is a GeoJSON object
if (dataset && dataset.type === 'geojson') {
geoms = dataset.content.features;
}
}
return geoms;
};
const getMapboxToken = () => {
if (aiAssistant.config.mapboxToken) {
return aiAssistant.config.mapboxToken;
}
throw new Error('Mapbox token is not provided');
};
// onToolCompleted
const onToolCompleted = (toolName: string, result: unknown) => {
toolCache.addDataset(toolName, result);
};
// geo tools
const classifyTool: DataClassifyTool = {
...dataClassify,
context: {getValues}
};
const weightsTool: SpatialWeightsTool = {
...spatialWeights,
context: {getGeometries}
};
const globalMoranTool: GlobalMoranTool = {
...globalMoran,
context: {getValues}
};
const regressionTool: SpatialRegressionTool = {
...spatialRegression,
context: {getValues}
};
const lisaTool: LisaTool = {
...lisa,
context: {getValues},
component: LisaToolComponent
};
const spatialJoinTool: SpatialJoinTool = {
...spatialJoin,
context: {getValues, getGeometries},
onToolCompleted,
component: SpatialJoinComponent
};
const spatialFilterTool = {
...spatialFilter,
context: {getValues, getGeometries},
onToolCompleted,
component: SpatialJoinComponent
};
const routingTool: RoutingTool = {
...routing,
context: {getMapboxToken},
onToolCompleted
};
const isochroneTool: IsochroneTool = {
...isochrone,
context: {getMapboxToken},
onToolCompleted
};
const bufferTool: BufferTool = {
...buffer,
context: {getGeometries},
onToolCompleted
};
const centroidTool: CentroidTool = {
...centroid,
context: {getGeometries},
onToolCompleted
};
const dissolveTool: DissolveTool = {
...dissolve,
context: {
getGeometries,
getValues
},
onToolCompleted
};
const roadsTool = {
...roads,
context: {getGeometries},
onToolCompleted
};
const lengthTool = {
...length,
context: {getGeometries}
};
const areaTool = {
...area,
context: {getGeometries}
};
const perimeterTool = {
...perimeter,
context: {getGeometries}
};
const thiessenPolygonsTool: ThiessenPolygonsTool = {
...thiessenPolygons,
context: {getGeometries},
onToolCompleted
};
const minimumSpanningTreeTool: MinimumSpanningTreeTool = {
...minimumSpanningTree,
context: {getGeometries},
onToolCompleted
};
const cartogramTool: CartogramTool = {
...cartogram,
context: {getGeometries, getValues},
onToolCompleted
};
const gridTool: GridTool = {
...grid,
context: {getGeometries},
onToolCompleted
};
const getUsStateTool: GetUsStateGeojsonTool = {
...getUsStateGeojson,
onToolCompleted
};
const getUsCountyTool: GetUsCountyGeojsonTool = {
...getUsCountyGeojson,
onToolCompleted
};
const getUsZipcodeTool: GetUsZipcodeGeojsonTool = {
...getUsZipcodeGeojson,
onToolCompleted
};
const standardizeVariableTool: StandardizeVariableTool = {
...standardizeVariable,
context: {getValues},
component: CustomDataTableComponent
};
const rateTool: RateTool = {
...rate,
context: {getValues},
component: CustomDataTableComponent
};
return {
classifyTool,
weightsTool,
globalMoranTool,
regressionTool,
lisaTool,
spatialJoinTool,
spatialFilterTool,
gridTool,
bufferTool,
centroidTool,
dissolveTool,
lengthTool,
areaTool,
perimeterTool,
getUsStateTool,
getUsCountyTool,
getUsZipcodeTool,
queryUSZipcodes,
geocoding,
routing: routingTool,
isochrone: isochroneTool,
roads: roadsTool,
standardizeVariable: standardizeVariableTool,
thiessenPolygons: thiessenPolygonsTool,
minimumSpanningTree: minimumSpanningTreeTool,
cartogram: cartogramTool,
rate: rateTool
};
}
/**
* Customize the DataTableComponent for StandardizeVariableTool and RateTool
*/
function CustomDataTableComponent(props: DataTableComponentProps) {
const dispatch = useDispatch();
const datasets = useSelector((state: State) => state.demo.keplerGl.map.visState.datasets);
const layers = useSelector((state: State) => state.demo.keplerGl.map.visState.layers);
const {originalDatasetName, datasetName, saveData} = props;
// get data by datasetName
const dataset = props[datasetName] as {
type: string;
content: Record;
};
const data = dataset?.content;
useEffect(() => {
async function saveStandardizedData() {
// convert column-wise data to a row-wise Record[]
const dataRecord: Record[] = [];
const columnNames = Object.keys(data);
const numberOfRows = data[columnNames[0]].length;
for (let i = 0; i < numberOfRows; i++) {
const row: Record = {};
for (const key of columnNames) {
row[key] = data[key][i];
}
dataRecord.push(row);
}
const processedData = await appendColumnsToDataset(
datasets,
layers,
originalDatasetName,
dataRecord,
datasetName
);
dispatch(
addDataToMap({datasets: processedData, options: {autoCreateLayers: true, centerMap: false}})
);
}
if (saveData) {
saveStandardizedData();
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
return ;
}
================================================
FILE: src/ai-assistant/src/tools/kepler-tools/basemap-tool.tsx
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {DEFAULT_MAP_STYLES} from '@kepler.gl/constants';
import {mapStyleChange} from '@kepler.gl/actions';
import {extendedTool} from '@openassistant/utils';
import {z} from 'zod';
import {useEffect} from 'react';
import {useDispatch} from 'react-redux';
export const basemap = extendedTool({
description: 'change basemap',
parameters: z.object({
styleType: z.enum([
'no_map',
'dark-matter',
'positron',
'voyager',
'satellite',
'dark',
'light',
'muted',
'muted_night'
])
}),
execute: executeBasemap,
component: BasemapToolComponent
});
export type BasemapTool = typeof basemap;
type ExecuteBasemapResult = {
llmResult: {
success: boolean;
styleType: string;
details?: string;
instruction?: string;
};
additionalData?: {
styleType: string;
};
};
async function executeBasemap({styleType}): Promise {
try {
// check if styleType is valid
if (!DEFAULT_MAP_STYLES.find(style => style.id === styleType)) {
throw new Error(`Invalid basemap style: ${styleType}.`);
}
return {
llmResult: {
success: true,
styleType,
details: `basemap style changed to ${styleType}.`
},
additionalData: {
styleType
}
};
} catch (error) {
return {
llmResult: {
success: false,
styleType,
details: `Error changing basemap style: ${error}`,
instruction:
'Try to fix the error. If the error persists, pause the execution and ask the user to try with different prompt and context.'
}
};
}
}
export function BasemapToolComponent({styleType}) {
const dispatch = useDispatch();
useEffect(() => {
dispatch(mapStyleChange(styleType));
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
return null;
}
================================================
FILE: src/ai-assistant/src/tools/kepler-tools/boundary-tool.tsx
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {extendedTool} from '@openassistant/utils';
import {z} from 'zod';
type MapBoundaryContext = {
getMapBoundary: () => {
nw: [number, number];
se: [number, number];
};
};
function isMapBoundaryContext(context: unknown): context is MapBoundaryContext {
return typeof context === 'object' && context !== null && 'getMapBoundary' in context;
}
export const mapBoundary = extendedTool({
description:
'Get the boundary of the map. Northwest and Southeast coordinates in [longitude, latitude] format.',
parameters: z.object({}),
execute: async (args, options) => {
try {
if (!options?.context || !isMapBoundaryContext(options.context)) {
throw new Error('context getMapBoundary() not implemented.');
}
const {getMapBoundary} = options.context;
const boundary = getMapBoundary();
return {
llmResult: {
success: true,
boundary
}
};
} catch (error) {
return {
llmResult: {
success: false,
error: error instanceof Error ? error.message : 'Unknown error',
instruction:
'Please ask the user to make sure the kepler.gl app has been intialized successfully to get the map boundary.'
}
};
}
},
context: {
getMapBoundary: () => {
throw new Error('getMapBoundary() not implemented.');
}
}
});
================================================
FILE: src/ai-assistant/src/tools/kepler-tools/index.ts
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {VisState} from '@kepler.gl/schemas';
import {basemap} from './basemap-tool';
import {addLayer, AddLayerTool} from './layer-creation-tool';
import {updateLayerColor} from './layer-style-tool';
import {loadData, LoadDataTool, LoadDataToolComponent} from './loaddata-tool';
import {mapBoundary} from './boundary-tool';
import {saveToolResults} from './save-data-tool';
import {AiAssistantState} from '../../reducers';
export function getKeplerTools(visState: VisState, aiAssistant: AiAssistantState) {
// context for tools
const getDatasets = () => {
return visState.datasets;
};
const getLayers = () => {
return visState.layers;
};
const getLoaders = () => {
return {
loaders: visState.loaders,
loadOptions: visState.loadOptions
};
};
// tool: addLayer
const addLayerTool: AddLayerTool = {
...addLayer,
context: {
getDatasets
}
};
// tool: updateLayerColor
const updateLayerColorTool = {
...updateLayerColor,
context: {
getLayers
}
};
// tool: loadData
const loadDataTool: LoadDataTool = {
...loadData,
context: {
getLoaders
},
component: LoadDataToolComponent
};
// tool: mapBoundary
const mapBoundaryTool = {
...mapBoundary,
context: {
getMapBoundary: () => {
return aiAssistant.keplerGl?.mapBoundary;
}
}
};
return {
basemap,
addLayer: addLayerTool,
updateLayerColor: updateLayerColorTool,
loadData: loadDataTool,
mapBoundary: mapBoundaryTool,
saveDataToMap: saveToolResults
};
}
================================================
FILE: src/ai-assistant/src/tools/kepler-tools/layer-creation-tool.tsx
================================================
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {useDispatch} from 'react-redux';
import {LayerClasses} from '@kepler.gl/layers';
import KeplerTable, {Datasets} from '@kepler.gl/table';
import {findDefaultLayer} from '@kepler.gl/reducers';
import {addLayer as addLayerAction} from '@kepler.gl/actions';
import {extendedTool, generateId} from '@openassistant/utils';
import {z} from 'zod';
import {useEffect} from 'react';
export const addLayer = extendedTool<
// parameters
z.ZodObject<{
datasetName: z.ZodString;
latitudeColumn: z.ZodOptional;
longitudeColumn: z.ZodOptional